Assembly Diffs

linux arm64

Diffs are based on 2,374,031 contexts (1,007,092 MinOpts, 1,366,939 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 133,287 (5.32%)

Overall (+173,396 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 10,779,100 -652
benchmarks.run_pgo.linux.arm64.checked.mch 67,515,080 +27,512
benchmarks.run_tiered.linux.arm64.checked.mch 23,940,084 -716
coreclr_tests.run.linux.arm64.checked.mch 477,601,936 +179,988
libraries.crossgen2.linux.arm64.checked.mch 55,839,492 -38,600
libraries.pmi.linux.arm64.checked.mch 56,495,516 -14,968
libraries_tests.run.linux.arm64.Release.mch 345,952,264 +38,848
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 131,109,528 -14,148
realworld.run.linux.arm64.checked.mch 11,150,480 -3,396
smoke_tests.nativeaot.linux.arm64.checked.mch 2,568,016 -472

FullOpts (+173,396 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 10,474,172 -652
benchmarks.run_pgo.linux.arm64.checked.mch 41,580,296 +27,512
benchmarks.run_tiered.linux.arm64.checked.mch 4,201,648 -716
coreclr_tests.run.linux.arm64.checked.mch 129,453,784 +179,988
libraries.crossgen2.linux.arm64.checked.mch 55,837,856 -38,600
libraries.pmi.linux.arm64.checked.mch 56,375,532 -14,968
libraries_tests.run.linux.arm64.Release.mch 130,820,312 +38,848
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 117,612,064 -14,148
realworld.run.linux.arm64.checked.mch 10,569,556 -3,396
smoke_tests.nativeaot.linux.arm64.checked.mch 2,567,028 -472

Example diffs

benchmarks.run.linux.arm64.checked.mch

-28 (-46.67%) : 3788.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-31.58%) : 3580.dasm - System.Collections.TryGetValueFalse`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M53474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M53474_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53474_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3, #0x08] - cmp x2, x3 - beq G_M53474_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M53474_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M53474_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M53474_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 435.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+1.40%) : 29435.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,110 +9,109 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> x19 class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T40] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> -; V05 loc4 [V05,T42] ( 2, 2 ) int -> x22 single-def
+; V04 loc3 [V04,T41] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> +; V05 loc4 [V05,T43] ( 2, 2 ) int -> x22 single-def
; V06 loc5 [V06 ] ( 14, 14 ) struct (40) [fp+0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T36] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live -; V08 loc7 [V08,T50] ( 6, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T37] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live +; V08 loc7 [V08,T52] ( 5, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T54] ( 3, 0 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T19] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T20] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T16] ( 5, 5 ) ref -> x21
-; V16 tmp5 [V16,T20] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T21] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T17] ( 5, 5 ) ref -> x20
-; V18 tmp7 [V18,T32] ( 3, 3 ) int -> x22
+; V18 tmp7 [V18,T34] ( 3, 3 ) int -> x22
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T21] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> x4 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> x19 class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T56] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T55] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T58] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T56] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T51] ( 4, 0 ) int -> x0 -; V29 tmp18 [V29,T54] ( 3, 0 ) int -> x0 -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T30] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T29] ( 2, 4 ) int -> x24 "Inlining Arg" -; V47 tmp36 [V47,T22] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T38] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T23] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T47] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> x0 "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> x24 "Inlining Arg" -; V64 tmp53 [V64,T24] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V65 tmp54 [V65,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T25] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T37] ( 3, 2 ) byref -> x23 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T39] ( 3, 2 ) int -> x24 single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T41] ( 2, 2 ) byref -> x23 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T44] ( 2, 2 ) int -> x24 single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T31] ( 3, 3 ) byref -> x1 "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T33] ( 3, 3 ) int -> x2 "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T46] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T26] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V93 tmp82 [V93,T27] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V94 tmp83 [V94,T28] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V95 tmp84 [V95,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V96 tmp85 [V96,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V97 tmp86 [V97,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V98 PSPSym [V98,T48] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T49] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T34] ( 3, 3 ) int -> x0 "CSE - moderate" -; V101 cse2 [V101,T08] ( 7, 7 ) int -> registers multi-def "CSE - aggressive" -; V102 cse3 [V102,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" -; V103 cse4 [V103,T18] ( 4, 4 ) long -> x20 "CSE - moderate" -; V104 cse5 [V104,T35] ( 3, 3 ) int -> x1 "CSE - moderate"
+; V28 tmp17 [V28,T53] ( 4, 0 ) int -> x0 +; V29 tmp18 [V29,T57] ( 3, 0 ) int -> x0 +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T31] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T32] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T30] ( 2, 4 ) int -> x24 "Inlining Arg" +; V45 tmp34 [V45,T23] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T39] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T24] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T49] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> x0 "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T14] ( 3, 6 ) int -> x24 "Inlining Arg" +; V62 tmp51 [V62,T25] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V63 tmp52 [V63,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T26] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V67 tmp56 [V67,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T38] ( 3, 2 ) byref -> x23 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T40] ( 3, 2 ) int -> x24 single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T42] ( 2, 2 ) byref -> x23 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T45] ( 2, 2 ) int -> x24 single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T33] ( 3, 3 ) byref -> x1 "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T35] ( 3, 3 ) int -> x2 "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T47] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T27] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V91 tmp80 [V91,T28] ( 2, 4 ) ref -> x3 single-def "argument with side effect" +; V92 tmp81 [V92,T29] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V93 tmp82 [V93,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V94 tmp83 [V94,T60] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V95 tmp84 [V95,T61] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V96 PSPSym [V96,T50] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T46] ( 2, 2 ) int -> x0 "CSE - moderate" +; V99 cse2 [V99,T18] ( 4, 4 ) int -> x21 "CSE - moderate" +; V100 cse3 [V100,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" +; V101 cse4 [V101,T19] ( 4, 4 ) long -> x20 "CSE - moderate" +; V102 cse5 [V102,T36] ( 3, 3 ) int -> x1 "CSE - moderate" +; V103 rat0 [V103,T07] ( 5, 7.50) ref -> x0 "replacement local"
; ; Lcl frame size = 112 @@ -129,12 +128,12 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { stp q16, q16, [x9, #0x40] str xzr, [x9, #0x60] add x1, sp, #176
- str x1, [fp, #0x78] // [V98 PSPSym]
+ str x1, [fp, #0x78] // [V96 PSPSym]
mov x19, x0 ; gcrRegs +[x19] ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08}
+G_M19825_IG02: ; bbWeight=1, gcVars=0010000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08 V52}
add x2, fp, #104 // [V03 loc2] add x1, fp, #112 // [V02 loc1] mov x0, x19 @@ -170,7 +169,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=800 ;; size=88 bbWeight=1 PerfScore 21.50 G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V01 V08 V52}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -197,15 +196,16 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str x20, [fp, #0x18] // [V01 loc0] ; GC ptr vars +{V01} ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG04: ; bbWeight=1, gcVars=0004000000000080 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0010000000000100 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars +{V08}
ldr x0, [fp, #0x18] // [V01 loc0] ; gcrRegs +[x0] movz x11, #136 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- str x11, [fp, #0x20] // [V102 cse3] - ldr x11, [fp, #0x20] // [V102 cse3]
+ str x11, [fp, #0x20] // [V100 cse3] + ldr x11, [fp, #0x20] // [V100 cse3]
mov w1, #1 ldr x2, [x11] blr x2 @@ -217,7 +217,7 @@ G_M19825_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M19825_IG17
...

+32 (+1.40%) : 26796.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,110 +9,109 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> x19 class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T40] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> -; V05 loc4 [V05,T42] ( 2, 2 ) int -> x22 single-def
+; V04 loc3 [V04,T41] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> +; V05 loc4 [V05,T43] ( 2, 2 ) int -> x22 single-def
; V06 loc5 [V06 ] ( 14, 14 ) struct (40) [fp+0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T36] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live -; V08 loc7 [V08,T50] ( 6, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T37] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live +; V08 loc7 [V08,T52] ( 5, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T54] ( 3, 0 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T19] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T20] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T16] ( 5, 5 ) ref -> x21
-; V16 tmp5 [V16,T20] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T21] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T17] ( 5, 5 ) ref -> x20
-; V18 tmp7 [V18,T32] ( 3, 3 ) int -> x22
+; V18 tmp7 [V18,T34] ( 3, 3 ) int -> x22
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T21] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> x4 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> x19 class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T56] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T55] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T58] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T56] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T51] ( 4, 0 ) int -> x0 -; V29 tmp18 [V29,T54] ( 3, 0 ) int -> x0 -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T30] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T29] ( 2, 4 ) int -> x24 "Inlining Arg" -; V47 tmp36 [V47,T22] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T38] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T23] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T47] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> x0 "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> x24 "Inlining Arg" -; V64 tmp53 [V64,T24] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V65 tmp54 [V65,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T25] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T37] ( 3, 2 ) byref -> x23 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T39] ( 3, 2 ) int -> x24 single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T41] ( 2, 2 ) byref -> x23 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T44] ( 2, 2 ) int -> x24 single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T31] ( 3, 3 ) byref -> x1 "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T33] ( 3, 3 ) int -> x2 "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T46] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T26] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V93 tmp82 [V93,T27] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V94 tmp83 [V94,T28] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V95 tmp84 [V95,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V96 tmp85 [V96,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V97 tmp86 [V97,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V98 PSPSym [V98,T48] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T49] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T34] ( 3, 3 ) int -> x0 "CSE - moderate" -; V101 cse2 [V101,T08] ( 7, 7 ) int -> registers multi-def "CSE - aggressive" -; V102 cse3 [V102,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" -; V103 cse4 [V103,T18] ( 4, 4 ) long -> x20 "CSE - moderate" -; V104 cse5 [V104,T35] ( 3, 3 ) int -> x1 "CSE - moderate"
+; V28 tmp17 [V28,T53] ( 4, 0 ) int -> x0 +; V29 tmp18 [V29,T57] ( 3, 0 ) int -> x0 +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T31] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T32] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T30] ( 2, 4 ) int -> x24 "Inlining Arg" +; V45 tmp34 [V45,T23] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T39] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T24] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T49] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> x0 "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T14] ( 3, 6 ) int -> x24 "Inlining Arg" +; V62 tmp51 [V62,T25] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V63 tmp52 [V63,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T26] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V67 tmp56 [V67,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T38] ( 3, 2 ) byref -> x23 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T40] ( 3, 2 ) int -> x24 single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T42] ( 2, 2 ) byref -> x23 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T45] ( 2, 2 ) int -> x24 single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T33] ( 3, 3 ) byref -> x1 "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T35] ( 3, 3 ) int -> x2 "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T47] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T27] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V91 tmp80 [V91,T28] ( 2, 4 ) ref -> x3 single-def "argument with side effect" +; V92 tmp81 [V92,T29] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V93 tmp82 [V93,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V94 tmp83 [V94,T60] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V95 tmp84 [V95,T61] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V96 PSPSym [V96,T50] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T46] ( 2, 2 ) int -> x0 "CSE - moderate" +; V99 cse2 [V99,T18] ( 4, 4 ) int -> x21 "CSE - moderate" +; V100 cse3 [V100,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" +; V101 cse4 [V101,T19] ( 4, 4 ) long -> x20 "CSE - moderate" +; V102 cse5 [V102,T36] ( 3, 3 ) int -> x1 "CSE - moderate" +; V103 rat0 [V103,T07] ( 5, 7.50) ref -> x0 "replacement local"
; ; Lcl frame size = 112 @@ -129,12 +128,12 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { stp q16, q16, [x9, #0x40] str xzr, [x9, #0x60] add x1, sp, #176
- str x1, [fp, #0x78] // [V98 PSPSym]
+ str x1, [fp, #0x78] // [V96 PSPSym]
mov x19, x0 ; gcrRegs +[x19] ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08}
+G_M19825_IG02: ; bbWeight=1, gcVars=0010000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08 V52}
add x2, fp, #104 // [V03 loc2] add x1, fp, #112 // [V02 loc1] mov x0, x19 @@ -170,7 +169,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=800 ;; size=88 bbWeight=1 PerfScore 21.50 G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V01 V08 V52}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -197,15 +196,16 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str x20, [fp, #0x18] // [V01 loc0] ; GC ptr vars +{V01} ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG04: ; bbWeight=1, gcVars=0004000000000080 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0010000000000100 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars +{V08}
ldr x0, [fp, #0x18] // [V01 loc0] ; gcrRegs +[x0] movz x11, #136 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- str x11, [fp, #0x20] // [V102 cse3] - ldr x11, [fp, #0x20] // [V102 cse3]
+ str x11, [fp, #0x20] // [V100 cse3] + ldr x11, [fp, #0x20] // [V100 cse3]
mov w1, #1 ldr x2, [x11] blr x2 @@ -217,7 +217,7 @@ G_M19825_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M19825_IG17
...

+40 (+4.26%) : 15216.dasm - System.Collections.PerfFrozenDictionaryString:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

@@ -8,60 +8,60 @@ ; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V02 tmp1 [V02,T02] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> +; V03 tmp2 [V03,T20] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V05 tmp4 [V05,T16] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V06 tmp5 [V06,T11] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> +; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp7 [V08,T29] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>> -; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> -; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg" -;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def -; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15 -;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15 -;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg" -; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP -;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP -;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP -;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP -; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP -; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP -; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP -; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive" -; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" -; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate" -; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate" -; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate" -; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"
+; V15 tmp14 [V15,T25] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>> +; V16 tmp15 [V16,T21] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> +; V18 tmp17 [V18,T23] ( 2, 2 ) int -> x20 "Inlining Arg" +;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +; V20 tmp19 [V20,T30] ( 2, 1 ) ref -> x15 +;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def +; V23 tmp22 [V23,T17] ( 4, 2 ) ref -> x15 +;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V32 tmp31 [V32,T13] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V33 tmp32 [V33,T24] ( 2, 2 ) int -> x20 "Inlining Arg" +; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V35 tmp34 [V35,T26] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V36 tmp35 [V36,T12] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP +;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP +;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP +;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP +; V41 tmp40 [V41,T09] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP +; V42 tmp41 [V42,T33] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP +; V43 tmp42 [V43,T31] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP +; V44 tmp43 [V44,T32] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP +; V45 tmp44 [V45,T22] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V46 cse0 [V46,T27] ( 3, 1.50) ref -> x3 "CSE - moderate" +; V47 cse1 [V47,T14] ( 5, 2.50) ref -> x21 "CSE - aggressive" +; V48 cse2 [V48,T15] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" +; V49 cse3 [V49,T18] ( 4, 2 ) ref -> x1 "CSE - moderate" +; V50 cse4 [V50,T28] ( 3, 1.50) int -> x0 "CSE - moderate" +; V51 cse5 [V51,T19] ( 4, 2 ) long -> x19 "CSE - moderate" +; V52 cse6 [V52,T10] ( 7, 3.50) long -> registers multi-def "CSE - moderate" +; V53 rat0 [V53,T01] ( 5, 7.50) ref -> x20 "replacement local"
; ; Lcl frame size = 0 @@ -76,39 +76,53 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] ldr x19, [x0, #0x18] ; gcrRegs +[x19]
- cbz x19, G_M57422_IG15 - ldr x1, [x19] - movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - cmp x1, x20 - bne G_M57422_IG13 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M57422_IG18 + mov x20, x19 + ; gcrRegs +[x20] + cbz x20, G_M57422_IG05 + ;; size=16 bbWeight=1 PerfScore 5.50 +G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - ldr x22, [x21] - ; gcrRegs +[x22] - mov x2, x22
+ ldr x1, [x20] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M57422_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M57422_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57422_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M57422_IG16 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + ldr x21, [x19] + ; gcrRegs +[x21] + mov x2, x21
; gcrRegs +[x2]
- mov x0, x22
+ mov x0, x21
; gcrRegs +[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1] ldr x3, [x1, #0x08] ; gcrRegs +[x3] cmp x3, x0
- bne G_M57422_IG05
+ bne G_M57422_IG08
ldr x2, [x1, #0x10] cmp x2, x0
- bne G_M57422_IG04 - mov x0, x19 - b G_M57422_IG12
+ bne G_M57422_IG07 + mov x0, x20 + b G_M57422_IG15
;; size=60 bbWeight=0.50 PerfScore 9.50
-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2 x22]
+G_M57422_IG07: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2 x21]
ldrsb wzr, [x1] mov x1, x3 mov x2, x0 @@ -124,42 +138,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
- mov x22, x0 - ; gcrRegs +[x22] - mov x0, x20
+ mov x21, x0 + ; gcrRegs +[x21] + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + mov x0, x22
; gcrRegs -[x0] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x23, x0
+ mov x22, x0 + ; gcrRegs +[x22] + ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - ldr w19, [x19, #0x18] - ; gcrRegs -[x19] - cbz x22, G_M57422_IG17 - mov x15, x22
+ ldr w20, [x20, #0x18] + ; gcrRegs -[x20] + cbz x21, G_M57422_IG20 + mov x15, x21
; gcrRegs +[x15]
- add x14, x23, #16
+ add x14, x22, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14]
- ldr x2, [x21, #0xD1FFAB1E]
+ ldr x2, [x19, #0xD1FFAB1E]
; gcrRegs +[x2]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14]
- cbz x20, G_M57422_IG16
+ cbz x23, G_M57422_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x23
; gcrRegs +[x0] ...

benchmarks.run_pgo.linux.arm64.checked.mch

-28 (-28.00%) : 9531.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-21.88%) : 90442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)

@@ -8,14 +8,13 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> -; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo> +; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x28] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - mov x20, x1 - ; gcrRegs +[x20] - mov w21, w2 - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x1 + ; gcrRegs +[x19] + mov w20, w2 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x21, [x0, #0x38] + ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- uxtb w2, w21 - mov x0, x20
+ uxtb w2, w20 + mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M29548_IG05 - ;; size=52 bbWeight=1 PerfScore 15.50 -G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M29548_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50 +G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-17.14%) : 81542.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x1, x0 ; gcrRegs +[x1] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M44215_IG08 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.43%) : 130137.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,39 +6,39 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 758.89
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 758.89
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.00) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,400.31) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.15) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,100.00) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.00) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.15) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,597.46) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6,199.15) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,597.46) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,398.31) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,248.94) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,398.31) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,398.31) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,398.31) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.58) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,295.74) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,248.94) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 2.99) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.58) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,295.74) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 2.99) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,739.36) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.47) ref -> x23 "replacement local"
; ; Lcl frame size = 8
-G_M28111_IG01: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28111_IG01: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -52,105 +52,112 @@ G_M28111_IG02: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22 bge G_M28111_IG19
- cbz x20, G_M28111_IG09
+ cbz x20, G_M28111_IG10
orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG09
+ tbnz w2, #31, G_M28111_IG10
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG09
+ blt G_M28111_IG10
;; size=40 bbWeight=0.00 PerfScore 0.02 G_M28111_IG03: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG08
+ cbz x0, G_M28111_IG07
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG04: ; bbWeight=98.58, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG17
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG08
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG08
;; size=40 bbWeight=98.58 PerfScore 887.23
-G_M28111_IG05: ; bbWeight=49.29, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG08 - ;; size=12 bbWeight=49.29 PerfScore 221.81 -G_M28111_IG06: ; bbWeight=98.58, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG05: ; bbWeight=98.58, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG07
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG08
+ bne G_M28111_IG07
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.58 PerfScore 1528.01 -G_M28111_IG07: ; bbWeight=98.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=98.58 PerfScore 1626.59 +G_M28111_IG06: ; bbWeight=98.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=98.58 PerfScore 98.58
-G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19 b G_M28111_IG03 ;; size=16 bbWeight=99.00 PerfScore 297.00
-G_M28111_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=49.29, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + beq G_M28111_IG05 + ;; size=24 bbWeight=49.29 PerfScore 295.74 +G_M28111_IG09: ; bbWeight=24.65, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG05 + ;; size=8 bbWeight=24.65 PerfScore 36.97 +G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG16
+ bhs G_M28111_IG23
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0] cbz x0, G_M28111_IG15 ;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1
bne G_M28111_IG18 cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG15
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG16
;; size=40 bbWeight=1.00 PerfScore 8.96
-G_M28111_IG12: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG15 - ;; size=12 bbWeight=0.50 PerfScore 2.24 -G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG15
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1 bne G_M28111_IG15 add x0, x0, #12 @@ -158,16 +165,17 @@ G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.43
+ ;; size=56 bbWeight=1.00 PerfScore 16.43
G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=1.00 PerfScore 1.00 @@ -175,27 +183,25 @@ G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19
- b G_M28111_IG10
+ b G_M28111_IG11
;; size=16 bbWeight=1.00 PerfScore 3.00
-G_M28111_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M28111_IG17: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19-x20] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [x0] - ldr x2, [x2, #0x48] - ldr x2, [x2, #0x10]
...

+48 (+10.43%) : 112254.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,39 +6,39 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2046.09
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2046.09
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.00) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,399.81) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,200.90) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,100.00) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.00) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,198.90) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,596.71) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6,198.90) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,596.71) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,397.81) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,248.63) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,397.81) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,397.81) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,397.81) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 2.99) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.46) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,295.37) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,248.63) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 2.98) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 2.99) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.46) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,295.37) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 2.98) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,738.43) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.46) ref -> x23 "replacement local"
; ; Lcl frame size = 8
-G_M28111_IG01: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28111_IG01: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -52,105 +52,112 @@ G_M28111_IG02: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22 bge G_M28111_IG19
- cbz x20, G_M28111_IG09
+ cbz x20, G_M28111_IG10
orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG09
+ tbnz w2, #31, G_M28111_IG10
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG09
+ blt G_M28111_IG10
;; size=40 bbWeight=0.00 PerfScore 0.01 G_M28111_IG03: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG08
+ cbz x0, G_M28111_IG07
;; size=12 bbWeight=99.00 PerfScore 445.50 G_M28111_IG04: ; bbWeight=98.46, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG17
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG08
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG08
;; size=40 bbWeight=98.46 PerfScore 886.12
-G_M28111_IG05: ; bbWeight=49.23, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG08 - ;; size=12 bbWeight=49.23 PerfScore 221.53 -G_M28111_IG06: ; bbWeight=98.46, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG05: ; bbWeight=98.46, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG07
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG08
+ bne G_M28111_IG07
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.46 PerfScore 1526.09 -G_M28111_IG07: ; bbWeight=98.46, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=98.46 PerfScore 1624.55 +G_M28111_IG06: ; bbWeight=98.46, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=98.46 PerfScore 98.46
-G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19 b G_M28111_IG03 ;; size=16 bbWeight=99.00 PerfScore 297.00
-G_M28111_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=49.23, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + beq G_M28111_IG05 + ;; size=24 bbWeight=49.23 PerfScore 295.37 +G_M28111_IG09: ; bbWeight=24.61, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG05 + ;; size=8 bbWeight=24.61 PerfScore 36.92 +G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG16
+ bhs G_M28111_IG23
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0] cbz x0, G_M28111_IG15 ;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG11: ; bbWeight=0.99, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=0.99, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1
bne G_M28111_IG18 cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG15
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG16
;; size=40 bbWeight=0.99 PerfScore 8.95
-G_M28111_IG12: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG15 - ;; size=12 bbWeight=0.50 PerfScore 2.24 -G_M28111_IG13: ; bbWeight=0.99, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG13: ; bbWeight=0.99, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG15
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1 bne G_M28111_IG15 add x0, x0, #12 @@ -158,16 +165,17 @@ G_M28111_IG13: ; bbWeight=0.99, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=0.99 PerfScore 15.42
+ ;; size=56 bbWeight=0.99 PerfScore 16.41
G_M28111_IG14: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=0.99 PerfScore 0.99 @@ -175,27 +183,25 @@ G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19
- b G_M28111_IG10
+ b G_M28111_IG11
;; size=16 bbWeight=1.00 PerfScore 3.00
-G_M28111_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M28111_IG17: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19-x20] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [x0] - ldr x2, [x2, #0x48] - ldr x2, [x2, #0x10]
...

+48 (+10.43%) : 54768.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,39 +6,39 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3590.41
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3590.41
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.00) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.14) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.57) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,100.00) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.00) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.57) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,598.71) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6,199.57) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,598.71) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.14) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.46) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.14) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.14) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.14) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.79) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.36) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.46) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 2.99) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.79) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.36) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 2.99) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,740.91) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.48) ref -> x23 "replacement local"
; ; Lcl frame size = 8
-G_M28111_IG01: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28111_IG01: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -51,139 +51,161 @@ G_M28111_IG02: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG19 - cbz x20, G_M28111_IG09
+ bge G_M28111_IG21 + cbz x20, G_M28111_IG12
orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG09
+ tbnz w2, #31, G_M28111_IG12
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG09
+ blt G_M28111_IG12
;; size=40 bbWeight=0.00 PerfScore 0.00 G_M28111_IG03: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG08
+ cbz x0, G_M28111_IG09
;; size=12 bbWeight=99.00 PerfScore 445.50 G_M28111_IG04: ; bbWeight=98.79, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG17
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG26
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG08 - ;; size=40 bbWeight=98.79 PerfScore 889.09 -G_M28111_IG05: ; bbWeight=49.39, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG08 - ;; size=12 bbWeight=49.39 PerfScore 222.27 -G_M28111_IG06: ; bbWeight=98.79, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+ beq G_M28111_IG23 + ;; size=32 bbWeight=98.79 PerfScore 740.91 +G_M28111_IG05: ; bbWeight=98.79, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG10 + ;; size=8 bbWeight=98.79 PerfScore 148.18 +G_M28111_IG06: ; bbWeight=98.79, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG09 + ;; size=4 bbWeight=98.79 PerfScore 98.79 +G_M28111_IG07: ; bbWeight=98.79, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG08
+ bne G_M28111_IG09
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0 ;; size=52 bbWeight=98.79 PerfScore 1531.21
-G_M28111_IG07: ; bbWeight=98.79, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21
+G_M28111_IG08: ; bbWeight=98.79, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG23
;; size=4 bbWeight=98.79 PerfScore 98.79
-G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG09: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22
- bge G_M28111_IG19
+ bge G_M28111_IG21
b G_M28111_IG03 ;; size=16 bbWeight=99.00 PerfScore 297.00
-G_M28111_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG10: ; bbWeight=49.39, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + beq G_M28111_IG06 + ;; size=24 bbWeight=49.39 PerfScore 296.36 +G_M28111_IG11: ; bbWeight=24.70, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG06 + ;; size=8 bbWeight=24.70 PerfScore 37.05 +G_M28111_IG12: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG16
+ bhs G_M28111_IG25
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG15
+ cbz x0, G_M28111_IG17
;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG18
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG20
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG15
+ beq G_M28111_IG23 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG18
;; size=40 bbWeight=1.00 PerfScore 8.98
-G_M28111_IG12: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG15 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG17
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG15
+ bne G_M28111_IG17
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.47 -G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21
+ ;; size=56 bbWeight=1.00 PerfScore 16.46 +G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG23
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 ...

benchmarks.run_tiered.linux.arm64.checked.mch

-28 (-28.00%) : 6115.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 57257.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-21.88%) : 45630.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)

@@ -8,14 +8,13 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> -; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo> +; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x28] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - mov x20, x1 - ; gcrRegs +[x20] - mov w21, w2 - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x1 + ; gcrRegs +[x19] + mov w20, w2 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x21, [x0, #0x38] + ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- uxtb w2, w21 - mov x0, x20
+ uxtb w2, w20 + mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M29548_IG05 - ;; size=52 bbWeight=1 PerfScore 15.50 -G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M29548_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50 +G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 27277.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M3904_IG07
+ bge G_M3904_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M3904_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M3904_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M3904_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M3904_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -65,19 +48,31 @@ G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M3904_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #32
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M3904_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #32
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M3904_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 61077.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M50369_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M50369_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M50369_IG07
+ bge G_M50369_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M50369_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M50369_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M50369_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -65,19 +48,31 @@ G_M50369_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M50369_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #16
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M50369_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #16
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M50369_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M50369_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M50369_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=c13d3b3e) for method PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 24519.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M56449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M56449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M56449_IG07
+ bge G_M56449_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M56449_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M56449_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M56449_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M56449_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M56449_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -65,19 +48,31 @@ G_M56449_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M56449_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #24
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M56449_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #24
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M56449_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M56449_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M56449_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M56449_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=290d237e) for method PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm64.checked.mch

-24 (-40.00%) : 216194.dasm - CastExpansionTests:CastToGenericSystem.__Canon:System.Object:this (Tier1)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M64337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M64337_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M64337_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M64337_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M64337_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M64337_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M64337_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-28.57%) : 313421.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Program+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,40 +21,30 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x1, [fp, #0x10]
- mov x19, x1 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ldr x0, [x1, #0x38] + ldr x19, [x0] + mov x0, x19
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1-x2] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M51557_IG05 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M51557_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=32 bbWeight=1 PerfScore 10.00 +G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 19.81, instruction count 21, allocated bytes for code 84 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 17.50, instruction count 15, allocated bytes for code 60 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 317649.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+13.51%) : 481935.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,13 +10,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> x0 class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> x1 class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> x1 class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 0.74) int -> x19 "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> x3 "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> x1 "replacement local"
; ; Lcl frame size = 8 @@ -27,70 +26,79 @@ G_M44244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=12 bbWeight=1 PerfScore 2.50 G_M44244_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1]
- cbz x0, G_M44244_IG11
+ cbz x0, G_M44244_IG12
ldr x2, [x0] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M44244_IG07 - cbz x1, G_M44244_IG13
+ bne G_M44244_IG08 + cbz x1, G_M44244_IG05
;; size=32 bbWeight=1 PerfScore 8.00 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ldr x2, [x1]
+ movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32
cmp x2, x3
- bne G_M44244_IG13 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M44244_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ beq G_M44244_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M44244_IG04: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M44244_IG05: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M44244_IG14
cmp x1, x0
- bne G_M44244_IG06 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44244_IG05: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M44244_IG07 + ;; size=12 bbWeight=1 PerfScore 2.50 +G_M44244_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1] mov w19, #1
- b G_M44244_IG09
+ b G_M44244_IG10
;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M44244_IG07: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0-x1] ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 b <unknown method> ; gcr arg pop 0 ;; size=12 bbWeight=1 PerfScore 4.00
-G_M44244_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0xA8] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44244_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] uxtb w0, w19 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w19, wzr
- b G_M44244_IG09
+ b G_M44244_IG10
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 12, PerfScore 19.36, instruction count 37, allocated bytes for code 148 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 168, prolog size 12, PerfScore 21.24, instruction count 42, allocated bytes for code 168 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -101,7 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+13.85%) : 481203.dasm - System.Type:get_IsSerializable():ubyte:this (Tier1)

@@ -5,112 +5,146 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 10, 5 ) ref -> x19 this class-hnd single-def <System.Type> -; V01 loc0 [V01,T00] ( 11, 38.58) ref -> x0 class-hnd <System.Type>
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <System.Type> +; V01 loc0 [V01,T01] ( 10, 7 ) ref -> x0 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V04 tmp2 [V04,T04] ( 3, 2 ) int -> x0 "guarded devirt return temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> -; V06 tmp4 [V06,T06] ( 3, 1 ) ref -> x0 "guarded devirt return temp" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> -; V08 tmp6 [V08,T03] ( 3, 2 ) ref -> x0 "guarded devirt return temp" -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> -; V10 cse0 [V10,T02] ( 5, 3.75) long -> x20 "CSE - aggressive"
+; V03 tmp1 [V03,T05] ( 3, 2 ) int -> x0 "guarded devirt return temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> +; V05 tmp3 [V05,T07] ( 3, 1 ) ref -> x0 "guarded devirt return temp" +;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> +; V07 tmp5 [V07,T04] ( 3, 2 ) ref -> x0 "guarded devirt return temp" +;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> +; V09 cse0 [V09,T03] ( 4, 3.50) long -> x20 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 2, 1.25) ref -> x21 hoist "CSE - moderate" +; V11 rat0 [V11,T02] ( 5, 3.75) ref -> x1 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M39137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M39137_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M39137_IG15
+ bne G_M39137_IG18
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ;; size=32 bbWeight=1 PerfScore 7.50 G_M39137_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- tbz w0, #13, G_M39137_IG11
+ tbz w0, #13, G_M39137_IG15
;; size=4 bbWeight=1 PerfScore 1.00 G_M39137_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39137_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M39137_IG06: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M39137_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
+ mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M39137_IG09 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M39137_IG07: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M39137_IG09 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M39137_IG08: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M39137_IG13 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M39137_IG10: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + ;; size=12 bbWeight=0.25 PerfScore 0.38 +G_M39137_IG11: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x21]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x1 - ccmp x0, x2, z, ne
+ cmp x0, x21 + ccmp x0, x1, z, ne
beq G_M39137_IG04
- ;; size=36 bbWeight=16.67 PerfScore 83.33 -G_M39137_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] cmp x1, x20
- bne G_M39137_IG16
+ bne G_M39137_IG17
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M39137_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbnz x0, G_M39137_IG06
+ ;; size=56 bbWeight=1 PerfScore 13.50 +G_M39137_IG12: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz + cbnz x0, G_M39137_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M39137_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M39137_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M39137_IG14: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M39137_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M39137_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] ldr x0, [x19] cmp x0, x20
- bne G_M39137_IG17
+ bne G_M39137_IG16
mov x0, x19 ; gcrRegs +[x0]
- ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M39137_IG12: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19] - cbz x0, G_M39137_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M39137_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0] - cmp x1, x20 - beq G_M39137_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M39137_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M39137_IG06 + ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M39137_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M39137_IG09 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M39137_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19]
+ mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x19] + ldr x1, [x1, #0x60] + ldr x1, [x1] + blr x1 + ; gcrRegs -[x19] + b G_M39137_IG06 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39137_IG17: ; bbWeight=0, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x21] + ldr x1, [x0] + ldr x1, [x1, #0xA0] + ldr x1, [x1, #0x20] + blr x1 + b G_M39137_IG12 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M39137_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21] +[x19]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -120,27 +154,8 @@ G_M39137_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] b G_M39137_IG03 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39137_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x0] - ldr x1, [x0] - ldr x1, [x1, #0xA0] - ldr x1, [x1, #0x20] - blr x1 - b G_M39137_IG08 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M39137_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x60] - ldr x1, [x1] - blr x1 - ; gcrRegs -[x19] - b G_M39137_IG12 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 12, PerfScore 113.58, instruction count 65, allocated bytes for code 260 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
+; Total bytes of code 296, prolog size 16, PerfScore 38.69, instruction count 74, allocated bytes for code 296 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,10 +177,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
...

+36 (+14.06%) : 481722.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)

@@ -13,58 +13,74 @@ ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> x0 "guarded devirt return temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-; V04 tmp3 [V04,T07] ( 3, 2 ) ubyte -> x1 "Inline return value spill temp" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle> -; V08 tmp7 [V08,T08] ( 3, 2 ) int -> x22 -; V09 tmp8 [V09,T09] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle> -;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V13 tmp12 [V13,T03] ( 2, 4 ) byref -> x0 single-def "Inlining Arg" -;* V14 tmp13 [V14,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V15 tmp14 [V15,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP -; V17 tmp16 [V17,T05] ( 3, 3 ) long -> x0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP -; V18 cse0 [V18,T01] ( 3, 3 ) long -> x20 "CSE - aggressive" -; V19 cse1 [V19,T02] ( 3, 3 ) long -> x21 "CSE - aggressive"
+; V04 tmp3 [V04,T05] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp" +; V05 tmp4 [V05,T02] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle> +; V07 tmp6 [V07,T07] ( 3, 2 ) int -> x21 +; V08 tmp7 [V08,T08] ( 2, 2 ) ubyte -> x1 "Inline stloc first use temp" +;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle> +;* V10 tmp9 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V12 tmp11 [V12,T03] ( 2, 4 ) byref -> x0 single-def "Inlining Arg" +;* V13 tmp12 [V13,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V14 tmp13 [V14 ] ( 0, 0 ) long -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP +; V15 tmp14 [V15,T04] ( 3, 3 ) long -> x0 "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP +; V16 rat0 [V16,T01] ( 5, 7.50) ref -> x20 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M8853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00 G_M8853_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19] - movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - cmp x20, x21 - bne G_M8853_IG10 - ldr x0, [x19, #0x18]
+ ldrsb wzr, [x19] + mov x20, x19 + ; gcrRegs +[x20] + cbz x20, G_M8853_IG05 + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M8853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x0, [x20] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x0, x1 + beq G_M8853_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M8853_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M8853_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M8853_IG13 + ldr x0, [x20, #0x18]
tbnz w0, #1, G_M8853_IG12 ldr w0, [x0] and w0, w0, #0xD1FFAB1E cmp w0, #192, LSL #12
- cset x22, eq - ;; size=48 bbWeight=1 PerfScore 14.50 -G_M8853_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - uxtb w1, w22 - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8853_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cbnz w1, G_M8853_IG08
+ cset x21, eq + ;; size=28 bbWeight=1 PerfScore 9.50 +G_M8853_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + uxtb w1, w21 + cbnz w1, G_M8853_IG14 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M8853_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x19, x0
- beq G_M8853_IG06 - cmp x20, x21
+ beq G_M8853_IG09 + ldr x0, [x19] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x0, x1
bne G_M8853_IG11 mov x0, x19 ; gcrRegs +[x0] @@ -74,64 +90,66 @@ G_M8853_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr ldr x1, [x1] blr x1 ; gcrRegs -[x19]
- ;; size=56 bbWeight=1 PerfScore 11.50 -G_M8853_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+ ;; size=68 bbWeight=1 PerfScore 15.00 +G_M8853_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00 -G_M8853_IG06: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M8853_IG09: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, xzr ;; size=4 bbWeight=0.58 PerfScore 0.29
-G_M8853_IG07: ; bbWeight=0.58, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10]
+G_M8853_IG10: ; bbWeight=0.58, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.58 PerfScore 2.34 -G_M8853_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M8853_IG09: ; bbWeight=0, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M8853_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.58 PerfScore 2.92 +G_M8853_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19]
+ ldr x1, [x1, #0xA0] + ldr x1, [x1, #0x20] + blr x1 + ; gcrRegs -[x19] + b G_M8853_IG08 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M8853_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] +[x19-x20] + mov w21, wzr + b G_M8853_IG06 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M8853_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] + mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x19]
ldr x1, [x1, #0x78] ldr x1, [x1, #0x18] blr x1 ; gcrRegs -[x0] tst w0, #32 cset x1, ne
- b G_M8853_IG04
+ cbz w1, G_M8853_IG07
;; size=32 bbWeight=0 PerfScore 0.00
-G_M8853_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0xA0] - ldr x1, [x1, #0x20] - blr x1
+G_M8853_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M8853_IG05 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8853_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x19] - mov w22, wzr - b G_M8853_IG03 - ;; size=8 bbWeight=0 PerfScore 0.00
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M8853_IG15: ; bbWeight=0, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 256, prolog size 16, PerfScore 37.13, instruction count 64, allocated bytes for code 256 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
+; Total bytes of code 292, prolog size 16, PerfScore 45.84, instruction count 73, allocated bytes for code 292 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)
; ============================================================ Unwind Info: @@ -142,7 +160,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -156,10 +174,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end

libraries.crossgen2.linux.arm64.checked.mch

-40 (-35.71%) : 225558.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)

@@ -8,65 +8,41 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x20 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov x21, x20 - ; gcrRegs +[x21] - cbz x21, G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x22, [x21]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x22, x0 - beq G_M12636_IG05 - ;; size=32 bbWeight=0.25 PerfScore 3.12 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - mov x1, x20
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x20] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ; gcrRegs -[x1] +[x0] + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 112, prolog size 20, PerfScore 17.88, instruction count 28, allocated bytes for code 112 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.00, instruction count 18, allocated bytes for code 72 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,9 +61,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-36 (-34.62%) : 45517.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -8,39 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M7606_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -48,22 +35,14 @@ G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -82,9 +61,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-36 (-34.62%) : 45994.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)

@@ -8,39 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M16223_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M16223_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -48,22 +35,14 @@ G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M16223_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -82,9 +61,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.09%) : 11681.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 193405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 196926.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

libraries.pmi.linux.arm64.checked.mch

-28 (-46.67%) : 46063.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M7606_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 191315.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-33.33%) : 269152.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,48 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> -; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M51997_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x2] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x0, x3 - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - beq G_M51997_IG05 - ;; size=32 bbWeight=0.25 PerfScore 4.38 -G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; GC ptr vars -{V04} - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - ;; size=12 bbWeight=0.12 PerfScore 0.31 -G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ldp x0, x2, [x19, #0x08] - ; gcrRegs +[x0 x2] - ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08] + ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50 -G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00 +G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x3 ; gcr arg pop 0 ;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - ; GC ptr vars -{V04} - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - b G_M51997_IG05 - ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,8 +68,8 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end E4 end E4 end

+44 (+10.09%) : 243272.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> -; V03 arg3 [V03,T07] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T08] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T05] ( 4, 3.50) int -> x21 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T07] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> +; V03 arg3 [V03,T08] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T09] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T06] ( 4, 3.50) int -> x21 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 12, 21 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl>
-;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 11 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T13] ( 3, 2.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T12] ( 4, 2.92) int -> x15 "Inline stloc first use temp" -; V22 cse0 [V22,T10] ( 3, 3 ) ref -> x25 "CSE - aggressive"
+;* V09 tmp2 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 11 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T14] ( 3, 2.46) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T13] ( 4, 2.92) int -> x15 "Inline stloc first use temp" +; V20 cse0 [V20,T12] ( 3, 3 ) ref -> x25 "CSE - aggressive" +; V21 rat0 [V21,T11] ( 3, 2.50) ref -> x1 "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> x14 "replacement local"
; ; Lcl frame size = 8 @@ -64,7 +64,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ; gcrRegs -[x0] ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbnz x0, G_M54407_IG08
+ cbnz x0, G_M54407_IG11
;; size=32 bbWeight=1 PerfScore 10.00 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -74,27 +74,48 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, movk x25, #0xD1FFAB1E LSL #16 movk x25, #0xD1FFAB1E LSL #32 cmp x0, x25
- bne G_M54407_IG05 - b G_M54407_IG08 - ;; size=28 bbWeight=0.50 PerfScore 2.25 -G_M54407_IG04: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG11 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M54407_IG08 + ;; size=32 bbWeight=0.50 PerfScore 2.50 +G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=3D80003 {x0 x1 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M54407_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + b G_M54407_IG08 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
cmp x0, x25
- beq G_M54407_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG10 + mov x14, x0 + ; gcrRegs +[x14] + cbz x14, G_M54407_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=3D84001 {x0 x14 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + ldr x14, [x14] + ; gcrRegs -[x14] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M54407_IG04
+ cbnz x0, G_M54407_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x25]
- b G_M54407_IG08
+ b G_M54407_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - tbnz w21, #4, G_M54407_IG08
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz + tbnz w21, #4, G_M54407_IG11
add x14, x19, #64 ; byrRegs +[x14] mov x15, x20 @@ -103,7 +124,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -115,9 +136,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 ldr w14, [x14]
- tbz w14, #0, G_M54407_IG14
+ tbz w14, #0, G_M54407_IG17
;; size=40 bbWeight=1 PerfScore 8.50
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x14, #0xD1FFAB1E LSL #16 @@ -178,9 +199,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M54407_IG11
+ bls G_M54407_IG14
;; size=136 bbWeight=1 PerfScore 34.50
-G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG13: ; bbWeight=0.46, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] add w12, w15, #1 str w12, [x0, #0x10] @@ -193,9 +214,9 @@ G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M54407_IG12
+ b G_M54407_IG15
;; size=28 bbWeight=0.46 PerfScore 2.52
-G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.04, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov x1, x25 ; gcrRegs +[x1] @@ -206,11 +227,11 @@ G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=2000001 {x0 x25}, byrefRegs=000 blr x2 ; gcrRegs -[x0-x1] ;; size=24 bbWeight=0.04 PerfScore 0.25
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -218,17 +239,17 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x20 x22-x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #204 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M54407_IG09
+ b G_M54407_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 24, PerfScore 123.02, instruction count 109, allocated bytes for code 436 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 480, prolog size 24, PerfScore 131.27, instruction count 120, allocated bytes for code 480 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+12.79%) : 243262.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> x0 "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> x20 "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> x1 "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -66,37 +66,58 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x0] ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- cbnz w0, G_M47746_IG11
+ cbnz w0, G_M47746_IG14
ldr w0, [x19, #0x88]
- tbnz w0, #5, G_M47746_IG11
+ tbnz w0, #5, G_M47746_IG14
mov x0, x19 ; gcrRegs +[x0] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M47746_IG09 - b G_M47746_IG10 - ;; size=48 bbWeight=0.50 PerfScore 7.75 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG13 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=52 bbWeight=0.50 PerfScore 8.00 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M47746_IG12 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M47746_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M47746_IG11 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG14 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M47746_IG08
+ cbnz x0, G_M47746_IG10
;; size=20 bbWeight=4 PerfScore 44.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20] ldr w0, [x19, #0x88] and w1, w0, #0xD1FFAB1E cmp w1, #0xD1FFAB1E
- beq G_M47746_IG11 - tbnz w0, #5, G_M47746_IG12
+ beq G_M47746_IG14 + tbnz w0, #5, G_M47746_IG15
mov x0, x19 ; gcrRegs +[x0] mov w1, #6 @@ -106,7 +127,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ;; size=48 bbWeight=0.50 PerfScore 6.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -130,7 +151,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] b G_M47746_IG03 ;; size=68 bbWeight=0.50 PerfScore 9.25
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -162,7 +183,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 344, prolog size 12, PerfScore 83.50, instruction count 86, allocated bytes for code 344 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 388, prolog size 12, PerfScore 91.75, instruction count 97, allocated bytes for code 388 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info: @@ -173,7 +194,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 344 (0x000158)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+22.45%) : 243297.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> x0 "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> x20 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> x20 "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> x1 "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -42,49 +42,69 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M32453_IG05
+ beq G_M32453_IG12
;; size=28 bbWeight=1 PerfScore 6.50
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20] + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M32453_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M32453_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x20]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M32453_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M32453_IG10 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M32453_IG04
+ cbnz x0, G_M32453_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
- b G_M32453_IG09
+ b G_M32453_IG12
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbz x0, G_M32453_IG11
+ cbz x0, G_M32453_IG14
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -116,7 +136,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 62.75, instruction count 49, allocated bytes for code 196 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 240, prolog size 12, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info: @@ -127,7 +147,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm64.Release.mch

-28 (-46.67%) : 643319.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 23588 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.50 PerfScore 5.25 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 620592.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 715 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.50 PerfScore 5.25 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-35.29%) : 55361.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)

@@ -7,12 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x2 this single-def +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x2 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,38 +17,25 @@ G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x20]! mov fp, sp str x1, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - ldr x2, [x0] - ; gcrRegs +[x2] - mov x0, x2 - ; gcrRegs +[x0] - ; byrRegs -[x0] - cbz x0, G_M64707_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - ldr x1, [x1, #0x08] - cmp x3, x1 - beq G_M64707_IG05 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1 - mov x1, x2
+ mov x2, x0 + ; byrRegs +[x2] + ;; size=16 bbWeight=1 PerfScore 3.00 +G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref + ldr x0, [x1, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08] + ldr x1, [x2]
; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1-x2] +[x0] - ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M64707_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1] +[x0] + ; byrRegs -[x2] + ;; size=20 bbWeight=1 PerfScore 13.00 +G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 12, PerfScore 12.62, instruction count 17, allocated bytes for code 68 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 44, prolog size 12, PerfScore 18.00, instruction count 11, allocated bytes for code 44 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -62,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 81385.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.26) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.22) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.19) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T03] ( 2, 0.14) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T02] ( 3, 0.14) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.14) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.26) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -56,34 +56,48 @@ G_M12969_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M12969_IG11
+ bne G_M12969_IG12
;; size=24 bbWeight=0.05 PerfScore 0.32
-G_M12969_IG09: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG09: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG14 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.03 PerfScore 0.29 -G_M12969_IG10: ; bbWeight=0.03, epilog, nogc, extend
+ ;; size=16 bbWeight=0.03 PerfScore 0.15 +G_M12969_IG11: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.03 PerfScore 0.07
-G_M12969_IG11: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.17
-G_M12969_IG12: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.04
+G_M12969_IG14: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M12969_IG10 + ;; size=24 bbWeight=0.02 PerfScore 0.10 +G_M12969_IG15: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG10 + ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 6.51, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.52, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 44383.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.25) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.22) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.19) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T02] ( 2, 0.13) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T03] ( 3, 0.13) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.13) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.24) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -56,34 +56,48 @@ G_M12969_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M12969_IG11
+ bne G_M12969_IG14
;; size=24 bbWeight=0.05 PerfScore 0.28
-G_M12969_IG09: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG09: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG12 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.03 PerfScore 0.27 -G_M12969_IG10: ; bbWeight=0.03, epilog, nogc, extend
+ ;; size=16 bbWeight=0.03 PerfScore 0.15 +G_M12969_IG11: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.03 PerfScore 0.06
-G_M12969_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M12969_IG10 + ;; size=24 bbWeight=0.02 PerfScore 0.10 +G_M12969_IG13: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG10 + ;; size=8 bbWeight=0.01 PerfScore 0.01 +G_M12969_IG14: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.01 PerfScore 0.13
-G_M12969_IG12: ; bbWeight=0.01, epilog, nogc, extend
+G_M12969_IG15: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.03
-; Total bytes of code 128, prolog size 8, PerfScore 6.45, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.46, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 45208.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.13) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
-; V01 arg1 [V01,T01] ( 7, 3.11) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
+; V01 arg1 [V01,T01] ( 6, 3.10) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0.98) ubyte -> x0 "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V06 tmp4 [V06,T03] ( 2, 0.06) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V07 cse0 [V07,T04] ( 3, 0.06) long -> x3 "CSE - conservative"
+; V06 tmp4 [V06,T04] ( 2, 0.06) ref -> x1 single-def "argument with side effect" +; V07 rat0 [V07,T03] ( 5, 0.12) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -31,7 +31,7 @@ G_M530_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byr G_M530_IG03: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, #1
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.43 PerfScore 0.64 G_M530_IG04: ; bbWeight=0.07, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -41,7 +41,7 @@ G_M530_IG04: ; bbWeight=0.07, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, G_M530_IG05: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, wzr
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.05 PerfScore 0.07 G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -50,40 +50,54 @@ G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M530_IG10
+ bne G_M530_IG13
;; size=24 bbWeight=0.02 PerfScore 0.14
-G_M530_IG07: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M530_IG07: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M530_IG11 + ;; size=4 bbWeight=0.02 PerfScore 0.02 +G_M530_IG08: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.02 PerfScore 0.14 -G_M530_IG08: ; bbWeight=0.02, epilog, nogc, extend
+ ;; size=16 bbWeight=0.02 PerfScore 0.07 +G_M530_IG09: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M530_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M530_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M530_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M530_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M530_IG08 + ;; size=24 bbWeight=0.01 PerfScore 0.05 +G_M530_IG12: ; bbWeight=0.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M530_IG08 + ;; size=8 bbWeight=0.00 PerfScore 0.01 +G_M530_IG13: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.01 PerfScore 0.07
-G_M530_IG11: ; bbWeight=0.01, epilog, nogc, extend
+G_M530_IG14: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 5.25, instruction count 32, allocated bytes for code 128 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 5.26, instruction count 38, allocated bytes for code 152 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-28 (-46.67%) : 34949.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M24927_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M24927_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 140940.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-40.00%) : 30456.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M29555_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M29555_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+43.48%) : 92601.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_unix #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+40 (+43.48%) : 93874.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_unix #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+48 (+92.31%) : 95202.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 2 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- brk_unix #0 - ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + mov w1, wzr + movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + ;; size=76 bbWeight=1 PerfScore 20.00 +G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x3 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1 - Epilog Count : 0
+ Code Words : 2 + Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ---- + D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

realworld.run.linux.arm64.checked.mch

-24 (-31.58%) : 31446.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M56342_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M56342_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 435.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 19005.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+1.40%) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,110 +9,109 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> x19 class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [fp+0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T40] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> -; V05 loc4 [V05,T42] ( 2, 2 ) int -> x22 single-def
+; V04 loc3 [V04,T41] ( 2, 2 ) ref -> x20 class-hnd single-def <System.String> +; V05 loc4 [V05,T43] ( 2, 2 ) int -> x22 single-def
; V06 loc5 [V06 ] ( 14, 14 ) struct (40) [fp+0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T36] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live -; V08 loc7 [V08,T50] ( 6, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T37] ( 4, 2 ) int -> [fp+0x3C] do-not-enreg[M] EH-live +; V08 loc7 [V08,T52] ( 5, 0 ) ref -> [fp+0x10] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T54] ( 3, 0 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T19] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T20] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T16] ( 5, 5 ) ref -> x21
-; V16 tmp5 [V16,T20] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T21] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T17] ( 5, 5 ) ref -> x20
-; V18 tmp7 [V18,T32] ( 3, 3 ) int -> x22
+; V18 tmp7 [V18,T34] ( 3, 3 ) int -> x22
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T21] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> x4 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> x19 class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T56] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T55] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T58] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T56] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T51] ( 4, 0 ) int -> x0 -; V29 tmp18 [V29,T54] ( 3, 0 ) int -> x0 -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T30] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T29] ( 2, 4 ) int -> x24 "Inlining Arg" -; V47 tmp36 [V47,T22] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T38] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T23] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T47] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> x0 "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> x24 "Inlining Arg" -; V64 tmp53 [V64,T24] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" -;* V65 tmp54 [V65,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T25] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T37] ( 3, 2 ) byref -> x23 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T39] ( 3, 2 ) int -> x24 single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T41] ( 2, 2 ) byref -> x23 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T44] ( 2, 2 ) int -> x24 single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T31] ( 3, 3 ) byref -> x1 "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T33] ( 3, 3 ) int -> x2 "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T46] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T26] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V93 tmp82 [V93,T27] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V94 tmp83 [V94,T28] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V95 tmp84 [V95,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V96 tmp85 [V96,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V97 tmp86 [V97,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V98 PSPSym [V98,T48] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T49] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T34] ( 3, 3 ) int -> x0 "CSE - moderate" -; V101 cse2 [V101,T08] ( 7, 7 ) int -> registers multi-def "CSE - aggressive" -; V102 cse3 [V102,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" -; V103 cse4 [V103,T18] ( 4, 4 ) long -> x20 "CSE - moderate" -; V104 cse5 [V104,T35] ( 3, 3 ) int -> x1 "CSE - moderate"
+; V28 tmp17 [V28,T53] ( 4, 0 ) int -> x0 +; V29 tmp18 [V29,T57] ( 3, 0 ) int -> x0 +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T11] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T31] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T32] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T30] ( 2, 4 ) int -> x24 "Inlining Arg" +; V45 tmp34 [V45,T23] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T39] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T24] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T49] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> x0 "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T14] ( 3, 6 ) int -> x24 "Inlining Arg" +; V62 tmp51 [V62,T25] ( 2, 4 ) byref -> x23 single-def "Inlining Arg" +;* V63 tmp52 [V63,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T26] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V67 tmp56 [V67,T13] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T38] ( 3, 2 ) byref -> x23 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T40] ( 3, 2 ) int -> x24 single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T42] ( 2, 2 ) byref -> x23 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T45] ( 2, 2 ) int -> x24 single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T33] ( 3, 3 ) byref -> x1 "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T35] ( 3, 3 ) int -> x2 "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T47] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T27] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V91 tmp80 [V91,T28] ( 2, 4 ) ref -> x3 single-def "argument with side effect" +; V92 tmp81 [V92,T29] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V93 tmp82 [V93,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V94 tmp83 [V94,T60] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V95 tmp84 [V95,T61] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V96 PSPSym [V96,T50] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T46] ( 2, 2 ) int -> x0 "CSE - moderate" +; V99 cse2 [V99,T18] ( 4, 4 ) int -> x21 "CSE - moderate" +; V100 cse3 [V100,T15] ( 19, 5 ) long -> [fp+0x20] do-not-enreg[H] EH-live multi-def "CSE - moderate" +; V101 cse4 [V101,T19] ( 4, 4 ) long -> x20 "CSE - moderate" +; V102 cse5 [V102,T36] ( 3, 3 ) int -> x1 "CSE - moderate" +; V103 rat0 [V103,T07] ( 5, 7.50) ref -> x0 "replacement local"
; ; Lcl frame size = 112 @@ -129,12 +128,12 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { stp q16, q16, [x9, #0x40] str xzr, [x9, #0x60] add x1, sp, #176
- str x1, [fp, #0x78] // [V98 PSPSym]
+ str x1, [fp, #0x78] // [V96 PSPSym]
mov x19, x0 ; gcrRegs +[x19] ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08}
+G_M19825_IG02: ; bbWeight=1, gcVars=0010000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08 V52}
add x2, fp, #104 // [V03 loc2] add x1, fp, #112 // [V02 loc1] mov x0, x19 @@ -170,7 +169,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=800 ;; size=88 bbWeight=1 PerfScore 21.50 G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V01 V08 V52}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -197,15 +196,16 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str x20, [fp, #0x18] // [V01 loc0] ; GC ptr vars +{V01} ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG04: ; bbWeight=1, gcVars=0004000000000080 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0010000000000100 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars +{V08}
ldr x0, [fp, #0x18] // [V01 loc0] ; gcrRegs +[x0] movz x11, #136 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- str x11, [fp, #0x20] // [V102 cse3] - ldr x11, [fp, #0x20] // [V102 cse3]
+ str x11, [fp, #0x20] // [V100 cse3] + ldr x11, [fp, #0x20] // [V100 cse3]
mov w1, #1 ldr x2, [x11] blr x2 @@ -217,7 +217,7 @@ G_M19825_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M19825_IG17
...

+36 (+1.57%) : 2220.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,110 +9,109 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> x19 class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [fp+0x20] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [fp+0x20] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [fp+0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T40] ( 2, 2 ) ref -> x21 class-hnd single-def <System.String> -; V05 loc4 [V05,T42] ( 2, 2 ) int -> x23 single-def
+; V04 loc3 [V04,T41] ( 2, 2 ) ref -> x21 class-hnd single-def <System.String> +; V05 loc4 [V05,T43] ( 2, 2 ) int -> x23 single-def
; V06 loc5 [V06 ] ( 14, 14 ) struct (40) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T36] ( 4, 2 ) int -> [fp+0x44] do-not-enreg[M] EH-live -; V08 loc7 [V08,T50] ( 6, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T55] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T37] ( 4, 2 ) int -> [fp+0x44] do-not-enreg[M] EH-live +; V08 loc7 [V08,T52] ( 5, 0 ) ref -> [fp+0x18] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T54] ( 3, 0 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T10] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T19] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T20] ( 2, 4 ) ref -> x21 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T17] ( 5, 5 ) ref -> x21
-; V16 tmp5 [V16,T20] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T21] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T18] ( 5, 5 ) ref -> x21
-; V18 tmp7 [V18,T32] ( 3, 3 ) int -> x23
+; V18 tmp7 [V18,T34] ( 3, 3 ) int -> x23
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T21] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T22] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> x4 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T11] ( 3, 6 ) ref -> x19 class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T56] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T55] ( 3, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T58] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T56] ( 3, 0 ) ref -> x0 class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T51] ( 4, 0 ) int -> x0 -; V29 tmp18 [V29,T54] ( 3, 0 ) int -> x0 -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T13] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T30] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T29] ( 2, 4 ) int -> x25 "Inlining Arg" -; V47 tmp36 [V47,T22] ( 2, 4 ) byref -> x24 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T38] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T23] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T47] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> x0 "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T15] ( 3, 6 ) int -> x25 "Inlining Arg" -; V64 tmp53 [V64,T24] ( 2, 4 ) byref -> x24 single-def "Inlining Arg" -;* V65 tmp54 [V65,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T25] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V69 tmp58 [V69,T14] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T37] ( 3, 2 ) byref -> x24 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T39] ( 3, 2 ) int -> x25 single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T41] ( 2, 2 ) byref -> x24 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T44] ( 2, 2 ) int -> x25 single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T31] ( 3, 3 ) byref -> x1 "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T33] ( 3, 3 ) int -> x2 "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T46] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T26] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V93 tmp82 [V93,T27] ( 2, 4 ) ref -> x3 single-def "argument with side effect" -; V94 tmp83 [V94,T28] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V95 tmp84 [V95,T57] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V96 tmp85 [V96,T58] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V97 tmp86 [V97,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V98 PSPSym [V98,T48] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T49] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T34] ( 3, 3 ) int -> x0 "CSE - moderate" -; V101 cse2 [V101,T09] ( 6, 6 ) long -> x20 "CSE - moderate" -; V102 cse3 [V102,T08] ( 7, 7 ) int -> x22 multi-def "CSE - aggressive" -; V103 cse4 [V103,T16] ( 19, 5 ) long -> [fp+0x28] do-not-enreg[H] EH-live multi-def "CSE - moderate" -; V104 cse5 [V104,T35] ( 3, 3 ) int -> x1 "CSE - moderate"
+; V28 tmp17 [V28,T53] ( 4, 0 ) int -> x0 +; V29 tmp18 [V29,T57] ( 3, 0 ) int -> x0 +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T12] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T13] ( 3, 6 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T31] ( 3, 3 ) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T32] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T30] ( 2, 4 ) int -> x25 "Inlining Arg" +; V45 tmp34 [V45,T23] ( 2, 4 ) byref -> x24 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T39] ( 3, 2 ) int -> x0 single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T24] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T49] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> x0 "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T15] ( 3, 6 ) int -> x25 "Inlining Arg" +; V62 tmp51 [V62,T25] ( 2, 4 ) byref -> x24 single-def "Inlining Arg" +;* V63 tmp52 [V63,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T26] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V67 tmp56 [V67,T14] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T38] ( 3, 2 ) byref -> x24 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T40] ( 3, 2 ) int -> x25 single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T42] ( 2, 2 ) byref -> x24 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T45] ( 2, 2 ) int -> x25 single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T33] ( 3, 3 ) byref -> x1 "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T35] ( 3, 3 ) int -> x2 "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T47] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T27] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V91 tmp80 [V91,T28] ( 2, 4 ) ref -> x3 single-def "argument with side effect" +; V92 tmp81 [V92,T29] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V93 tmp82 [V93,T59] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V94 tmp83 [V94,T60] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V95 tmp84 [V95,T61] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V96 PSPSym [V96,T50] ( 1, 1 ) long -> [fp+0x80] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T46] ( 2, 2 ) int -> x0 "CSE - moderate" +; V99 cse2 [V99,T09] ( 6, 6 ) long -> x20 "CSE - moderate" +; V100 cse3 [V100,T19] ( 4, 4 ) int -> x22 "CSE - moderate" +; V101 cse4 [V101,T16] ( 19, 5 ) long -> [fp+0x28] do-not-enreg[H] EH-live multi-def "CSE - moderate" +; V102 cse5 [V102,T36] ( 3, 3 ) int -> x1 "CSE - moderate" +; V103 rat0 [V103,T07] ( 5, 7.50) ref -> x0 "replacement local"
; ; Lcl frame size = 120 @@ -130,12 +129,12 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { stp q16, q16, [x9, #0x40] str xzr, [x9, #0x60] add x1, sp, #192
- str x1, [fp, #0x80] // [V98 PSPSym]
+ str x1, [fp, #0x80] // [V96 PSPSym]
mov x19, x0 ; gcrRegs +[x19] ;; size=60 bbWeight=1 PerfScore 12.50
-G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08}
+G_M19825_IG02: ; bbWeight=1, gcVars=0010000000000000 {V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08 V52}
add x2, fp, #112 // [V03 loc2] add x1, fp, #120 // [V02 loc1] mov x0, x19 @@ -171,7 +170,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0004000000000000 {V08}, gcrefRegs=800 ;; size=88 bbWeight=1 PerfScore 21.50 G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20]
- ; GC ptr vars -{V01}
+ ; GC ptr vars -{V01 V08 V52}
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -198,15 +197,16 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str x20, [fp, #0x20] // [V01 loc0] ; GC ptr vars +{V01} ;; size=56 bbWeight=1 PerfScore 11.50
-G_M19825_IG04: ; bbWeight=1, gcVars=0004000000000080 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0010000000000100 {V01 V08}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars +{V08}
ldr x0, [fp, #0x20] // [V01 loc0] ; gcrRegs +[x0] movz x11, #136 // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
- str x11, [fp, #0x28] // [V103 cse4] - ldr x11, [fp, #0x28] // [V103 cse4]
+ str x11, [fp, #0x28] // [V101 cse4] + ldr x11, [fp, #0x28] // [V101 cse4]
mov w1, #1 ldr x2, [x11] blr x2 @@ -218,7 +218,7 @@ G_M19825_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]
- tbz w0, #0, G_M19825_IG17
...

+16 (+4.35%) : 5233.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo> @@ -16,27 +16,27 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall" -;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall" -;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect" -; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect" -; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive" -; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" -; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" -; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect" +; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect" +; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect" +; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect" +; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect" +; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive" +; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup" +; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" +; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" +; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" +; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup" +; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" +; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" +; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG13 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08] + ;; size=28 bbWeight=1 PerfScore 9.00 +G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16 - b G_M31693_IG17
+ cbz x0, G_M31693_IG14 + b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x1 ; gcrRegs -[x0] brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00 +G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20 - b G_M31693_IG21
+ cbz x0, G_M31693_IG17 + b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS @@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_unix #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +200,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

smoke_tests.nativeaot.linux.arm64.checked.mch

-24 (-30.00%) : 4412.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (FullOpts)

@@ -7,11 +7,9 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,38 +21,24 @@ G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M10356_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M10356_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M10356_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x30] - ldr x3, [x3] - cmp x2, x3 - beq G_M10356_IG05 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x30] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M10356_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
ldr wzr, [x0] bl System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this ; gcrRegs -[x0]
- ;; size=8 bbWeight=1 PerfScore 4.00 -G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 14.00 +G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 80, prolog size 16, PerfScore 17.06, instruction count 20, allocated bytes for code 80 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
+; Total bytes of code 56, prolog size 16, PerfScore 22.00, instruction count 14, allocated bytes for code 56 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
; ============================================================ Cfi Info:

-24 (-28.57%) : 4738.dasm - System.Runtime.CompilerServices.StrongBox`1[System._Canon]:System.Runtime.CompilerServices.IStrongBox.setValue(System.Object):this (FullOpts)

@@ -7,11 +7,9 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x15 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,43 +21,28 @@ G_M28067_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M28067_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M28067_IG03: ; bbWeight=0.25, gcrefRegs=88002 {x1 x15 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - ldr x2, [x19] - ldr x2, [x2, #0x30] - ldr x2, [x2] - cmp x0, x2 - beq G_M28067_IG05 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M28067_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ ldr x0, [x19] + ldr x0, [x0, #0x30] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x15, x0 - ; gcrRegs +[x15] - ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M28067_IG05: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
add x14, x19, #8 ; byrRegs +[x14]
+ mov x15, x0 + ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M28067_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=28 bbWeight=1 PerfScore 12.00 +G_M28067_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 14.62, instruction count 21, allocated bytes for code 84 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 20.00, instruction count 15, allocated bytes for code 60 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
; ============================================================ Cfi Info:

-20 (-26.32%) : 17414.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,38 +21,29 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x1, [fp, #0x10]
- mov x19, x1 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19]
+ ldr x19, [x1] + mov x0, x19
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1-x2] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M33075_IG05 - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - cmp x2, x3 - beq G_M33075_IG05 - ;; size=16 bbWeight=0.25 PerfScore 1.88 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=1 PerfScore 7.00 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 16.06, instruction count 19, allocated bytes for code 76 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 56, prolog size 16, PerfScore 14.50, instruction count 14, allocated bytes for code 56 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Cfi Info:

+20 (+5.00%) : 4114.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)

@@ -10,11 +10,11 @@ ; V00 this [V00,T00] ( 8, 8 ) byref -> x19 this single-def ; V01 arg1 [V01,T04] ( 3, 3 ) int -> x21 single-def ; V02 arg2 [V02,T05] ( 3, 3 ) int -> x22 single-def
-; V03 arg3 [V03,T02] ( 10, 5.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
+; V03 arg3 [V03,T01] ( 12, 6.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <ushort[]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V07 tmp2 [V07,T01] ( 5, 8 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
+; V07 tmp2 [V07,T02] ( 5, 8 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
;* V08 tmp3 [V08,T19] ( 0, 0 ) byref -> zero-ref single-def ;* V09 tmp4 [V09,T18] ( 0, 0 ) byref -> zero-ref ; V10 tmp5 [V10,T11] ( 3, 2 ) int -> x21 @@ -22,25 +22,25 @@ ; V12 tmp7 [V12,T03] ( 3, 6 ) int -> x1 "Inlining Arg" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V14 tmp9 [V14,T15] ( 3, 1.50) ubyte -> x21 "Inline return value spill temp"
-; V15 tmp10 [V15,T08] ( 2, 2 ) ref -> x0 class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V16 tmp11 [V16,T16] ( 2, 1 ) int -> x0 -; V17 tmp12 [V17,T17] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V18 tmp13 [V18,T09] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> -; V22 tmp17 [V22,T20] ( 3, 0.83) ref -> x0 "guarded devirt return temp" -; V23 tmp18 [V23,T14] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" -;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V15 tmp10 [V15,T16] ( 2, 1 ) int -> x0 +; V16 tmp11 [V16,T17] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V17 tmp12 [V17,T09] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V21 tmp16 [V21,T20] ( 3, 0.83) ref -> x0 "guarded devirt return temp" +; V22 tmp17 [V22,T14] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" +;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V25 tmp20 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +;* V26 tmp21 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp22 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V31 tmp26 [V31,T10] ( 3, 2 ) byref -> x1 "field V13._reference (fldOffset=0x0)" P-INDEP -; V32 tmp27 [V32,T12] ( 3, 2 ) int -> x2 "field V13._length (fldOffset=0x8)" P-INDEP -; V33 cse0 [V33,T07] ( 6, 2.83) long -> x21 "CSE - moderate"
+; V30 tmp25 [V30,T10] ( 3, 2 ) byref -> x1 "field V13._reference (fldOffset=0x0)" P-INDEP +; V31 tmp26 [V31,T12] ( 3, 2 ) int -> x2 "field V13._length (fldOffset=0x8)" P-INDEP +; V32 cse0 [V32,T08] ( 6, 2.83) long -> x21 multi-def "CSE - aggressive" +; V33 rat0 [V33,T07] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 0 @@ -67,7 +67,7 @@ G_M9862_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19} adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0, #-0x08]
- cbnz x0, G_M9862_IG21
+ cbnz x0, G_M9862_IG24
;; size=28 bbWeight=1 PerfScore 7.00 G_M9862_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -116,60 +116,72 @@ G_M9862_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x20] ; byrRegs -[x1] mov w21, wzr
- b G_M9862_IG19
+ b G_M9862_IG22
;; size=8 bbWeight=0.50 PerfScore 0.75 G_M9862_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x20] mov x0, x20 ; gcrRegs +[x0]
- ldr x21, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ cbz x0, G_M9862_IG11 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M9862_IG09: ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M9862_IG11 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M9862_IG10: ; bbWeight=0.12, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0]
- add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x21, x0 - bne G_M9862_IG14
+ mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M9862_IG11: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + cbz x0, G_M9862_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1]
+ ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M9862_IG10 - ;; size=48 bbWeight=0.50 PerfScore 4.75 -G_M9862_IG09: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M9862_IG13 + ;; size=32 bbWeight=0.50 PerfScore 3.75 +G_M9862_IG12: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M9862_IG13
+ b G_M9862_IG16
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M9862_IG10: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M9862_IG13: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0] +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M9862_IG12
+ bne G_M9862_IG15
;; size=16 bbWeight=0.33 PerfScore 0.82
-G_M9862_IG11: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M9862_IG14: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M9862_IG13
+ b G_M9862_IG16
;; size=12 bbWeight=0.17 PerfScore 0.41
-G_M9862_IG12: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M9862_IG15: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M9862_IG13: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M9862_IG16: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
cmp x0, #0 cset x0, eq ; gcrRegs -[x0] tst w0, #255
- bne G_M9862_IG14
+ bne G_M9862_IG17
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -179,59 +191,60 @@ G_M9862_IG13: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 bl <unknown method> ; gcrRegs -[x0-x1] ;; size=36 bbWeight=0.50 PerfScore 2.75
-G_M9862_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M9862_IG17: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz + ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- beq G_M9862_IG18
+ beq G_M9862_IG21
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M9862_IG16 - ;; size=40 bbWeight=0.50 PerfScore 3.00 -G_M9862_IG15: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M9862_IG19 + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M9862_IG18: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20]
- b G_M9862_IG17
+ b G_M9862_IG20
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M9862_IG16: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M9862_IG19: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1 x20] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M9862_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
+G_M9862_IG20: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
cmp x0, #0 cset x21, ne
- b G_M9862_IG19
+ b G_M9862_IG22
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M9862_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M9862_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] mov w21, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M9862_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M9862_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
strb w21, [x19, #0x14] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M9862_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M9862_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M9862_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
+G_M9862_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
; gcrRegs +[x20] bl CORINFO_HELP_READYTORUN_GCSTATIC_BASE ; byrRegs +[x0] b G_M9862_IG03 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 16, PerfScore 57.33, instruction count 100, allocated bytes for code 400 (MethodHash=791fd979) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
+; Total bytes of code 420, prolog size 16, PerfScore 60.02, instruction count 105, allocated bytes for code 420 (MethodHash=791fd979) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
; ============================================================ Cfi Info:

+20 (+6.85%) : 14963.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)

@@ -10,32 +10,32 @@ ; V00 this [V00,T00] ( 8, 8 ) byref -> x19 this single-def ;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 arg3 [V03,T01] ( 10, 5.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
+; V03 arg3 [V03,T01] ( 12, 6.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T13] ( 0, 0 ) byref -> zero-ref single-def ;* V07 tmp2 [V07,T12] ( 0, 0 ) byref -> zero-ref ; V08 tmp3 [V08,T07] ( 3, 2 ) int -> x21 ; V09 tmp4 [V09,T09] ( 3, 1.50) ubyte -> x21 "Inline return value spill temp"
-; V10 tmp5 [V10,T05] ( 2, 2 ) ref -> x0 class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V11 tmp6 [V11,T10] ( 2, 1 ) int -> x0 -; V12 tmp7 [V12,T11] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V13 tmp8 [V13,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> -; V17 tmp12 [V17,T14] ( 3, 0.83) ref -> x0 "guarded devirt return temp" -; V18 tmp13 [V18,T08] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" -;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V10 tmp5 [V10,T10] ( 2, 1 ) int -> x0 +; V11 tmp6 [V11,T11] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V12 tmp7 [V12,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V16 tmp11 [V16,T14] ( 3, 0.83) ref -> x0 "guarded devirt return temp" +; V17 tmp12 [V17,T08] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" +;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V26 tmp21 [V26,T02] ( 2, 2 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP -; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x5 single-def "field V04._length (fldOffset=0x8)" P-INDEP -; V28 cse0 [V28,T04] ( 6, 2.83) long -> x21 "CSE - aggressive"
+; V25 tmp20 [V25,T02] ( 2, 2 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP +; V26 tmp21 [V26,T03] ( 2, 2 ) int -> x5 single-def "field V04._length (fldOffset=0x8)" P-INDEP +; V27 cse0 [V27,T05] ( 6, 2.83) long -> x21 multi-def "CSE - aggressive" +; V28 rat0 [V28,T04] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 8 @@ -68,60 +68,72 @@ G_M17405_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x20] ; byrRegs -[x4] mov w21, wzr
- b G_M17405_IG15
+ b G_M17405_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75 G_M17405_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x20] mov x0, x20 ; gcrRegs +[x0]
- ldr x21, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ cbz x0, G_M17405_IG07 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17405_IG05: ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M17405_IG07 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M17405_IG06: ; bbWeight=0.12, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0]
- add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x21, x0 - bne G_M17405_IG10
+ mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M17405_IG07: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + cbz x0, G_M17405_IG13
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1]
+ ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG06 - ;; size=48 bbWeight=0.50 PerfScore 4.75 -G_M17405_IG05: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M17405_IG09 + ;; size=32 bbWeight=0.50 PerfScore 3.75 +G_M17405_IG08: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M17405_IG09
+ b G_M17405_IG12
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M17405_IG06: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG09: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0] +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG08
+ bne G_M17405_IG11
;; size=16 bbWeight=0.33 PerfScore 0.82
-G_M17405_IG07: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG10: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M17405_IG09
+ b G_M17405_IG12
;; size=12 bbWeight=0.17 PerfScore 0.41
-G_M17405_IG08: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M17405_IG09: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG12: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
cmp x0, #0 cset x0, eq ; gcrRegs -[x0] tst w0, #255
- bne G_M17405_IG10
+ bne G_M17405_IG13
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -131,53 +143,54 @@ G_M17405_IG09: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=8000 bl <unknown method> ; gcrRegs -[x0-x1] ;; size=36 bbWeight=0.50 PerfScore 2.75
-G_M17405_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz + ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- beq G_M17405_IG14
+ beq G_M17405_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG12 - ;; size=40 bbWeight=0.50 PerfScore 3.00 -G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M17405_IG15 + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M17405_IG14: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20]
- b G_M17405_IG13
+ b G_M17405_IG16
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M17405_IG12: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG15: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1 x20] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M17405_IG13: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
+G_M17405_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
cmp x0, #0 cset x21, ne
- b G_M17405_IG15
+ b G_M17405_IG18
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M17405_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M17405_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] mov w21, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17405_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M17405_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
strb w21, [x19, #0x14] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M17405_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M17405_IG19: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 292, prolog size 16, PerfScore 32.58, instruction count 73, allocated bytes for code 292 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
+; Total bytes of code 312, prolog size 16, PerfScore 35.27, instruction count 78, allocated bytes for code 312 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
; ============================================================ Cfi Info:

+16 (+7.14%) : 377.dasm - System.Globalization.NumberFormatInfo:g_GetProviderNonNull|590(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)

@@ -7,21 +7,22 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 5.33) ref -> x0 class-hnd single-def <System.IFormatProvider> -; V01 loc0 [V01,T03] ( 5, 3.25) ref -> x1 class-hnd exact <System.Globalization.CultureInfo>
+; V00 arg0 [V00,T01] ( 9, 4.83) ref -> x0 class-hnd single-def <System.IFormatProvider> +; V01 loc0 [V01,T04] ( 5, 3.50) ref -> x1 class-hnd exact single-def <System.Globalization.CultureInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V04 tmp2 [V04,T01] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V05 tmp3 [V05,T05] ( 5, 2.50) ref -> x2 -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V07 tmp5 [V07,T02] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V08 tmp6 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref single-def -; V10 tmp8 [V10,T07] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V11 tmp9 [V11,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V03 tmp1 [V03,T08] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V04 tmp2 [V04,T06] ( 5, 2.50) ref -> x1 +; V05 tmp3 [V05,T09] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V06 tmp4 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +; V08 tmp6 [V08,T10] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V09 tmp7 [V09,T07] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V13 rat0 [V13,T00] ( 5, 7.50) ref -> x1 "replacement local" +; V14 rat1 [V14,T02] ( 5, 3.75) ref -> x1 "replacement local" +; V15 rat2 [V15,T03] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 0 @@ -33,113 +34,131 @@ G_M57757_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x1, G_M57757_IG07
+ cbz x1, G_M57757_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M57757_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG07 - ;; size=20 bbWeight=0.25 PerfScore 1.38 -G_M57757_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldrb w2, [x0, #0x61] - cbnz w2, G_M57757_IG07
+ beq G_M57757_IG05 + ;; size=20 bbWeight=0.50 PerfScore 2.75 +G_M57757_IG04: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57757_IG05: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M57757_IG09 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldrb w2, [x1, #0x61] + cbnz w2, G_M57757_IG09
ldr x0, [x1, #0x18]
- cbnz x0, G_M57757_IG06
+ cbnz x0, G_M57757_IG08
mov x0, x1 ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M57757_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.CultureInfo:get_NumberFormat():System.Globalization.NumberFormatInfo:this ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57757_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG09
+G_M57757_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M57757_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57757_IG08: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref - ldr x1, [x2] - adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo
+G_M57757_IG10: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1] + adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x1, x3 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG09: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+ cmp x2, x3 + beq G_M57757_IG12 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG12: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M57757_IG22
adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x1]
add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] ldr x2, [x0]
- ; gcrRegs -[x2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG11
+ bne G_M57757_IG14
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M57757_IG10: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.34
-G_M57757_IG11: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG14: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1] ldr x2, [x0] adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG13
+ bne G_M57757_IG16
;; size=20 bbWeight=0.33 PerfScore 1.82
-G_M57757_IG12: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG15: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.33
-G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG16: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=4 bbWeight=0.17 PerfScore 0.17
-G_M57757_IG14: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M57757_IG15: ; bbWeight=0.25, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x2] - adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo - add x1, x1, [LOW RELOC #0xD1FFAB1E] - cmp x0, x1 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG16: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+G_M57757_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M57757_IG20
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57757_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG18: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M57757_IG20 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG20: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbnz x1, G_M57757_IG22 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57757_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - mov x0, x2
+G_M57757_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, x1
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57757_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG23: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 224, prolog size 8, PerfScore 23.77, instruction count 56, allocated bytes for code 224 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
+; Total bytes of code 240, prolog size 8, PerfScore 26.65, instruction count 60, allocated bytes for code 240 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 124 92 27 5 -2,232 +1,580
benchmarks.run_pgo.linux.arm64.checked.mch 8,927 2,282 6,518 127 -54,888 +82,400
benchmarks.run_tiered.linux.arm64.checked.mch 39 35 4 0 -892 +176
coreclr_tests.run.linux.arm64.checked.mch 1,131 433 391 307 -6,388 +186,376
libraries.crossgen2.linux.arm64.checked.mch 1,105 1,095 3 7 -38,612 +12
libraries.pmi.linux.arm64.checked.mch 605 541 43 21 -18,088 +3,120
libraries_tests.run.linux.arm64.Release.mch 8,427 3,132 3,296 1,999 -49,932 +88,780
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 919 759 133 27 -25,756 +11,608
realworld.run.linux.arm64.checked.mch 135 121 8 6 -3,612 +216
smoke_tests.nativeaot.linux.arm64.checked.mch 46 28 14 4 -740 +268
21,458 8,518 10,437 2,503 -201,140 +374,536

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 30,599 2,779 27,820 0 (0.00%) 3,111 (9.23%)
benchmarks.run_pgo.linux.arm64.checked.mch 143,882 61,290 82,592 0 (0.00%) 9,022 (5.90%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,170 48,019 15,151 0 (0.00%) 644 (1.01%)
coreclr_tests.run.linux.arm64.checked.mch 615,532 382,318 233,214 1 (0.00%) 9,744 (1.56%)
libraries.crossgen2.linux.arm64.checked.mch 234,489 15 234,474 0 (0.00%) 7 (0.00%)
libraries.pmi.linux.arm64.checked.mch 267,484 6 267,478 0 (0.00%) 28,261 (9.56%)
libraries_tests.run.linux.arm64.Release.mch 707,715 490,908 216,807 0 (0.00%) 36,451 (4.90%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 264,246 21,599 242,647 0 (0.00%) 40,619 (13.32%)
realworld.run.linux.arm64.checked.mch 28,861 151 28,710 0 (0.00%) 4,448 (13.35%)
smoke_tests.nativeaot.linux.arm64.checked.mch 18,053 7 18,046 0 (0.00%) 980 (5.15%)
2,374,031 1,007,092 1,366,939 1 (0.00%) 133,287 (5.32%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10779100 (overridden on cmd)
Total bytes of diff: 10778448 (overridden on cmd)
Total bytes of delta: -652 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 19354.dasm (36.46 % of base)
         140 : 27296.dasm (7.94 % of base)
          80 : 9436.dasm (3.03 % of base)
          68 : 10219.dasm (16.50 % of base)
          68 : 9165.dasm (15.04 % of base)
          68 : 22688.dasm (14.66 % of base)
          68 : 28837.dasm (17.35 % of base)
          68 : 29061.dasm (15.32 % of base)
          68 : 29266.dasm (14.41 % of base)
          68 : 30435.dasm (10.90 % of base)
          68 : 30930.dasm (11.26 % of base)
          68 : 33079.dasm (10.43 % of base)
          68 : 33384.dasm (7.69 % of base)
          68 : 33466.dasm (7.20 % of base)
          68 : 9597.dasm (2.73 % of base)
          64 : 4458.dasm (2.28 % of base)
          64 : 1644.dasm (2.50 % of base)
          40 : 15216.dasm (4.26 % of base)
          32 : 26796.dasm (1.40 % of base)
          32 : 29435.dasm (1.40 % of base)

Top file improvements (bytes):
        -128 : 4142.dasm (-3.64 % of base)
         -80 : 8700.dasm (-10.15 % of base)
         -80 : 2565.dasm (-1.64 % of base)
         -48 : 5780.dasm (-10.53 % of base)
         -44 : 5746.dasm (-4.60 % of base)
         -44 : 23245.dasm (-16.18 % of base)
         -40 : 6568.dasm (-9.26 % of base)
         -40 : 19518.dasm (-4.81 % of base)
         -40 : 21926.dasm (-8.06 % of base)
         -40 : 20737.dasm (-12.50 % of base)
         -36 : 774.dasm (-15.25 % of base)
         -36 : 23108.dasm (-15.00 % of base)
         -32 : 2092.dasm (-11.59 % of base)
         -28 : 14101.dasm (-2.13 % of base)
         -28 : 6410.dasm (-3.59 % of base)
         -28 : 10199.dasm (-20.59 % of base)
         -28 : 18933.dasm (-21.88 % of base)
         -28 : 2073.dasm (-25.93 % of base)
         -28 : 21385.dasm (-12.73 % of base)
         -28 : 3788.dasm (-46.67 % of base)

64 total files with Code Size differences (44 improved, 20 regressed), 5 unchanged.

Top method regressions (bytes):
         140 (7.94 % of base) : 27296.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
         140 (36.46 % of base) : 19354.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          80 (3.03 % of base) : 9436.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (2.73 % of base) : 9597.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          68 (17.35 % of base) : 28837.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (15.32 % of base) : 29061.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (15.04 % of base) : 9165.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (16.50 % of base) : 10219.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (14.66 % of base) : 22688.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.41 % of base) : 29266.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (7.69 % of base) : 33384.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 33466.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          68 (10.90 % of base) : 30435.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (11.26 % of base) : 30930.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.43 % of base) : 33079.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          64 (2.28 % of base) : 4458.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          64 (2.50 % of base) : 1644.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          40 (4.26 % of base) : 15216.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          32 (1.40 % of base) : 26796.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          32 (1.40 % of base) : 29435.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

Top method improvements (bytes):
        -128 (-3.64 % of base) : 4142.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -80 (-10.15 % of base) : 8700.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (FullOpts)
         -80 (-1.64 % of base) : 2565.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -48 (-10.53 % of base) : 5780.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -44 (-16.18 % of base) : 23245.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-4.60 % of base) : 5746.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -40 (-4.81 % of base) : 19518.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 20737.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 21926.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-9.26 % of base) : 6568.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -36 (-15.25 % of base) : 774.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
         -36 (-15.00 % of base) : 23108.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -32 (-11.59 % of base) : 2092.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (FullOpts)
         -28 (-12.73 % of base) : 21385.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 21262.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -28 (-21.88 % of base) : 18933.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-2.13 % of base) : 14101.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
         -28 (-20.59 % of base) : 10199.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 435.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-6.48 % of base) : 14122.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)

Top method regressions (percentages):
         140 (36.46 % of base) : 19354.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          68 (17.35 % of base) : 28837.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (16.50 % of base) : 10219.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (15.32 % of base) : 29061.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (15.04 % of base) : 9165.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (14.66 % of base) : 22688.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.41 % of base) : 29266.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (11.26 % of base) : 30930.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.90 % of base) : 30435.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (10.43 % of base) : 33079.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
         140 (7.94 % of base) : 27296.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
          68 (7.69 % of base) : 33384.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 33466.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          40 (4.26 % of base) : 15216.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          80 (3.03 % of base) : 9436.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (2.73 % of base) : 9597.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          64 (2.50 % of base) : 1644.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          64 (2.28 % of base) : 4458.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          32 (1.40 % of base) : 26796.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          32 (1.40 % of base) : 29435.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 3788.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 3580.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 435.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 2073.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -24 (-22.22 % of base) : 19002.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -28 (-21.88 % of base) : 18933.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-20.59 % of base) : 10199.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -20 (-20.00 % of base) : 13117.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -20 (-17.86 % of base) : 19728.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -20 (-17.24 % of base) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
         -24 (-16.67 % of base) : 29070.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
         -24 (-16.22 % of base) : 4144.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-16.22 % of base) : 6115.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
         -44 (-16.18 % of base) : 23245.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 4545.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 21262.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -36 (-15.25 % of base) : 774.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (FullOpts)
         -36 (-15.00 % of base) : 23108.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -24 (-14.63 % of base) : 13196.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-14.29 % of base) : 6265.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)


benchmarks.run_pgo.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 67515080 (overridden on cmd)
Total bytes of diff: 67542592 (overridden on cmd)
Total bytes of delta: 27512 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         140 : 110223.dasm (7.87 % of base)
          76 : 81486.dasm (3.32 % of base)
          76 : 52289.dasm (3.33 % of base)
          76 : 67457.dasm (3.33 % of base)
          76 : 70432.dasm (3.33 % of base)
          76 : 113068.dasm (3.33 % of base)
          76 : 59176.dasm (3.33 % of base)
          68 : 113089.dasm (8.63 % of base)
          64 : 133023.dasm (8.04 % of base)
          64 : 149464.dasm (8.04 % of base)
          56 : 101519.dasm (9.40 % of base)
          56 : 144512.dasm (9.40 % of base)
          56 : 145120.dasm (6.93 % of base)
          56 : 149596.dasm (7.00 % of base)
          56 : 152144.dasm (7.00 % of base)
          56 : 152544.dasm (6.93 % of base)
          56 : 88011.dasm (9.40 % of base)
          56 : 146196.dasm (7.00 % of base)
          56 : 150548.dasm (7.14 % of base)
          56 : 124527.dasm (9.40 % of base)

Top file improvements (bytes):
        -396 : 86134.dasm (-8.60 % of base)
         -56 : 96080.dasm (-5.32 % of base)
         -56 : 97251.dasm (-5.43 % of base)
         -48 : 97221.dasm (-14.63 % of base)
         -48 : 97277.dasm (-8.39 % of base)
         -44 : 32040.dasm (-9.91 % of base)
         -44 : 8148.dasm (-9.91 % of base)
         -36 : 85872.dasm (-4.00 % of base)
         -32 : 32028.dasm (-6.35 % of base)
         -28 : 86128.dasm (-9.46 % of base)
         -28 : 14193.dasm (-3.30 % of base)
         -28 : 19381.dasm (-3.30 % of base)
         -28 : 90442.dasm (-21.88 % of base)
         -28 : 12637.dasm (-3.30 % of base)
         -28 : 15805.dasm (-3.30 % of base)
         -28 : 15841.dasm (-3.30 % of base)
         -28 : 19441.dasm (-5.15 % of base)
         -28 : 20925.dasm (-5.15 % of base)
         -28 : 81278.dasm (-8.24 % of base)
         -28 : 9413.dasm (-5.15 % of base)

82 total files with Code Size differences (38 improved, 44 regressed), 20 unchanged.

Top method regressions (bytes):
         140 (7.87 % of base) : 110223.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          76 (3.32 % of base) : 81486.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 52289.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 67457.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 70432.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 113068.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 59176.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          68 (8.63 % of base) : 113089.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          64 (8.04 % of base) : 133023.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          64 (8.04 % of base) : 149464.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          56 (9.40 % of base) : 101519.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 144512.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 88011.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 124527.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 129454.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 31905.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 45816.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 62928.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (6.93 % of base) : 145120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          56 (7.00 % of base) : 149596.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)

Top method improvements (bytes):
        -396 (-8.60 % of base) : 86134.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -56 (-5.43 % of base) : 97251.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:Visit(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Binder):this (Tier1)
         -56 (-5.32 % of base) : 96080.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -48 (-14.63 % of base) : 97221.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -48 (-8.39 % of base) : 97277.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.91 % of base) : 32040.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.91 % of base) : 8148.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -36 (-4.00 % of base) : 85872.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier1)
         -32 (-6.35 % of base) : 32028.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -28 (-9.46 % of base) : 86128.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-8.24 % of base) : 81278.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 9531.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-21.88 % of base) : 90442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -28 (-3.30 % of base) : 14193.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 19381.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 12637.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 15805.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 15841.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 19441.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20925.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)

Top method regressions (percentages):
          52 (11.30 % of base) : 146396.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 100429.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 126617.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 130137.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 54768.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 67293.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 112254.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 101519.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 144512.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 88011.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 124527.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 129454.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 31905.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 45816.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 62928.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          68 (8.63 % of base) : 113089.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          40 (8.55 % of base) : 54145.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          40 (8.55 % of base) : 92828.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          40 (8.47 % of base) : 124104.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          40 (8.47 % of base) : 108988.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 9531.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-21.88 % of base) : 90442.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 81542.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -48 (-14.63 % of base) : 97221.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.64 % of base) : 96477.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-10.71 % of base) : 96868.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.91 % of base) : 32040.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.91 % of base) : 8148.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-9.46 % of base) : 86128.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-9.09 % of base) : 114816.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsDescendantOfIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 109538.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 111724.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
        -396 (-8.60 % of base) : 86134.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -48 (-8.39 % of base) : 97277.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-8.24 % of base) : 81278.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -20 (-6.76 % of base) : 96291.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
         -20 (-6.41 % of base) : 19179.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -32 (-6.35 % of base) : 32028.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -20 (-5.62 % of base) : 64375.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -56 (-5.43 % of base) : 97251.dasm - Microsoft.CodeAnalysis.CSharp.LocalBinderFactory:Visit(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Binder):this (Tier1)


benchmarks.run_tiered.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 23940084 (overridden on cmd)
Total bytes of diff: 23939368 (overridden on cmd)
Total bytes of delta: -716 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 51883.dasm (8.16 % of base)
          12 : 24519.dasm (7.32 % of base)
          12 : 27277.dasm (7.32 % of base)
          12 : 61077.dasm (7.32 % of base)

Top file improvements (bytes):
         -52 : 5584.dasm (-12.75 % of base)
         -44 : 47139.dasm (-16.18 % of base)
         -40 : 38256.dasm (-5.21 % of base)
         -40 : 44414.dasm (-8.06 % of base)
         -40 : 44782.dasm (-12.50 % of base)
         -36 : 47085.dasm (-15.00 % of base)
         -36 : 5816.dasm (-15.25 % of base)
         -32 : 34842.dasm (-11.59 % of base)
         -32 : 45897.dasm (-17.78 % of base)
         -28 : 41493.dasm (-4.27 % of base)
         -28 : 45630.dasm (-21.88 % of base)
         -28 : 57257.dasm (-25.93 % of base)
         -28 : 6115.dasm (-28.00 % of base)
         -28 : 39754.dasm (-12.73 % of base)
         -28 : 43720.dasm (-15.91 % of base)
         -24 : 1603.dasm (-4.51 % of base)
         -24 : 39947.dasm (-17.14 % of base)
         -24 : 45640.dasm (-4.38 % of base)
         -24 : 23743.dasm (-3.31 % of base)
         -24 : 26200.dasm (-5.56 % of base)

39 total files with Code Size differences (35 improved, 4 regressed), 0 unchanged.

Top method regressions (bytes):
         140 (8.16 % of base) : 51883.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 61077.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 24519.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 27277.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

Top method improvements (bytes):
         -52 (-12.75 % of base) : 5584.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -44 (-16.18 % of base) : 47139.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -40 (-5.21 % of base) : 38256.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier1)
         -40 (-12.50 % of base) : 44782.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -40 (-8.06 % of base) : 44414.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -36 (-15.25 % of base) : 5816.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
         -36 (-15.00 % of base) : 47085.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -32 (-11.59 % of base) : 34842.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
         -32 (-17.78 % of base) : 45897.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-4.27 % of base) : 41493.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -28 (-12.73 % of base) : 39754.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 43720.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 6115.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-21.88 % of base) : 45630.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -28 (-25.93 % of base) : 57257.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 44549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 39947.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -24 (-13.04 % of base) : 45279.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -24 (-3.31 % of base) : 23743.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
         -24 (-6.45 % of base) : 47702.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
         140 (8.16 % of base) : 51883.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 61077.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 24519.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 27277.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 6115.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 57257.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -28 (-21.88 % of base) : 45630.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -20 (-20.00 % of base) : 25613.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -32 (-17.78 % of base) : 45897.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -20 (-17.24 % of base) : 6017.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
         -24 (-17.14 % of base) : 39947.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -44 (-16.18 % of base) : 47139.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 43720.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -36 (-15.25 % of base) : 5816.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
         -36 (-15.00 % of base) : 47085.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 44549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-13.04 % of base) : 45279.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -52 (-12.75 % of base) : 5584.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -28 (-12.73 % of base) : 39754.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 44782.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-11.76 % of base) : 30887.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -32 (-11.59 % of base) : 34842.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
         -40 (-8.06 % of base) : 44414.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -16 (-7.84 % of base) : 47558.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)

39 total methods with Code Size differences (35 improved, 4 regressed).


coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 477601936 (overridden on cmd)
Total bytes of diff: 477781924 (overridden on cmd)
Total bytes of delta: 179988 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        8728 : 290866.dasm (42.76 % of base)
        8328 : 289768.dasm (39.33 % of base)
        8312 : 289561.dasm (37.77 % of base)
        8308 : 289801.dasm (38.01 % of base)
        7928 : 290433.dasm (35.03 % of base)
        7708 : 290465.dasm (36.88 % of base)
        7616 : 289670.dasm (32.94 % of base)
        7412 : 291491.dasm (34.60 % of base)
        7400 : 290941.dasm (33.50 % of base)
        7340 : 289736.dasm (32.62 % of base)
        7256 : 291095.dasm (34.04 % of base)
        7236 : 290835.dasm (32.69 % of base)
        7136 : 291323.dasm (28.31 % of base)
        7076 : 289835.dasm (30.20 % of base)
        7048 : 291133.dasm (30.44 % of base)
        6772 : 291686.dasm (29.79 % of base)
        6560 : 290178.dasm (28.37 % of base)
        6560 : 291654.dasm (27.91 % of base)
        6480 : 290897.dasm (28.83 % of base)
        6468 : 289704.dasm (27.66 % of base)

Top file improvements (bytes):
         -80 : 76.dasm (-5.81 % of base)
         -64 : 240684.dasm (-26.23 % of base)
         -64 : 246709.dasm (-38.10 % of base)
         -56 : 487799.dasm (-19.44 % of base)
         -52 : 202294.dasm (-5.06 % of base)
         -52 : 622200.dasm (-1.61 % of base)
         -52 : 68.dasm (-4.30 % of base)
         -52 : 86.dasm (-4.22 % of base)
         -52 : 616608.dasm (-12.75 % of base)
         -48 : 182215.dasm (-21.82 % of base)
         -48 : 482000.dasm (-2.54 % of base)
         -48 : 202320.dasm (-10.53 % of base)
         -44 : 184577.dasm (-13.41 % of base)
         -44 : 184553.dasm (-23.40 % of base)
         -44 : 201158.dasm (-16.18 % of base)
         -44 : 216572.dasm (-2.63 % of base)
         -44 : 184554.dasm (-13.41 % of base)
         -44 : 184575.dasm (-23.40 % of base)
         -40 : 197631.dasm (-4.81 % of base)
         -40 : 199099.dasm (-12.50 % of base)

69 total files with Code Size differences (41 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
        8728 (42.76 % of base) : 290866.dasm - Generated938:CalliTest() (FullOpts)
        8328 (39.33 % of base) : 289768.dasm - Generated906:CalliTest() (FullOpts)
        8312 (37.77 % of base) : 289561.dasm - Generated900:CalliTest() (FullOpts)
        8308 (38.01 % of base) : 289801.dasm - Generated907:CalliTest() (FullOpts)
        7928 (35.03 % of base) : 290433.dasm - Generated925:CalliTest() (FullOpts)
        7708 (36.88 % of base) : 290465.dasm - Generated926:CalliTest() (FullOpts)
        7616 (32.94 % of base) : 289670.dasm - Generated903:CalliTest() (FullOpts)
        7412 (34.60 % of base) : 291491.dasm - Generated957:CalliTest() (FullOpts)
        7400 (33.50 % of base) : 290941.dasm - Generated940:CalliTest() (FullOpts)
        7340 (32.62 % of base) : 289736.dasm - Generated905:CalliTest() (FullOpts)
        7256 (34.04 % of base) : 291095.dasm - Generated945:CalliTest() (FullOpts)
        7236 (32.69 % of base) : 290835.dasm - Generated937:CalliTest() (FullOpts)
        7136 (28.31 % of base) : 291323.dasm - Generated952:CalliTest() (FullOpts)
        7076 (30.20 % of base) : 289835.dasm - Generated908:CalliTest() (FullOpts)
        7048 (30.44 % of base) : 291133.dasm - Generated946:CalliTest() (FullOpts)
        6772 (29.79 % of base) : 291686.dasm - Generated963:CalliTest() (FullOpts)
        6560 (28.37 % of base) : 290178.dasm - Generated918:CalliTest() (FullOpts)
        6560 (27.91 % of base) : 291654.dasm - Generated962:CalliTest() (FullOpts)
        6480 (28.83 % of base) : 290897.dasm - Generated939:CalliTest() (FullOpts)
        6468 (27.66 % of base) : 289704.dasm - Generated904:CalliTest() (FullOpts)

Top method improvements (bytes):
         -80 (-5.81 % of base) : 76.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -64 (-26.23 % of base) : 240684.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -64 (-38.10 % of base) : 246709.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -56 (-19.44 % of base) : 487799.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -52 (-4.30 % of base) : 68.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-4.22 % of base) : 86.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-5.06 % of base) : 202294.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -52 (-12.75 % of base) : 616608.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -52 (-1.61 % of base) : 622200.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -48 (-10.53 % of base) : 202320.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -48 (-2.54 % of base) : 482000.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpression(System.Linq.Expressions.Expression,int):this (Tier1)
         -48 (-21.82 % of base) : 182215.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -44 (-16.18 % of base) : 201158.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-23.40 % of base) : 184575.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 184577.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-23.40 % of base) : 184553.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 184554.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-2.63 % of base) : 216572.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-4.81 % of base) : 197631.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 199099.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)

Top method regressions (percentages):
          60 (300.00 % of base) : 194931.dasm - T:TestEntryPoint():int (FullOpts)
        8728 (42.76 % of base) : 290866.dasm - Generated938:CalliTest() (FullOpts)
        8328 (39.33 % of base) : 289768.dasm - Generated906:CalliTest() (FullOpts)
        8308 (38.01 % of base) : 289801.dasm - Generated907:CalliTest() (FullOpts)
        8312 (37.77 % of base) : 289561.dasm - Generated900:CalliTest() (FullOpts)
        7708 (36.88 % of base) : 290465.dasm - Generated926:CalliTest() (FullOpts)
         280 (36.84 % of base) : 585358.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         140 (36.46 % of base) : 181721.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](long):ComWrappersTests.Common.VtblPtr (FullOpts)
        7928 (35.03 % of base) : 290433.dasm - Generated925:CalliTest() (FullOpts)
        7412 (34.60 % of base) : 291491.dasm - Generated957:CalliTest() (FullOpts)
        7256 (34.04 % of base) : 291095.dasm - Generated945:CalliTest() (FullOpts)
        7400 (33.50 % of base) : 290941.dasm - Generated940:CalliTest() (FullOpts)
        7616 (32.94 % of base) : 289670.dasm - Generated903:CalliTest() (FullOpts)
        7236 (32.69 % of base) : 290835.dasm - Generated937:CalliTest() (FullOpts)
        7340 (32.62 % of base) : 289736.dasm - Generated905:CalliTest() (FullOpts)
        7048 (30.44 % of base) : 291133.dasm - Generated946:CalliTest() (FullOpts)
        7076 (30.20 % of base) : 289835.dasm - Generated908:CalliTest() (FullOpts)
        6772 (29.79 % of base) : 291686.dasm - Generated963:CalliTest() (FullOpts)
        6480 (28.83 % of base) : 290897.dasm - Generated939:CalliTest() (FullOpts)
        6560 (28.37 % of base) : 290178.dasm - Generated918:CalliTest() (FullOpts)

Top method improvements (percentages):
         -24 (-40.00 % of base) : 216194.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -64 (-38.10 % of base) : 246709.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -24 (-28.57 % of base) : 313421.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 312246.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 317649.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -64 (-26.23 % of base) : 240684.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -24 (-24.00 % of base) : 316465.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -44 (-23.40 % of base) : 184575.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-23.40 % of base) : 184553.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -48 (-21.82 % of base) : 182215.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-21.21 % of base) : 313574.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -24 (-20.00 % of base) : 294242.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -20 (-20.00 % of base) : 251961.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -28 (-20.00 % of base) : 311358.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -56 (-19.44 % of base) : 487799.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -28 (-18.92 % of base) : 220523.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -28 (-18.92 % of base) : 248222.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -20 (-17.86 % of base) : 197842.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -32 (-17.78 % of base) : 487167.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-17.50 % of base) : 614169.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)


libraries.crossgen2.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55839492 (overridden on cmd)
Total bytes of diff: 55800892 (overridden on cmd)
Total bytes of delta: -38600 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 193405.dasm (1.09 % of base)
           4 : 11681.dasm (1.09 % of base)
           4 : 196926.dasm (1.09 % of base)

Top file improvements (bytes):
        -384 : 226072.dasm (-15.76 % of base)
        -360 : 226071.dasm (-15.68 % of base)
        -336 : 226069.dasm (-15.58 % of base)
        -320 : 108226.dasm (-13.91 % of base)
        -320 : 177851.dasm (-20.36 % of base)
        -312 : 226067.dasm (-15.48 % of base)
        -288 : 226065.dasm (-15.35 % of base)
        -264 : 226063.dasm (-15.21 % of base)
        -240 : 226061.dasm (-15.04 % of base)
        -216 : 45548.dasm (-17.14 % of base)
        -216 : 45549.dasm (-16.77 % of base)
        -216 : 226059.dasm (-14.84 % of base)
        -192 : 226057.dasm (-14.59 % of base)
        -176 : 41986.dasm (-47.31 % of base)
        -168 : 226055.dasm (-14.29 % of base)
        -156 : 42001.dasm (-40.21 % of base)
        -144 : 225836.dasm (-9.00 % of base)
        -144 : 226053.dasm (-13.90 % of base)
        -140 : 44466.dasm (-14.71 % of base)
        -136 : 226029.dasm (-10.30 % of base)

68 total files with Code Size differences (65 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (1.09 % of base) : 193405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 11681.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 196926.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (bytes):
        -384 (-15.76 % of base) : 226072.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -360 (-15.68 % of base) : 226071.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -336 (-15.58 % of base) : 226069.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -320 (-13.91 % of base) : 108226.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-20.36 % of base) : 177851.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -312 (-15.48 % of base) : 226067.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -288 (-15.35 % of base) : 226065.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -264 (-15.21 % of base) : 226063.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -240 (-15.04 % of base) : 226061.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-14.84 % of base) : 226059.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-17.14 % of base) : 45548.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -216 (-16.77 % of base) : 45549.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -192 (-14.59 % of base) : 226057.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -176 (-47.31 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -168 (-14.29 % of base) : 226055.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -156 (-40.21 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -144 (-13.90 % of base) : 226053.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -144 (-9.00 % of base) : 225836.dasm - RailwaySharp.ErrorHandling.Trial+<>c__13`2[System.__Canon,System.__Canon]:<Collect>b__13_0(RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon]:this (FullOpts)
        -140 (-14.71 % of base) : 44466.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
        -136 (-10.30 % of base) : 226029.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)

Top method regressions (percentages):
           4 (1.09 % of base) : 193405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 11681.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 196926.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (percentages):
        -176 (-47.31 % of base) : 41986.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -156 (-40.21 % of base) : 42001.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -40 (-35.71 % of base) : 225558.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -36 (-34.62 % of base) : 45994.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 45517.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 153971.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-33.33 % of base) : 108290.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 194450.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 12751.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 163816.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -36 (-32.14 % of base) : 205748.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -36 (-32.14 % of base) : 232128.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
         -32 (-30.77 % of base) : 226003.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -32 (-30.77 % of base) : 153993.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -48 (-28.57 % of base) : 153295.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -36 (-28.12 % of base) : 208305.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[System.__Canon]:<RegisterChangeTokenCallback>b__7_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 36317.dasm - System.Buffers.SharedArrayPool`1+<>c[System.__Canon]:<InitializeTlsBucketsAndTrimming>b__11_0(System.Object):ubyte:this (FullOpts)
         -36 (-28.12 % of base) : 214293.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+<>c[System.__Canon]:<ConsumeAsyncIfNecessary>b__18_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214193.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1+<>c[System.__Canon]:<OfferToTargetAsync>b__16_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214349.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__42_0(System.Object):this (FullOpts)


libraries.pmi.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 56495516 (overridden on cmd)
Total bytes of diff: 56480548 (overridden on cmd)
Total bytes of delta: -14968 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 143160.dasm (61.40 % of base)
         140 : 143162.dasm (61.40 % of base)
         140 : 198232.dasm (18.13 % of base)
         140 : 143157.dasm (61.40 % of base)
         140 : 143158.dasm (61.40 % of base)
         140 : 143159.dasm (61.40 % of base)
         140 : 143161.dasm (61.40 % of base)
         140 : 251249.dasm (20.11 % of base)
         140 : 284837.dasm (9.04 % of base)
         132 : 9873.dasm (31.13 % of base)
         132 : 9874.dasm (31.13 % of base)
         132 : 9877.dasm (31.13 % of base)
         132 : 9878.dasm (31.13 % of base)
         132 : 9875.dasm (31.13 % of base)
         132 : 9876.dasm (31.13 % of base)
         116 : 132450.dasm (4.83 % of base)
         116 : 186785.dasm (2.88 % of base)
          72 : 182311.dasm (1.35 % of base)
          72 : 125611.dasm (2.65 % of base)
          64 : 225215.dasm (2.55 % of base)

Top file improvements (bytes):
        -600 : 272037.dasm (-25.17 % of base)
        -320 : 210626.dasm (-16.74 % of base)
        -320 : 110663.dasm (-19.00 % of base)
        -264 : 293032.dasm (-36.46 % of base)
        -220 : 75133.dasm (-8.12 % of base)
        -204 : 29210.dasm (-6.92 % of base)
        -204 : 227449.dasm (-6.92 % of base)
        -192 : 114340.dasm (-6.98 % of base)
        -184 : 46340.dasm (-23.00 % of base)
        -184 : 46347.dasm (-22.22 % of base)
        -168 : 168042.dasm (-8.33 % of base)
        -168 : 168687.dasm (-42.00 % of base)
        -132 : 168689.dasm (-5.91 % of base)
        -120 : 46513.dasm (-18.29 % of base)
        -120 : 46504.dasm (-18.99 % of base)
        -116 : 10131.dasm (-11.07 % of base)
        -116 : 145181.dasm (-2.01 % of base)
        -104 : 180849.dasm (-19.40 % of base)
         -80 : 193969.dasm (-1.67 % of base)
         -72 : 168608.dasm (-34.62 % of base)

78 total files with Code Size differences (53 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
         140 (61.40 % of base) : 143160.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
         140 (61.40 % of base) : 143159.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
         140 (61.40 % of base) : 143162.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
         140 (61.40 % of base) : 143158.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
         140 (61.40 % of base) : 143161.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
         140 (61.40 % of base) : 143157.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
         140 (20.11 % of base) : 251249.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         140 (9.04 % of base) : 284837.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         140 (18.13 % of base) : 198232.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         132 (31.13 % of base) : 9876.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         132 (31.13 % of base) : 9875.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         132 (31.13 % of base) : 9878.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         132 (31.13 % of base) : 9874.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         132 (31.13 % of base) : 9877.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         132 (31.13 % of base) : 9873.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         116 (4.83 % of base) : 132450.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
         116 (2.88 % of base) : 186785.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
          72 (2.65 % of base) : 125611.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          72 (1.35 % of base) : 182311.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
          64 (2.55 % of base) : 225215.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 272037.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -320 (-16.74 % of base) : 210626.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-19.00 % of base) : 110663.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -264 (-36.46 % of base) : 293032.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -220 (-8.12 % of base) : 75133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -204 (-6.92 % of base) : 29210.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -204 (-6.92 % of base) : 227449.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -192 (-6.98 % of base) : 114340.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -184 (-23.00 % of base) : 46340.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -184 (-22.22 % of base) : 46347.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -168 (-8.33 % of base) : 168042.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -168 (-42.00 % of base) : 168687.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -132 (-5.91 % of base) : 168689.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
        -120 (-18.29 % of base) : 46513.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -120 (-18.99 % of base) : 46504.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -116 (-2.01 % of base) : 145181.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
        -116 (-11.07 % of base) : 10131.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
        -104 (-19.40 % of base) : 180849.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -80 (-1.67 % of base) : 193969.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -72 (-13.74 % of base) : 275370.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.__Canon](System.Xml.Serialization.XmlSerializer):System.__Canon:this (FullOpts)

Top method regressions (percentages):
         140 (61.40 % of base) : 143160.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
         140 (61.40 % of base) : 143159.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
         140 (61.40 % of base) : 143162.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
         140 (61.40 % of base) : 143158.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
         140 (61.40 % of base) : 143161.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
         140 (61.40 % of base) : 143157.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
         132 (31.13 % of base) : 9876.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         132 (31.13 % of base) : 9875.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         132 (31.13 % of base) : 9878.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         132 (31.13 % of base) : 9874.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         132 (31.13 % of base) : 9877.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         132 (31.13 % of base) : 9873.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          44 (22.45 % of base) : 243297.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         140 (20.11 % of base) : 251249.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         140 (18.13 % of base) : 198232.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
          44 (12.79 % of base) : 243262.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 243272.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          48 (9.23 % of base) : 242973.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         140 (9.04 % of base) : 284837.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          40 (7.41 % of base) : 249908.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 46063.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 191315.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
        -168 (-42.00 % of base) : 168687.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -264 (-36.46 % of base) : 293032.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
         -72 (-34.62 % of base) : 168608.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 269152.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -24 (-31.58 % of base) : 245720.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 248385.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 185724.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
         -32 (-28.57 % of base) : 10454.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 249709.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 249723.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 142842.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -32 (-27.59 % of base) : 276271.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 193390.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 193399.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
         -24 (-27.27 % of base) : 148005.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 147884.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
         -28 (-26.92 % of base) : 267302.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -28 (-26.92 % of base) : 165879.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)


libraries_tests.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 345952264 (overridden on cmd)
Total bytes of diff: 345991112 (overridden on cmd)
Total bytes of delta: 38848 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         680 : 625502.dasm (5.34 % of base)
         680 : 656511.dasm (5.34 % of base)
         668 : 572754.dasm (9.98 % of base)
         580 : 349965.dasm (4.74 % of base)
         524 : 572239.dasm (4.39 % of base)
         428 : 447909.dasm (12.05 % of base)
         408 : 552315.dasm (3.15 % of base)
         368 : 448808.dasm (13.47 % of base)
         368 : 447963.dasm (14.65 % of base)
         364 : 446008.dasm (12.13 % of base)
         360 : 446461.dasm (9.59 % of base)
         360 : 447117.dasm (15.20 % of base)
         360 : 448028.dasm (15.62 % of base)
         360 : 448137.dasm (14.56 % of base)
         356 : 192089.dasm (2.82 % of base)
         356 : 445990.dasm (14.69 % of base)
         316 : 129763.dasm (2.49 % of base)
         312 : 131629.dasm (2.43 % of base)
         308 : 449531.dasm (38.69 % of base)
         288 : 127379.dasm (2.19 % of base)

Top file improvements (bytes):
        -356 : 176394.dasm (-7.69 % of base)
        -168 : 291528.dasm (-6.10 % of base)
        -152 : 715022.dasm (-7.92 % of base)
        -128 : 621273.dasm (-3.16 % of base)
        -108 : 463171.dasm (-4.95 % of base)
        -108 : 621389.dasm (-1.25 % of base)
        -108 : 663960.dasm (-1.82 % of base)
        -100 : 632968.dasm (-1.17 % of base)
         -92 : 640418.dasm (-1.09 % of base)
         -88 : 577972.dasm (-1.80 % of base)
         -88 : 317003.dasm (-4.65 % of base)
         -80 : 570102.dasm (-4.99 % of base)
         -80 : 626131.dasm (-0.59 % of base)
         -76 : 718545.dasm (-3.02 % of base)
         -72 : 619452.dasm (-0.83 % of base)
         -68 : 404398.dasm (-2.55 % of base)
         -68 : 735138.dasm (-3.41 % of base)
         -64 : 343448.dasm (-21.05 % of base)
         -64 : 727630.dasm (-1.37 % of base)
         -60 : 645584.dasm (-27.78 % of base)

92 total files with Code Size differences (45 improved, 47 regressed), 20 unchanged.

Top method regressions (bytes):
         680 (5.34 % of base) : 625502.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (Tier1)
         680 (5.34 % of base) : 656511.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (Tier1)
         668 (9.98 % of base) : 572754.dasm - System.Security.Cryptography.EcDiffieHellman.Tests.ECDiffieHellmanTests:TestExplicitCurvesKeyAgree(System.Security.Cryptography.Tests.CurveDef) (Tier1)
         580 (4.74 % of base) : 349965.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
         524 (4.39 % of base) : 572239.dasm - System.Security.Cryptography.X509Certificates.Tests.TestDataGenerator:MakeTestChain(System.ReadOnlySpan`1[System.Security.Cryptography.RSA],System.Span`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.String) (Tier1)
         428 (12.05 % of base) : 447909.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         408 (3.15 % of base) : 552315.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         368 (13.47 % of base) : 448808.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (Tier0-FullOpts)
         368 (14.65 % of base) : 447963.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         364 (12.13 % of base) : 446008.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         360 (15.20 % of base) : 447117.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         360 (15.62 % of base) : 448028.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         360 (9.59 % of base) : 446461.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
         360 (14.56 % of base) : 448137.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (Tier0-FullOpts)
         356 (14.69 % of base) : 445990.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         356 (2.82 % of base) : 192089.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         316 (2.49 % of base) : 129763.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         312 (2.43 % of base) : 131629.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         308 (38.69 % of base) : 449531.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
         288 (2.19 % of base) : 127379.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -356 (-7.69 % of base) : 176394.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -168 (-6.10 % of base) : 291528.dasm - System.Dynamic.Utils.TypeUtils:GetBooleanOperator(System.Type,System.String):System.Reflection.MethodInfo (Tier1)
        -152 (-7.92 % of base) : 715022.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (Tier1)
        -128 (-3.16 % of base) : 621273.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -108 (-1.25 % of base) : 621389.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -108 (-1.82 % of base) : 663960.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -108 (-4.95 % of base) : 463171.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
        -100 (-1.17 % of base) : 632968.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Text.Json.Serialization.Tests.Point_3D_Struct]:ReadConstructorArgumentsWithContinuation(byref,byref,System.Text.Json.JsonSerializerOptions):ubyte:this (Tier1)
         -92 (-1.09 % of base) : 640418.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -88 (-1.80 % of base) : 577972.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests:BuildCertificateAndRun(System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Action`2[System.Security.Cryptography.X509Certificates.X509Certificate2,System.DateTimeOffset],ubyte,System.String) (Tier1)
         -88 (-4.65 % of base) : 317003.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -80 (-4.99 % of base) : 570102.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
         -80 (-0.59 % of base) : 626131.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -76 (-3.02 % of base) : 718545.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
         -72 (-0.83 % of base) : 619452.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -68 (-2.55 % of base) : 404398.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -68 (-3.41 % of base) : 735138.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -64 (-21.05 % of base) : 343448.dasm - (dynamicClass):lambda_method189(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -64 (-1.37 % of base) : 727630.dasm - System.Threading.Tasks.Parallel+<>c__DisplayClass43_0`2[int,System.__Canon]:<PartitionerForEachWorker>b__1(byref,long,byref):this (Tier1)
         -60 (-14.29 % of base) : 627389.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)

Top method regressions (percentages):
         180 (67.16 % of base) : 209672.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:GetNewKey(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
         308 (38.69 % of base) : 449531.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
         192 (25.95 % of base) : 449532.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         140 (23.97 % of base) : 569623.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
          88 (20.18 % of base) : 664354.dasm - System.Linq.Expressions.ConditionalExpression:Make(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Type):System.Linq.Expressions.ConditionalExpression (Tier1)
         140 (19.66 % of base) : 569622.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (Tier1)
          24 (18.75 % of base) : 45208.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
          24 (18.75 % of base) : 44383.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          24 (18.75 % of base) : 81385.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          16 (18.18 % of base) : 697696.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_UnderlyingConversions():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]:this (Tier1)
          36 (18.00 % of base) : 621248.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
          60 (17.24 % of base) : 353538.dasm - System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
          24 (16.22 % of base) : 46731.dasm - Microsoft.CodeAnalysis.ParseOptions:op_Inequality(Microsoft.CodeAnalysis.ParseOptions,Microsoft.CodeAnalysis.ParseOptions):ubyte (Tier1)
         128 (15.84 % of base) : 536897.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         360 (15.62 % of base) : 448028.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          20 (15.62 % of base) : 72065.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          20 (15.62 % of base) : 172799.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
         360 (15.20 % of base) : 447117.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         136 (14.91 % of base) : 569624.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Nullable`1[System.Formats.Asn1.Asn1Tag],System.Type,System.Enum):this (Tier1)
         356 (14.69 % of base) : 445990.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 620592.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-46.67 % of base) : 643319.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -24 (-35.29 % of base) : 55361.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
         -56 (-35.00 % of base) : 452370.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
         -48 (-30.77 % of base) : 589649.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -32 (-28.57 % of base) : 133200.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -32 (-28.57 % of base) : 124857.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-28.00 % of base) : 4153.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -60 (-27.78 % of base) : 645584.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (Tier1)
         -40 (-25.00 % of base) : 65865.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -40 (-25.00 % of base) : 93395.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-24.00 % of base) : 329811.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
         -28 (-23.33 % of base) : 655710.dasm - System.Text.Json.Serialization.Tests.StructDictionary`2[System.__Canon,System.Text.Json.JsonElement]:Contains(System.Object):ubyte:this (Tier1)
         -40 (-23.26 % of base) : 713144.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-23.08 % of base) : 66372.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-22.58 % of base) : 124998.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -40 (-22.22 % of base) : 343926.dasm - (dynamicClass):lambda_method323(System.Runtime.CompilerServices.Closure):System.Object (FullOpts)
         -24 (-22.22 % of base) : 645602.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
         -24 (-22.22 % of base) : 645115.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
         -24 (-22.22 % of base) : 645133.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 131109528 (overridden on cmd)
Total bytes of diff: 131095380 (overridden on cmd)
Total bytes of delta: -14148 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         672 : 165874.dasm (17.83 % of base)
         436 : 165822.dasm (12.44 % of base)
         368 : 166330.dasm (13.88 % of base)
         364 : 164941.dasm (12.13 % of base)
         360 : 165140.dasm (9.85 % of base)
         356 : 165934.dasm (14.69 % of base)
         356 : 164931.dasm (14.69 % of base)
         176 : 136600.dasm (9.63 % of base)
         176 : 139749.dasm (12.61 % of base)
         168 : 224846.dasm (7.25 % of base)
         164 : 164882.dasm (2.67 % of base)
         164 : 164883.dasm (3.57 % of base)
         164 : 165570.dasm (2.67 % of base)
         164 : 165571.dasm (3.57 % of base)
         160 : 165896.dasm (2.90 % of base)
         148 : 165746.dasm (3.75 % of base)
         144 : 114649.dasm (10.65 % of base)
         140 : 114644.dasm (22.01 % of base)
         140 : 114628.dasm (20.00 % of base)
         140 : 114646.dasm (21.60 % of base)

Top file improvements (bytes):
        -600 : 62640.dasm (-25.17 % of base)
        -384 : 166141.dasm (-15.79 % of base)
        -352 : 165025.dasm (-12.59 % of base)
        -304 : 166135.dasm (-12.38 % of base)
        -296 : 209970.dasm (-17.05 % of base)
        -244 : 14610.dasm (-17.04 % of base)
        -232 : 2965.dasm (-7.64 % of base)
        -224 : 166137.dasm (-12.25 % of base)
        -224 : 50910.dasm (-8.93 % of base)
        -200 : 9275.dasm (-8.17 % of base)
        -200 : 44759.dasm (-8.17 % of base)
        -196 : 23027.dasm (-7.66 % of base)
        -192 : 11189.dasm (-6.83 % of base)
        -184 : 16258.dasm (-9.43 % of base)
        -184 : 16316.dasm (-9.52 % of base)
        -176 : 166133.dasm (-6.89 % of base)
        -176 : 23051.dasm (-6.01 % of base)
        -160 : 166138.dasm (-8.97 % of base)
        -160 : 193638.dasm (-7.53 % of base)
        -160 : 195007.dasm (-7.53 % of base)

90 total files with Code Size differences (55 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         672 (17.83 % of base) : 165874.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         436 (12.44 % of base) : 165822.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         368 (13.88 % of base) : 166330.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         364 (12.13 % of base) : 164941.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         360 (9.85 % of base) : 165140.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         356 (14.69 % of base) : 164931.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (14.69 % of base) : 165934.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         176 (9.63 % of base) : 136600.dasm - System.Linq.Tests.GroupByTests+<DebuggerAttributesValid_Data>d__62:MoveNext():ubyte:this (FullOpts)
         176 (12.61 % of base) : 139749.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         168 (7.25 % of base) : 224846.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
         164 (3.57 % of base) : 164883.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (3.57 % of base) : 165571.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (2.67 % of base) : 164882.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         164 (2.67 % of base) : 165570.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         160 (2.90 % of base) : 165896.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         148 (3.75 % of base) : 165746.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         144 (10.65 % of base) : 114649.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
         140 (10.80 % of base) : 165488.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderNookAppLocalState:Read2_Color(ubyte):System.Drawing.Color:this (FullOpts)
         140 (19.44 % of base) : 114647.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         140 (17.68 % of base) : 114662.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 62640.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -384 (-15.79 % of base) : 166141.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
        -352 (-12.59 % of base) : 165025.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
        -304 (-12.38 % of base) : 166135.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
        -296 (-17.05 % of base) : 209970.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -244 (-17.04 % of base) : 14610.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
        -232 (-7.64 % of base) : 2965.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -224 (-8.93 % of base) : 50910.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -224 (-12.25 % of base) : 166137.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
        -200 (-8.17 % of base) : 9275.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -200 (-8.17 % of base) : 44759.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -196 (-7.66 % of base) : 23027.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -192 (-6.83 % of base) : 11189.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -184 (-9.43 % of base) : 16258.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -184 (-9.52 % of base) : 16316.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -176 (-6.01 % of base) : 23051.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -176 (-6.89 % of base) : 166133.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
        -160 (-7.53 % of base) : 193638.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
        -160 (-7.53 % of base) : 195007.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
        -160 (-8.97 % of base) : 166138.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)

Top method regressions (percentages):
          48 (92.31 % of base) : 95202.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          40 (43.48 % of base) : 93874.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          40 (43.48 % of base) : 92601.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         140 (39.77 % of base) : 188268.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point](long):System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point (FullOpts)
         140 (23.81 % of base) : 114642.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         140 (23.65 % of base) : 114645.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
         140 (22.88 % of base) : 114666.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
          44 (22.45 % of base) : 179249.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         140 (22.44 % of base) : 114668.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
         140 (22.01 % of base) : 114644.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         140 (21.60 % of base) : 114646.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
         140 (20.00 % of base) : 114628.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         140 (19.44 % of base) : 114647.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         672 (17.83 % of base) : 165874.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         140 (17.68 % of base) : 114662.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
          60 (15.46 % of base) : 209911.dasm - System.Tests.ArrayTests+<>c:<CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException>b__93_0():System.Object:this (FullOpts)
          40 (14.71 % of base) : 140031.dasm - System.Linq.Tests.DistinctTests+<>c__DisplayClass26_0:<DistinctBy_SourceNull_ThrowsArgumentNullException>b__0():System.Object:this (FullOpts)
         356 (14.69 % of base) : 164931.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (14.69 % of base) : 165934.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
          76 (14.07 % of base) : 141413.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 34949.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 140940.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-40.00 % of base) : 30456.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
         -56 (-35.00 % of base) : 164177.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
         -72 (-34.62 % of base) : 165521.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 69334.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 166170.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
         -24 (-31.58 % of base) : 87181.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-31.58 % of base) : 132493.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47977.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 42101.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 42093.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47969.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47974.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42095.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -32 (-28.57 % of base) : 185611.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 73803.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 125640.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 90132.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)
         -60 (-27.78 % of base) : 235397.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)


realworld.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11150480 (overridden on cmd)
Total bytes of diff: 11147084 (overridden on cmd)
Total bytes of delta: -3396 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 16409.dasm (3.07 % of base)
          36 : 13127.dasm (0.80 % of base)
          36 : 2220.dasm (1.57 % of base)
          32 : 115.dasm (1.40 % of base)
          32 : 11745.dasm (1.40 % of base)
          16 : 5233.dasm (4.35 % of base)
           8 : 29280.dasm (0.37 % of base)
           4 : 22602.dasm (0.07 % of base)

Top file improvements (bytes):
        -200 : 20150.dasm (-8.18 % of base)
        -120 : 33207.dasm (-28.30 % of base)
         -64 : 28097.dasm (-6.81 % of base)
         -64 : 32866.dasm (-25.81 % of base)
         -60 : 31356.dasm (-20.55 % of base)
         -60 : 8861.dasm (-32.61 % of base)
         -56 : 10167.dasm (-8.70 % of base)
         -56 : 32843.dasm (-2.52 % of base)
         -56 : 5447.dasm (-22.22 % of base)
         -56 : 7179.dasm (-4.09 % of base)
         -52 : 31635.dasm (-8.28 % of base)
         -44 : 21321.dasm (-3.20 % of base)
         -44 : 30498.dasm (-2.68 % of base)
         -44 : 18368.dasm (-16.18 % of base)
         -40 : 32839.dasm (-17.86 % of base)
         -40 : 32871.dasm (-13.89 % of base)
         -40 : 8415.dasm (-12.50 % of base)
         -40 : 16550.dasm (-4.81 % of base)
         -40 : 20427.dasm (-12.50 % of base)
         -40 : 28667.dasm (-8.06 % of base)

60 total files with Code Size differences (52 improved, 8 regressed), 6 unchanged.

Top method regressions (bytes):
          52 (3.07 % of base) : 16409.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (1.57 % of base) : 2220.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          36 (0.80 % of base) : 13127.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          32 (1.40 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          32 (1.40 % of base) : 11745.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          16 (4.35 % of base) : 5233.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
           8 (0.37 % of base) : 29280.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 22602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (bytes):
        -200 (-8.18 % of base) : 20150.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -120 (-28.30 % of base) : 33207.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -64 (-6.81 % of base) : 28097.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
         -64 (-25.81 % of base) : 32866.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-32.61 % of base) : 8861.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -60 (-20.55 % of base) : 31356.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -56 (-8.70 % of base) : 10167.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
         -56 (-4.09 % of base) : 7179.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -56 (-2.52 % of base) : 32843.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
         -56 (-22.22 % of base) : 5447.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -52 (-8.28 % of base) : 31635.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
         -44 (-3.20 % of base) : 21321.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -44 (-16.18 % of base) : 18368.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-2.68 % of base) : 30498.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-12.50 % of base) : 8415.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -40 (-4.81 % of base) : 16550.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 20427.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 28667.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-13.89 % of base) : 32871.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -40 (-17.86 % of base) : 32839.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)

Top method regressions (percentages):
          16 (4.35 % of base) : 5233.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
          52 (3.07 % of base) : 16409.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (1.57 % of base) : 2220.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          32 (1.40 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          32 (1.40 % of base) : 11745.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          36 (0.80 % of base) : 13127.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
           8 (0.37 % of base) : 29280.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 22602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -60 (-32.61 % of base) : 8861.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -24 (-31.58 % of base) : 31446.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
        -120 (-28.30 % of base) : 33207.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -28 (-28.00 % of base) : 435.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 19005.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -64 (-25.81 % of base) : 32866.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-23.33 % of base) : 10515.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -56 (-22.22 % of base) : 5447.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-21.21 % of base) : 5120.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
         -20 (-20.83 % of base) : 17309.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -60 (-20.55 % of base) : 31356.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -32 (-19.05 % of base) : 33222.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-18.42 % of base) : 10121.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -20 (-17.86 % of base) : 16976.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -40 (-17.86 % of base) : 32839.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-17.50 % of base) : 9761.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
         -20 (-17.24 % of base) : 976.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
         -24 (-17.14 % of base) : 22727.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
         -44 (-16.18 % of base) : 18368.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 30657.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)


smoke_tests.nativeaot.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2568016 (overridden on cmd)
Total bytes of diff: 2567544 (overridden on cmd)
Total bytes of delta: -472 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 1555.dasm (4.79 % of base)
          28 : 1426.dasm (4.79 % of base)
          28 : 1732.dasm (4.79 % of base)
          28 : 2388.dasm (4.79 % of base)
          28 : 839.dasm (4.64 % of base)
          28 : 4504.dasm (4.79 % of base)
          20 : 14963.dasm (6.85 % of base)
          20 : 4114.dasm (5.00 % of base)
          16 : 377.dasm (7.14 % of base)
          12 : 14332.dasm (4.35 % of base)
           8 : 467.dasm (4.00 % of base)
           8 : 5865.dasm (4.17 % of base)
           8 : 7503.dasm (1.36 % of base)
           8 : 7601.dasm (1.30 % of base)

Top file improvements (bytes):
         -60 : 4954.dasm (-22.06 % of base)
         -60 : 556.dasm (-22.39 % of base)
         -56 : 5390.dasm (-18.18 % of base)
         -56 : 3440.dasm (-23.33 % of base)
         -40 : 6940.dasm (-23.26 % of base)
         -28 : 17470.dasm (-23.33 % of base)
         -28 : 18120.dasm (-23.33 % of base)
         -24 : 4412.dasm (-30.00 % of base)
         -24 : 4738.dasm (-28.57 % of base)
         -24 : 8150.dasm (-14.63 % of base)
         -20 : 17414.dasm (-26.32 % of base)
         -20 : 5391.dasm (-14.29 % of base)
         -20 : 6184.dasm (-18.52 % of base)
         -20 : 6192.dasm (-18.52 % of base)
         -20 : 6195.dasm (-18.52 % of base)
         -20 : 7674.dasm (-17.86 % of base)
         -20 : 8171.dasm (-4.76 % of base)
         -20 : 8367.dasm (-5.21 % of base)
         -20 : 8652.dasm (-20.83 % of base)
         -20 : 9167.dasm (-7.35 % of base)

41 total files with Code Size differences (27 improved, 14 regressed), 4 unchanged.

Top method regressions (bytes):
          28 (4.79 % of base) : 1426.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1732.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 839.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1555.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 4504.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[uint](uint,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2388.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          20 (5.00 % of base) : 4114.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
          20 (6.85 % of base) : 14963.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
          16 (7.14 % of base) : 377.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          12 (4.35 % of base) : 14332.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           8 (1.36 % of base) : 7503.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.30 % of base) : 7601.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
           8 (4.17 % of base) : 5865.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           8 (4.00 % of base) : 467.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)

Top method improvements (bytes):
         -60 (-22.06 % of base) : 4954.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -60 (-22.39 % of base) : 556.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -56 (-18.18 % of base) : 5390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -56 (-23.33 % of base) : 3440.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -40 (-23.26 % of base) : 6940.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-23.33 % of base) : 17470.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -28 (-23.33 % of base) : 18120.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -24 (-14.63 % of base) : 8150.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -24 (-30.00 % of base) : 4412.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -24 (-28.57 % of base) : 4738.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -20 (-26.32 % of base) : 17414.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-26.32 % of base) : 18067.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-16.13 % of base) : 17631.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -20 (-16.13 % of base) : 18227.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -20 (-14.29 % of base) : 5391.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
         -20 (-12.82 % of base) : 557.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.GetHashCode(System.Object):int:this (FullOpts)
         -20 (-5.21 % of base) : 8367.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:ConstructFrom(System.Collections.Generic.HashSet`1[System.__Canon]):this (FullOpts)
         -20 (-4.76 % of base) : 8171.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
         -20 (-18.52 % of base) : 6192.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -20 (-20.00 % of base) : 5299.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)

Top method regressions (percentages):
          16 (7.14 % of base) : 377.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          20 (6.85 % of base) : 14963.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
          20 (5.00 % of base) : 4114.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
          28 (4.79 % of base) : 1426.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1732.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1555.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 4504.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[uint](uint,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2388.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 839.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          12 (4.35 % of base) : 14332.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           8 (4.17 % of base) : 5865.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           8 (4.00 % of base) : 467.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (1.36 % of base) : 7503.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.30 % of base) : 7601.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)

Top method improvements (percentages):
         -24 (-30.00 % of base) : 4412.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -24 (-28.57 % of base) : 4738.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -20 (-26.32 % of base) : 17414.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-26.32 % of base) : 18067.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-23.33 % of base) : 17470.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -28 (-23.33 % of base) : 18120.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -56 (-23.33 % of base) : 3440.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -40 (-23.26 % of base) : 6940.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-22.39 % of base) : 556.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -60 (-22.06 % of base) : 4954.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -20 (-20.83 % of base) : 8652.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -20 (-20.00 % of base) : 5299.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 6192.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 6184.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 6195.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -56 (-18.18 % of base) : 5390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -20 (-17.86 % of base) : 7674.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -20 (-16.13 % of base) : 17631.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -20 (-16.13 % of base) : 18227.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -24 (-14.63 % of base) : 8150.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)



linux x64

Diffs are based on 2,382,582 contexts (991,070 MinOpts, 1,391,512 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 135,327 (5.37%)

Overall (+219,372 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 9,116,540 -246
benchmarks.run_pgo.linux.x64.checked.mch 61,759,845 +55,484
benchmarks.run_tiered.linux.x64.checked.mch 20,952,201 -378
coreclr_tests.run.linux.x64.checked.mch 379,875,950 +174,414
libraries.crossgen2.linux.x64.checked.mch 38,724,198 -36,690
libraries.pmi.linux.x64.checked.mch 44,166,644 -10,472
libraries_tests.run.linux.x64.Release.mch 292,392,477 +47,433
librariestestsnotieredcompilation.run.linux.x64.Release.mch 104,936,794 -7,284
realworld.run.linux.x64.checked.mch 9,185,961 -2,304
smoke_tests.nativeaot.linux.x64.checked.mch 3,746,367 -585

FullOpts (+219,372 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 8,817,237 -246
benchmarks.run_pgo.linux.x64.checked.mch 37,959,856 +55,484
benchmarks.run_tiered.linux.x64.checked.mch 3,211,421 -378
coreclr_tests.run.linux.x64.checked.mch 100,121,248 +174,414
libraries.crossgen2.linux.x64.checked.mch 38,723,000 -36,690
libraries.pmi.linux.x64.checked.mch 44,053,787 -10,472
libraries_tests.run.linux.x64.Release.mch 108,632,784 +47,433
librariestestsnotieredcompilation.run.linux.x64.Release.mch 94,319,026 -7,284
realworld.run.linux.x64.checked.mch 8,800,077 -2,304
smoke_tests.nativeaot.linux.x64.checked.mch 3,745,418 -585

Example diffs

benchmarks.run.linux.x64.checked.mch

-23 (-50.00%) : 5497.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -2,54 +2,37 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -57,10 +40,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-36.36%) : 413.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-33 (-30.00%) : 7120.dasm - Sigil.NonGeneric.Emit:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -2,90 +2,70 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> r15 this class-hnd single-def <Sigil.NonGeneric.Emit> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r14 single-def -; V03 arg2 [V03,T04] ( 3, 3 ) int -> r13 single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <Sigil.NonGeneric.Emit> +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def +; V02 arg1 [V02,T02] ( 3, 3 ) byref -> r15 single-def +; V03 arg2 [V03,T03] ( 3, 3 ) int -> r14 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V06 tmp2 [V06,T07] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V07 tmp3 [V07,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V08 tmp4 [V08,T06] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V06 tmp2 [V06,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V07 cse0 [V07,T06] ( 3, 3 ) long -> r13 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M39228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push r14 push r13 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rsi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rsi - mov r14, rdx - ; byrRegs +[r14] - mov r13d, ecx - ;; size=33 bbWeight=1 PerfScore 7.75 -G_M39228_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ push rax + mov qword ptr [rsp], rsi + mov rbx, rdi + ; gcrRegs +[rbx] + mov r15, rdx + ; byrRegs +[r15] + mov r14d, ecx + ;; size=21 bbWeight=1 PerfScore 6.75 +G_M39228_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref + mov r13, qword ptr [rsi+0x38] + mov rdi, qword ptr [r13]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rdx, r14
+ mov rdx, r15
; byrRegs +[rdx]
- mov ecx, r13d
+ mov ecx, r14d
call [<unknown method>]
- ; gcrRegs -[rsi rdi r15] - ; byrRegs -[rdx r14] - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M39228_IG05 - ;; size=38 bbWeight=1 PerfScore 10.50 -G_M39228_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M39228_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M39228_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcrRegs -[rbx rsi rdi] + ; byrRegs -[rdx r15] + ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [r13]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M39228_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M39228_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ; gcr arg pop 0 + nop + ;; size=44 bbWeight=1 PerfScore 12.50 +G_M39228_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r13 pop r14 pop r15
- pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 110, prolog size 21, PerfScore 24.44, instruction count 38, allocated bytes for code 110 (MethodHash=2fd966c3) for method Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
+; Total bytes of code 77, prolog size 12, PerfScore 22.50, instruction count 27, allocated bytes for code 77 (MethodHash=2fd966c3) for method Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -93,14 +73,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+19 (+20.21%) : 9855.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)

@@ -8,65 +8,66 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M34178_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14 + push r13
push rbx
- lea rbp, [rsp+0x10] - ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20] + ;; size=13 bbWeight=1 PerfScore 5.50
G_M34178_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz xor ebx, ebx mov r15d, dword ptr [(reloc)] test r15d, r15d
- jle SHORT G_M34178_IG07 - ;; size=14 bbWeight=1 PerfScore 3.50 -G_M34178_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jle SHORT G_M34178_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=55 bbWeight=1 PerfScore 7.50 +G_M34178_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M34178_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M34178_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M34178_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M34178_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M34178_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M34178_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
; ============================================================ Unwind Info: @@ -74,11 +75,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+19 (+20.21%) : 17351.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)

@@ -8,65 +8,66 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14 + push r13
push rbx
- lea rbp, [rsp+0x10] - ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20] + ;; size=13 bbWeight=1 PerfScore 5.50
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz xor ebx, ebx mov r15d, dword ptr [(reloc)] test r15d, r15d
- jle SHORT G_M36328_IG07 - ;; size=14 bbWeight=1 PerfScore 3.50 -G_M36328_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jle SHORT G_M36328_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=55 bbWeight=1 PerfScore 7.50 +G_M36328_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M36328_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M36328_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M36328_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M36328_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M36328_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
; ============================================================ Unwind Info: @@ -74,11 +75,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+19 (+20.21%) : 14720.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)

@@ -8,65 +8,66 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14 + push r13
push rbx
- lea rbp, [rsp+0x10] - ;; size=9 bbWeight=1 PerfScore 3.50
+ lea rbp, [rsp+0x20] + ;; size=13 bbWeight=1 PerfScore 5.50
G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz xor ebx, ebx mov r15d, dword ptr [(reloc)] test r15d, r15d
- jle SHORT G_M3904_IG07 - ;; size=14 bbWeight=1 PerfScore 3.50 -G_M3904_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jle SHORT G_M3904_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=55 bbWeight=1 PerfScore 7.50 +G_M3904_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M3904_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M3904_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M3904_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M3904_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M3904_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=9 bbWeight=1 PerfScore 3.50
-; Total bytes of code 94, prolog size 9, PerfScore 41.25, instruction count 27, allocated bytes for code 94 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
+; Total bytes of code 113, prolog size 13, PerfScore 34.50, instruction count 31, allocated bytes for code 113 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
; ============================================================ Unwind Info: @@ -74,11 +75,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

benchmarks.run_pgo.linux.x64.checked.mch

-28 (-36.36%) : 7908.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-23 (-21.10%) : 92906.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,99 +8,80 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> rdi this single-def -; V01 TypeCtx [V01,T03] ( 4, 3.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> rdi this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T09] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T07] ( 4, 2.12) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T02] ( 4, 6 ) byref -> r15 single-def "Inlining Arg" -; V09 tmp7 [V09,T04] ( 3, 5 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T10] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T06] ( 2, 3 ) int -> rsi "Inlining Arg" -; V13 tmp11 [V13,T08] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T05] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> rsi single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> rsi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> rax "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M44215_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rsi
+ push rax + lea rbp, [rsp+0x10] + mov qword ptr [rbp-0x10], rsi
mov rbx, rsi
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M44215_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs +[rdi]
- lea r15, bword ptr [rdi+0x08] - ; byrRegs +[r15] - mov esi, dword ptr [rdi] - mov rdi, gword ptr [r15]
+ lea rsi, bword ptr [rdi+0x08] + ; byrRegs +[rsi] + mov eax, dword ptr [rdi] + mov rdi, gword ptr [rsi]
; gcrRegs +[rdi] ; byrRegs -[rdi]
- test rdi, rdi
+ mov rsi, rdi + ; gcrRegs +[rsi] + ; byrRegs -[rsi] + test rsi, rsi
je SHORT G_M44215_IG04
- ;; size=14 bbWeight=1 PerfScore 5.75 -G_M44215_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=8000 {r15}, byref, isz - mov rdi, gword ptr [rdi+0x18] - cmp word ptr [rdi+0x0C], 1
+ ;; size=17 bbWeight=1 PerfScore 6.00 +G_M44215_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + mov rsi, gword ptr [rsi+0x18] + cmp word ptr [rsi+0x0C], 1
jne SHORT G_M44215_IG04
- mov rdi, gword ptr [r15]
+ mov esi, eax + ; gcrRegs -[rsi]
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x50] call [rax+0x18]<unknown method> ; gcrRegs -[rdi] +[rax]
- ; byrRegs -[r15]
jmp SHORT G_M44215_IG05
- ;; size=26 bbWeight=0.50 PerfScore 8.50 -G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref - ; gcrRegs -[rax] - ; byrRegs +[r15] - mov rax, gword ptr [r15]
+ ;; size=25 bbWeight=0.50 PerfScore 7.62 +G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] +[rdi] + mov rax, rdi
; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r15] - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.50 PerfScore 0.12 +G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi]
mov rdi, qword ptr [rbx+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi - je SHORT G_M44215_IG08 - ;; size=15 bbWeight=0.25 PerfScore 2.50 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
mov rsi, rax ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M44215_IG09: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ nop + ;; size=19 bbWeight=1 PerfScore 7.50 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r15
pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 109, prolog size 17, PerfScore 27.44, instruction count 38, allocated bytes for code 109 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 86, prolog size 12, PerfScore 28.25, instruction count 31, allocated bytes for code 86 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -108,12 +89,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-29 (-14.65%) : 30190.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValueSystem.__Canon:System.__Canon (Tier1)

@@ -8,17 +8,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 6, 4.25) long -> rbx single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Random>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Random>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V04 tmp2 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect" -; V09 tmp7 [V09,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V10 tmp8 [V10,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V03 tmp1 [V03,T04] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V04 tmp2 [V04,T05] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> rbx single-def "argument with side effect" +; V06 tmp4 [V06,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V07 tmp5 [V07,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V08 tmp6 [V08,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V09 cse0 [V09,T03] ( 4, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 16 @@ -29,14 +28,13 @@ G_M62619_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 16 lea rbp, [rsp+0x20] mov qword ptr [rbp-0x18], rdi
- mov rbx, rdi - ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M62619_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi]
- mov rdi, qword ptr [rbx+0x38] - mov rdx, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], rdx - jne SHORT G_M62619_IG07
+ mov rbx, qword ptr [rdi+0x38] + mov rdi, 0xD1FFAB1E ; System.String + cmp qword ptr [rbx], rdi + jne SHORT G_M62619_IG04
mov rdi, rsi ; gcrRegs +[rdi] mov esi, 1 @@ -44,47 +42,28 @@ G_M62619_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr mov edx, 50 call [BenchmarkDotNet.Extensions.ValuesGenerator:GenerateRandomString(System.Random,int,int):System.String] ; gcrRegs -[rdi] +[rax]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M62619_IG05 - ;; size=46 bbWeight=1 PerfScore 11.50 -G_M62619_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M62619_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M62619_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M62619_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M62619_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=50 bbWeight=1 PerfScore 13.50 +G_M62619_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx pop r15 pop rbp ret ;; size=9 bbWeight=1 PerfScore 2.75
-G_M62619_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rcx]
+G_M62619_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] mov r15, rax ; gcrRegs +[r15]
- mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE mov rdi, rax ; gcrRegs +[rdi] @@ -113,9 +92,9 @@ G_M62619_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_THROW ; gcrRegs -[rdi r15] int3
- ;; size=97 bbWeight=0 PerfScore 0.00
+ ;; size=93 bbWeight=0 PerfScore 0.00
-; Total bytes of code 198, prolog size 17, PerfScore 21.69, instruction count 53, allocated bytes for code 198 (MethodHash=56d10b64) for method BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
+; Total bytes of code 169, prolog size 17, PerfScore 21.00, instruction count 44, allocated bytes for code 169 (MethodHash=56d10b64) for method BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
; ============================================================ Unwind Info:

+24 (+11.11%) : 157831.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (Tier1)

@@ -10,20 +10,19 @@ ; Final local variable assignments ; ; V00 this [V00,T06] ( 5, 4 ) ref -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8,257.06) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T02] ( 8,257.06) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T09] ( 3, 2.03) ref -> r14 class-hnd single-def <System.__Canon[]> ; V03 loc1 [V03,T08] ( 4, 2.65) ref -> r14 class-hnd single-def <System.__Canon[]> ; V04 loc2 [V04,T07] ( 5, 5.21) int -> r13
-; V05 loc3 [V05,T02] ( 6,255.38) ref -> r12 class-hnd <System.__Canon> -; V06 loc4 [V06,T00] ( 6,422.59) int -> [rbp-0x2C] -; V07 loc5 [V07,T03] ( 5,252.79) ref -> rdi class-hnd <System.__Canon>
+; V05 loc3 [V05,T05] ( 5,171.12) ref -> r12 class-hnd <System.__Canon> +; V06 loc4 [V06,T01] ( 6,422.59) int -> [rbp-0x2C] +; V07 loc5 [V07,T03] ( 5,252.79) ref -> rax class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 2, 0 ) int -> rax "guarded devirt return temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo> -; V13 tmp5 [V13,T05] ( 2,168.53) ref -> rax class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V14 cse0 [V14,T04] ( 3,252.79) long -> rdx "CSE - aggressive"
+; V12 tmp4 [V12,T04] ( 3,252.79) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V13 rat0 [V13,T00] ( 5,631.99) ref -> rsi "replacement local"
; ; Lcl frame size = 8 @@ -72,48 +71,53 @@ G_M50755_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=C00 ; gcrRegs +[rbx r14-r15] xor r13d, r13d cmp dword ptr [r14+0x08], 0
- jle SHORT G_M50755_IG13
+ jle SHORT G_M50755_IG14
;; size=10 bbWeight=0.03 PerfScore 0.12 G_M50755_IG06: ; bbWeight=1.29, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov esi, r13d - mov r12, gword ptr [r14+8*rsi+0x10]
+ mov edi, r13d + mov r12, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[r12] test r12, r12
- je SHORT G_M50755_IG13
+ je SHORT G_M50755_IG14
;; size=13 bbWeight=1.29 PerfScore 4.53 G_M50755_IG07: ; bbWeight=1.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- xor esi, esi
+ xor edi, edi
cmp dword ptr [rbx+0x08], 0
- jle SHORT G_M50755_IG12
+ jle SHORT G_M50755_IG13
;; size=8 bbWeight=1.26 PerfScore 5.38 G_M50755_IG08: ; bbWeight=84.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov edi, esi - mov rdi, gword ptr [rbx+8*rdi+0x10] - ; gcrRegs +[rdi] - mov rdx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo - cmp qword ptr [rdi], rdx - jne SHORT G_M50755_IG15 - mov rax, r12
+ mov esi, edi + mov rax, gword ptr [rbx+8*rsi+0x10]
; gcrRegs +[rax]
- cmp qword ptr [rax], rdx - jne SHORT G_M50755_IG09 - mov rdx, qword ptr [r12+0x50] - cmp rdx, qword ptr [rdi+0x50]
+ mov rsi, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo + cmp qword ptr [rax], rsi + jne SHORT G_M50755_IG18 + mov rsi, r12 + ; gcrRegs +[rsi] + test rsi, rsi
je SHORT G_M50755_IG11
- ;; size=41 bbWeight=84.26 PerfScore 1411.43 -G_M50755_IG09: ; bbWeight=84.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rdi] - inc esi - cmp dword ptr [rbx+0x08], esi - jg SHORT G_M50755_IG08 - ;; size=7 bbWeight=84.26 PerfScore 358.12 -G_M50755_IG10: ; bbWeight=1.29, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r12] - jmp SHORT G_M50755_IG12 - ;; size=2 bbWeight=1.29 PerfScore 2.59 -G_M50755_IG11: ; bbWeight=84.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[r12] - movsxd rsi, esi
+ ;; size=30 bbWeight=84.26 PerfScore 674.12 +G_M50755_IG09: ; bbWeight=42.13, gcrefRegs=D049 {rax rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo + cmp qword ptr [rsi], rcx + je SHORT G_M50755_IG11 + ;; size=15 bbWeight=42.13 PerfScore 179.06 +G_M50755_IG10: ; bbWeight=21.07, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=21.07 PerfScore 5.27 +G_M50755_IG11: ; bbWeight=84.26, gcrefRegs=D049 {rax rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M50755_IG16 + mov rsi, qword ptr [rsi+0x50] + ; gcrRegs -[rsi] + cmp rsi, qword ptr [rax+0x50] + jne SHORT G_M50755_IG16 + ;; size=15 bbWeight=84.26 PerfScore 610.92 +G_M50755_IG12: ; bbWeight=84.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + movsxd rsi, edi
mov rdi, rbx ; gcrRegs +[rdi] mov rdx, r12 @@ -122,12 +126,12 @@ G_M50755_IG11: ; bbWeight=84.26, gcrefRegs=D008 {rbx r12 r14 r15}, byrefR ; gcrRegs -[rdx rdi r12] ; gcr arg pop 0 ;; size=14 bbWeight=84.26 PerfScore 147.46
-G_M50755_IG12: ; bbWeight=1.29, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG13: ; bbWeight=1.29, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r13d cmp dword ptr [r14+0x08], r13d jg SHORT G_M50755_IG06 ;; size=9 bbWeight=1.29 PerfScore 5.50
-G_M50755_IG13: ; bbWeight=0.03, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.03, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] lea rdi, bword ptr [r15+0x08] ; byrRegs +[rdi] @@ -138,7 +142,7 @@ G_M50755_IG13: ; bbWeight=0.03, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; byrRegs -[rdi] nop ;; size=13 bbWeight=0.03 PerfScore 0.06
-G_M50755_IG14: ; bbWeight=0.03, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -148,23 +152,36 @@ G_M50755_IG14: ; bbWeight=0.03, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.03 PerfScore 0.12
-G_M50755_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rdi r12 r14-r15] - mov dword ptr [rbp-0x2C], esi
+G_M50755_IG16: ; bbWeight=84.26, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx r12 r14-r15] + inc edi + cmp dword ptr [rbx+0x08], edi + jg SHORT G_M50755_IG08 + ;; size=7 bbWeight=84.26 PerfScore 358.12 +G_M50755_IG17: ; bbWeight=1.29, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r12] + jmp SHORT G_M50755_IG13 + ;; size=2 bbWeight=1.29 PerfScore 2.59 +G_M50755_IG18: ; bbWeight=0, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rax r12] + mov dword ptr [rbp-0x2C], edi + mov rdi, rax + ; gcrRegs +[rdi]
mov rsi, r12 ; gcrRegs +[rsi]
- mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax] + ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48] call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0 test eax, eax
- mov esi, dword ptr [rbp-0x2C] - jne SHORT G_M50755_IG11 - jmp SHORT G_M50755_IG09 - ;; size=25 bbWeight=0 PerfScore 0.00
+ mov edi, dword ptr [rbp-0x2C] + jne SHORT G_M50755_IG12 + jmp SHORT G_M50755_IG16 + ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 216, prolog size 22, PerfScore 1952.64, instruction count 78, allocated bytes for code 216 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 240, prolog size 22, PerfScore 2010.57, instruction count 85, allocated bytes for code 240 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================ Unwind Info:

+43 (+15.52%) : 63078.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)

@@ -9,32 +9,31 @@ ; 5 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) byref -> rdi this single-def
+; V00 this [V00,T05] ( 3, 3 ) byref -> rdi this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 arg1 [V02,T00] ( 11, 18.10) ref -> rbx class-hnd single-def <System.__Canon> -; V03 loc0 [V03,T10] ( 4, 2.81) ref -> r15 class-hnd exact single-def <<unknown class>> -; V04 loc1 [V04,T05] ( 5, 4.05) int -> rdx -; V05 loc2 [V05,T11] ( 3, 2.81) ref -> r13 class-hnd single-def <<unknown class>> -; V06 loc3 [V06,T04] ( 10, 4.52) int -> r14
+; V02 arg1 [V02,T04] ( 7, 3.19) ref -> rbx class-hnd single-def <System.__Canon> +; V03 loc0 [V03,T11] ( 4, 2.81) ref -> r15 class-hnd exact single-def <<unknown class>> +; V04 loc1 [V04,T07] ( 5, 4.05) int -> rdx +; V05 loc2 [V05,T12] ( 3, 2.81) ref -> r13 class-hnd single-def <<unknown class>> +; V06 loc3 [V06,T06] ( 10, 21.67) int -> [rbp-0x2C]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T08] ( 6, 3.14) ref -> rdi class-hnd <System.__Canon>
+; V08 loc5 [V08,T09] ( 6, 3.14) ref -> rdi class-hnd <System.__Canon>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T02] ( 3, 0.76) int -> rax "guarded devirt return temp"
+; V10 tmp1 [V10,T02] ( 4, 0.76) int -> rax "guarded devirt return temp"
; V11 tmp2 [V11,T01] ( 5, 13.71) ref -> rdi class-hnd exact "guarded devirt this exact temp" <System.String>
-; V12 tmp3 [V12,T12] ( 4, 2.43) int -> rax "Inline return value spill temp" -;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V14 tmp5 [V14,T13] ( 3, 2.02) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.String> -;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V16 tmp7 [V16,T06] ( 2, 3.05) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String> -; V17 tmp8 [V17,T14] ( 2, 1.52) byref -> rax "impAppendStmt"
+; V12 tmp3 [V12,T13] ( 4, 2.43) int -> rax "Inline return value spill temp" +; V13 tmp4 [V13,T14] ( 3, 2.43) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V14 tmp5 [V14,T00] ( 4, 15.62) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String> +; V15 tmp6 [V15,T15] ( 2, 1.52) byref -> rax "impAppendStmt" +;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V23 tmp14 [V23,T15] ( 3, 0 ) ref -> rax single-def "arr expr" -; V24 cse0 [V24,T07] ( 5, 3.29) int -> r12 "CSE - moderate" -; V25 cse1 [V25,T09] ( 5, 3.10) long -> registers multi-def "CSE - moderate"
+; V21 tmp12 [V21,T16] ( 3, 0 ) ref -> rax single-def "arr expr" +; V22 cse0 [V22,T10] ( 3, 3.14) ref -> r14 "CSE - moderate" +; V23 cse1 [V23,T08] ( 5, 9 ) int -> r12 "CSE - moderate" +; V24 rat0 [V24,T03] ( 5, 6.07) ref -> r14 "replacement local"
; ; Lcl frame size = 8 @@ -50,109 +49,40 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdx ; gcrRegs +[rbx] ;; size=19 bbWeight=1 PerfScore 7.75
-G_M33817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M33817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
; byrRegs +[rdi] mov r15, gword ptr [rdi] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M33817_IG06 - ;; size=8 bbWeight=1 PerfScore 3.25 -G_M33817_IG03: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ je G_M33817_IG13 + ;; size=12 bbWeight=1 PerfScore 3.25 +G_M33817_IG03: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- mov rdi, rbx - ; gcrRegs +[rdi] - test rdi, rdi - je G_M33817_IG18 - ;; size=12 bbWeight=0.81 PerfScore 1.21 -G_M33817_IG04: ; bbWeight=0.40, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref - mov r14, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], r14 - jne G_M33817_IG18 - ;; size=19 bbWeight=0.40 PerfScore 1.72 -G_M33817_IG05: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - mov rdi, rbx - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - jmp SHORT G_M33817_IG16 - ;; size=11 bbWeight=0.81 PerfScore 4.25 -G_M33817_IG06: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r15] - xor rax, rax - ; gcrRegs +[rax] - ;; size=2 bbWeight=0.19 PerfScore 0.05 -G_M33817_IG07: ; bbWeight=0.19, epilog, nogc, extend - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0.19 PerfScore 0.81 -G_M33817_IG08: ; bbWeight=1.52, gcVars=0000000000000000 {}, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rbx rdi r13 r15] - mov rsi, rbx - ; gcrRegs +[rsi] - cmp qword ptr [rsi], rdx - jne SHORT G_M33817_IG12 - ;; size=8 bbWeight=1.52 PerfScore 6.48 -G_M33817_IG09: ; bbWeight=12.19, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov edx, dword ptr [rdi+0x08] - cmp edx, dword ptr [rbx+0x08] - jne SHORT G_M33817_IG12 - ;; size=8 bbWeight=12.19 PerfScore 73.14 -G_M33817_IG10: ; bbWeight=0.38, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref - lea rax, bword ptr [rdi+0x0C] - ; byrRegs +[rax] - mov edx, dword ptr [rdi+0x08] - add edx, edx - lea rsi, bword ptr [rbx+0x0C] - ; byrRegs +[rsi] - mov rdi, rax - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - call [<unknown method>] - ; byrRegs -[rax rsi rdi] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.38 PerfScore 2.48 -G_M33817_IG11: ; bbWeight=0.38, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - test eax, eax - jne SHORT G_M33817_IG20 - ;; size=4 bbWeight=0.38 PerfScore 0.48 -G_M33817_IG12: ; bbWeight=0.38, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - inc r14d - cmp r12d, r14d - jle SHORT G_M33817_IG15 - ;; size=8 bbWeight=0.38 PerfScore 0.57 -G_M33817_IG13: ; bbWeight=1.19, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - cmp r14d, r12d - jae SHORT G_M33817_IG17 - mov edx, r14d - mov rdi, gword ptr [r13+8*rdx+0x10] - ; gcrRegs +[rdi] - test rdi, rdi
+ mov r14, rbx + ; gcrRegs +[r14] + test r14, r14
je SHORT G_M33817_IG06
- ;; size=18 bbWeight=1.19 PerfScore 5.65 -G_M33817_IG14: ; bbWeight=0.38, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], rdx - jne SHORT G_M33817_IG19 - cmp rdi, rbx - je SHORT G_M33817_IG20 - jmp SHORT G_M33817_IG08 - ;; size=22 bbWeight=0.38 PerfScore 2.86 -G_M33817_IG15: ; bbWeight=0.10, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.81 PerfScore 1.21 +G_M33817_IG04: ; bbWeight=0.40, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, 0xD1FFAB1E ; System.String + cmp qword ptr [r14], rdi + je SHORT G_M33817_IG06 + ;; size=15 bbWeight=0.40 PerfScore 1.72 +G_M33817_IG05: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14] + xor r14, r14 + ; gcrRegs +[r14] + ;; size=3 bbWeight=0.20 PerfScore 0.05 +G_M33817_IG06: ; bbWeight=0.81, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + mov rdi, r14 + ; gcrRegs +[rdi] + test rdi, rdi + je G_M33817_IG19 + call [<unknown method>]
; gcrRegs -[rdi]
- sub r14d, r12d - jmp SHORT G_M33817_IG13 - ;; size=5 bbWeight=0.10 PerfScore 0.21 -G_M33817_IG16: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r13]
+ ; gcr arg pop 0 + ;; size=18 bbWeight=0.81 PerfScore 3.64 +G_M33817_IG07: ; bbWeight=0.81, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov edx, eax not eax test edx, edx @@ -163,16 +93,95 @@ G_M33817_IG16: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov eax, edx cdq idiv edx:eax, r12d
- mov r14d, edx - jmp SHORT G_M33817_IG13 - ;; size=28 bbWeight=0.81 PerfScore 26.71 -G_M33817_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r13 r15]
+ ;; size=23 bbWeight=0.81 PerfScore 24.89 +G_M33817_IG08: ; bbWeight=1.19, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + cmp edx, r12d + jae G_M33817_IG18 + mov esi, edx + mov rdi, gword ptr [r13+8*rsi+0x10] + ; gcrRegs +[rdi] + test rdi, rdi + je SHORT G_M33817_IG13 + ;; size=21 bbWeight=1.19 PerfScore 5.65 +G_M33817_IG09: ; bbWeight=0.38, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref + mov rsi, 0xD1FFAB1E ; System.String + cmp qword ptr [rdi], rsi + jne G_M33817_IG20 + cmp rdi, rbx + je G_M33817_IG21 + ;; size=28 bbWeight=0.38 PerfScore 2.10 +G_M33817_IG10: ; bbWeight=1.52, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, r14 + ; gcrRegs +[rsi] + test rsi, rsi + jne SHORT G_M33817_IG15 + ;; size=8 bbWeight=1.52 PerfScore 2.29 +G_M33817_IG11: ; bbWeight=6.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi rdi] + inc edx + mov dword ptr [rbp-0x2C], edx + cmp r12d, edx + mov edx, dword ptr [rbp-0x2C] + jg SHORT G_M33817_IG08 + ;; size=13 bbWeight=6.10 PerfScore 21.33 +G_M33817_IG12: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + sub edx, r12d + jmp SHORT G_M33817_IG08 + ;; size=5 bbWeight=0.10 PerfScore 0.21 +G_M33817_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r13-r15] + xor rax, rax + ; gcrRegs +[rax] + ;; size=2 bbWeight=0.19 PerfScore 0.05 +G_M33817_IG14: ; bbWeight=0.19, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.19 PerfScore 0.81 +G_M33817_IG15: ; bbWeight=12.19, gcVars=0000000000000000 {}, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] +[rbx rsi rdi r13-r15] + mov eax, dword ptr [rdi+0x08]
...

+43 (+15.52%) : 73612.dasm - System.Reflection.CerHashtable`2[System.Canon,System.Canon]:getItem(System.Canon):System._Canon:this (Tier1)

@@ -9,32 +9,31 @@ ; 5 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) byref -> rdi this single-def
+; V00 this [V00,T05] ( 3, 3 ) byref -> rdi this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 arg1 [V02,T00] ( 11, 18.10) ref -> rbx class-hnd single-def <System.__Canon> -; V03 loc0 [V03,T10] ( 4, 2.81) ref -> r15 class-hnd exact single-def <<unknown class>> -; V04 loc1 [V04,T05] ( 5, 4.05) int -> rdx -; V05 loc2 [V05,T11] ( 3, 2.81) ref -> r13 class-hnd single-def <<unknown class>> -; V06 loc3 [V06,T04] ( 10, 4.52) int -> r14
+; V02 arg1 [V02,T04] ( 7, 3.19) ref -> rbx class-hnd single-def <System.__Canon> +; V03 loc0 [V03,T11] ( 4, 2.81) ref -> r15 class-hnd exact single-def <<unknown class>> +; V04 loc1 [V04,T07] ( 5, 4.05) int -> rdx +; V05 loc2 [V05,T12] ( 3, 2.81) ref -> r13 class-hnd single-def <<unknown class>> +; V06 loc3 [V06,T06] ( 10, 21.67) int -> [rbp-0x2C]
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T08] ( 6, 3.14) ref -> rdi class-hnd <System.__Canon>
+; V08 loc5 [V08,T09] ( 6, 3.14) ref -> rdi class-hnd <System.__Canon>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T02] ( 3, 0.76) int -> rax "guarded devirt return temp"
+; V10 tmp1 [V10,T02] ( 4, 0.76) int -> rax "guarded devirt return temp"
; V11 tmp2 [V11,T01] ( 5, 13.71) ref -> rdi class-hnd exact "guarded devirt this exact temp" <System.String>
-; V12 tmp3 [V12,T12] ( 4, 2.43) int -> rax "Inline return value spill temp" -;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V14 tmp5 [V14,T13] ( 3, 2.02) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.String> -;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V16 tmp7 [V16,T06] ( 2, 3.05) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String> -; V17 tmp8 [V17,T14] ( 2, 1.52) byref -> rax "impAppendStmt"
+; V12 tmp3 [V12,T13] ( 4, 2.43) int -> rax "Inline return value spill temp" +; V13 tmp4 [V13,T14] ( 3, 2.43) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V14 tmp5 [V14,T00] ( 4, 15.62) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String> +; V15 tmp6 [V15,T15] ( 2, 1.52) byref -> rax "impAppendStmt" +;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V23 tmp14 [V23,T15] ( 3, 0 ) ref -> rax single-def "arr expr" -; V24 cse0 [V24,T07] ( 5, 3.29) int -> r12 "CSE - moderate" -; V25 cse1 [V25,T09] ( 5, 3.10) long -> registers multi-def "CSE - moderate"
+; V21 tmp12 [V21,T16] ( 3, 0 ) ref -> rax single-def "arr expr" +; V22 cse0 [V22,T10] ( 3, 3.14) ref -> r14 "CSE - moderate" +; V23 cse1 [V23,T08] ( 5, 9 ) int -> r12 "CSE - moderate" +; V24 rat0 [V24,T03] ( 5, 6.07) ref -> r14 "replacement local"
; ; Lcl frame size = 8 @@ -50,109 +49,40 @@ G_M33817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdx ; gcrRegs +[rbx] ;; size=19 bbWeight=1 PerfScore 7.75
-G_M33817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M33817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref
; byrRegs +[rdi] mov r15, gword ptr [rdi] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M33817_IG06 - ;; size=8 bbWeight=1 PerfScore 3.25 -G_M33817_IG03: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ je G_M33817_IG13 + ;; size=12 bbWeight=1 PerfScore 3.25 +G_M33817_IG03: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- mov rdi, rbx - ; gcrRegs +[rdi] - test rdi, rdi - je G_M33817_IG18 - ;; size=12 bbWeight=0.81 PerfScore 1.21 -G_M33817_IG04: ; bbWeight=0.40, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref - mov r14, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], r14 - jne G_M33817_IG18 - ;; size=19 bbWeight=0.40 PerfScore 1.72 -G_M33817_IG05: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - mov rdi, rbx - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - jmp SHORT G_M33817_IG16 - ;; size=11 bbWeight=0.81 PerfScore 4.25 -G_M33817_IG06: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r15] - xor rax, rax - ; gcrRegs +[rax] - ;; size=2 bbWeight=0.19 PerfScore 0.05 -G_M33817_IG07: ; bbWeight=0.19, epilog, nogc, extend - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0.19 PerfScore 0.81 -G_M33817_IG08: ; bbWeight=1.52, gcVars=0000000000000000 {}, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rbx rdi r13 r15] - mov rsi, rbx - ; gcrRegs +[rsi] - cmp qword ptr [rsi], rdx - jne SHORT G_M33817_IG12 - ;; size=8 bbWeight=1.52 PerfScore 6.48 -G_M33817_IG09: ; bbWeight=12.19, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov edx, dword ptr [rdi+0x08] - cmp edx, dword ptr [rbx+0x08] - jne SHORT G_M33817_IG12 - ;; size=8 bbWeight=12.19 PerfScore 73.14 -G_M33817_IG10: ; bbWeight=0.38, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref - lea rax, bword ptr [rdi+0x0C] - ; byrRegs +[rax] - mov edx, dword ptr [rdi+0x08] - add edx, edx - lea rsi, bword ptr [rbx+0x0C] - ; byrRegs +[rsi] - mov rdi, rax - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - call [<unknown method>] - ; byrRegs -[rax rsi rdi] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.38 PerfScore 2.48 -G_M33817_IG11: ; bbWeight=0.38, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - test eax, eax - jne SHORT G_M33817_IG20 - ;; size=4 bbWeight=0.38 PerfScore 0.48 -G_M33817_IG12: ; bbWeight=0.38, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - inc r14d - cmp r12d, r14d - jle SHORT G_M33817_IG15 - ;; size=8 bbWeight=0.38 PerfScore 0.57 -G_M33817_IG13: ; bbWeight=1.19, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz - cmp r14d, r12d - jae SHORT G_M33817_IG17 - mov edx, r14d - mov rdi, gword ptr [r13+8*rdx+0x10] - ; gcrRegs +[rdi] - test rdi, rdi
+ mov r14, rbx + ; gcrRegs +[r14] + test r14, r14
je SHORT G_M33817_IG06
- ;; size=18 bbWeight=1.19 PerfScore 5.65 -G_M33817_IG14: ; bbWeight=0.38, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], rdx - jne SHORT G_M33817_IG19 - cmp rdi, rbx - je SHORT G_M33817_IG20 - jmp SHORT G_M33817_IG08 - ;; size=22 bbWeight=0.38 PerfScore 2.86 -G_M33817_IG15: ; bbWeight=0.10, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.81 PerfScore 1.21 +G_M33817_IG04: ; bbWeight=0.40, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, 0xD1FFAB1E ; System.String + cmp qword ptr [r14], rdi + je SHORT G_M33817_IG06 + ;; size=15 bbWeight=0.40 PerfScore 1.72 +G_M33817_IG05: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14] + xor r14, r14 + ; gcrRegs +[r14] + ;; size=3 bbWeight=0.20 PerfScore 0.05 +G_M33817_IG06: ; bbWeight=0.81, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + mov rdi, r14 + ; gcrRegs +[rdi] + test rdi, rdi + je G_M33817_IG19 + call [<unknown method>]
; gcrRegs -[rdi]
- sub r14d, r12d - jmp SHORT G_M33817_IG13 - ;; size=5 bbWeight=0.10 PerfScore 0.21 -G_M33817_IG16: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r13]
+ ; gcr arg pop 0 + ;; size=18 bbWeight=0.81 PerfScore 3.64 +G_M33817_IG07: ; bbWeight=0.81, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov edx, eax not eax test edx, edx @@ -163,16 +93,95 @@ G_M33817_IG16: ; bbWeight=0.81, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov eax, edx cdq idiv edx:eax, r12d
- mov r14d, edx - jmp SHORT G_M33817_IG13 - ;; size=28 bbWeight=0.81 PerfScore 26.71 -G_M33817_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r13 r15]
+ ;; size=23 bbWeight=0.81 PerfScore 24.89 +G_M33817_IG08: ; bbWeight=1.19, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + cmp edx, r12d + jae G_M33817_IG18 + mov esi, edx + mov rdi, gword ptr [r13+8*rsi+0x10] + ; gcrRegs +[rdi] + test rdi, rdi + je SHORT G_M33817_IG13 + ;; size=21 bbWeight=1.19 PerfScore 5.65 +G_M33817_IG09: ; bbWeight=0.38, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref + mov rsi, 0xD1FFAB1E ; System.String + cmp qword ptr [rdi], rsi + jne G_M33817_IG20 + cmp rdi, rbx + je G_M33817_IG21 + ;; size=28 bbWeight=0.38 PerfScore 2.10 +G_M33817_IG10: ; bbWeight=1.52, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, r14 + ; gcrRegs +[rsi] + test rsi, rsi + jne SHORT G_M33817_IG15 + ;; size=8 bbWeight=1.52 PerfScore 2.29 +G_M33817_IG11: ; bbWeight=6.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi rdi] + inc edx + mov dword ptr [rbp-0x2C], edx + cmp r12d, edx + mov edx, dword ptr [rbp-0x2C] + jg SHORT G_M33817_IG08 + ;; size=13 bbWeight=6.10 PerfScore 21.33 +G_M33817_IG12: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + sub edx, r12d + jmp SHORT G_M33817_IG08 + ;; size=5 bbWeight=0.10 PerfScore 0.21 +G_M33817_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r13-r15] + xor rax, rax + ; gcrRegs +[rax] + ;; size=2 bbWeight=0.19 PerfScore 0.05 +G_M33817_IG14: ; bbWeight=0.19, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.19 PerfScore 0.81 +G_M33817_IG15: ; bbWeight=12.19, gcVars=0000000000000000 {}, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] +[rbx rsi rdi r13-r15] + mov eax, dword ptr [rdi+0x08]
...

benchmarks.run_tiered.linux.x64.checked.mch

-28 (-36.36%) : 3802.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-21 (-29.58%) : 24544.dasm - System.Threading.AsyncLocal`1[System.Canon]:get_Value():System.Canon:this (Tier1)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> rbx this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]> -; V01 loc0 [V01,T02] ( 3, 2.12) ref -> rax class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Threading.AsyncLocal`1[System.__Canon]> +; V01 loc0 [V01,T01] ( 2, 2 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M1970_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M1970_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M1970_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] call [System.Threading.ExecutionContext:GetLocalValue(System.Threading.IAsyncLocal):System.Object] ; gcrRegs -[rdi] +[rax]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M1970_IG05 - ;; size=17 bbWeight=1 PerfScore 4.75 -G_M1970_IG03: ; bbWeight=0.25, gcrefRegs=000B {rax rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcr arg pop 0 + mov rsi, rax + ; gcrRegs +[rsi]
mov rdi, qword ptr [rbx] mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi]
- cmp qword ptr [rcx], rdi - je SHORT G_M1970_IG05 - ;; size=18 bbWeight=0.25 PerfScore 3.00 -G_M1970_IG04: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - mov rsi, rax - ; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M1970_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M1970_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=31 bbWeight=1 PerfScore 12.75 +G_M1970_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 71, prolog size 12, PerfScore 15.19, instruction count 25, allocated bytes for code 71 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
+; Total bytes of code 50, prolog size 10, PerfScore 17.00, instruction count 16, allocated bytes for code 50 (MethodHash=11a2f84d) for method System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-25 (-26.60%) : 61207.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> r15 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> r15 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -24,50 +23,31 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 16 lea rbp, [rsp+0x20] mov qword ptr [rbp-0x18], rsi
- mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rsi - ;; size=23 bbWeight=1 PerfScore 5.25 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ mov rbx, rdi + ; gcrRegs +[rbx] + ;; size=20 bbWeight=1 PerfScore 5.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov r15, qword ptr [rsi+0x38] + mov rdi, qword ptr [r15]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] mov rsi, rax ; gcrRegs +[rsi]
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax] mov rax, qword ptr [rax+0x70] call [rax+0x10]<unknown method>
- ; gcrRegs -[rsi rdi r15] +[rax] - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M60617_IG05 - ;; size=36 bbWeight=1 PerfScore 14.00 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M60617_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcrRegs -[rbx rsi rdi] +[rax]
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [r15]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx pop r15 @@ -75,7 +55,7 @@ G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend ret ;; size=9 bbWeight=1 PerfScore 2.75
-; Total bytes of code 94, prolog size 17, PerfScore 24.44, instruction count 32, allocated bytes for code 94 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 69, prolog size 17, PerfScore 23.75, instruction count 24, allocated bytes for code 69 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================ Unwind Info:

+25 (+21.93%) : 31195.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

@@ -9,68 +9,69 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 16 - mov qword ptr [rsp+0x58], r15
+ sub rsp, 32 + mov qword ptr [rsp+0x68], r15 + mov qword ptr [rsp+0x60], r14 + mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov r15d, dword ptr [(reloc)] cmp ebx, r15d
- jge SHORT G_M3904_IG07 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M3904_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jge SHORT G_M3904_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.25 +G_M3904_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M3904_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M3904_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M3904_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M3904_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M3904_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
add rsp, 80 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 114, prolog size 27, PerfScore 45.50, instruction count 30, allocated bytes for code 114 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 139, prolog size 37, PerfScore 38.75, instruction count 34, allocated bytes for code 139 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -78,16 +79,20 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x13 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D + CountOfUnwindCodes: 12
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14) + Scaled Small Offset: 12 * 8 = 96 = 0x00060 + CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15) + Scaled Small Offset: 13 * 8 = 104 = 0x00068 + CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+25 (+21.93%) : 34724.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)

@@ -9,68 +9,69 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 16 - mov qword ptr [rsp+0x58], r15
+ sub rsp, 32 + mov qword ptr [rsp+0x68], r15 + mov qword ptr [rsp+0x60], r14 + mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov r15d, dword ptr [(reloc)] cmp ebx, r15d
- jge SHORT G_M36328_IG07 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M36328_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jge SHORT G_M36328_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.25 +G_M36328_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M36328_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M36328_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M36328_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M36328_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M36328_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
add rsp, 80 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 114, prolog size 27, PerfScore 45.50, instruction count 30, allocated bytes for code 114 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
+; Total bytes of code 139, prolog size 37, PerfScore 38.75, instruction count 34, allocated bytes for code 139 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -78,16 +79,20 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x13 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D + CountOfUnwindCodes: 12
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14) + Scaled Small Offset: 12 * 8 = 96 = 0x00060 + CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15) + Scaled Small Offset: 13 * 8 = 104 = 0x00068 + CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+25 (+21.93%) : 61124.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

@@ -9,68 +9,69 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rsi "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> r15 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> r14 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> r13 hoist "CSE - aggressive"
; ; Lcl frame size = 0 G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG mov rax, qword ptr [rbp] push rax
- sub rsp, 16 - mov qword ptr [rsp+0x58], r15
+ sub rsp, 32 + mov qword ptr [rsp+0x68], r15 + mov qword ptr [rsp+0x60], r14 + mov qword ptr [rsp+0x58], r13
mov qword ptr [rsp+0x50], rbx
- lea rbp, [rsp+0x10]
+ lea rbp, [rsp+0x20]
mov ebx, dword ptr [rbp+0x1C]
- ;; size=27 bbWeight=1 PerfScore 7.75
+ ;; size=37 bbWeight=1 PerfScore 9.75
G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov r15d, dword ptr [(reloc)] cmp ebx, r15d
- jge SHORT G_M896_IG07 - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M896_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rsi, gword ptr [rdi]
+ jge SHORT G_M896_IG04 + mov rsi, 0xD1FFAB1E ; static handle + mov r14, gword ptr [rsi] + ; gcrRegs +[r14] + mov rsi, r14 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov r13, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.25 +G_M896_IG03: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, r14
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M896_IG06 - ;; size=21 bbWeight=4 PerfScore 15.00 -G_M896_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M896_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M896_IG06: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, r13
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rsi] inc ebx cmp ebx, r15d jl SHORT G_M896_IG03
- ;; size=25 bbWeight=4 PerfScore 12.00 -G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 18.00 +G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r14]
add rsp, 80 pop rbx
+ pop r13 + pop r14
pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 114, prolog size 27, PerfScore 45.50, instruction count 30, allocated bytes for code 114 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 139, prolog size 37, PerfScore 38.75, instruction count 34, allocated bytes for code 139 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -78,16 +79,20 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x13 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x1D + CountOfUnwindCodes: 12
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x1D UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
Scaled Small Offset: 10 * 8 = 80 = 0x00050
- CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r13 (13)
Scaled Small Offset: 11 * 8 = 88 = 0x00058
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r14 (14) + Scaled Small Offset: 12 * 8 = 96 = 0x00060 + CodeOffset: 0x0E UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15) + Scaled Small Offset: 13 * 8 = 104 = 0x00068 + CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48 CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

coreclr_tests.run.linux.x64.checked.mch

-23 (-46.94%) : 239395.dasm - CastExpansionTests:CastToGenericSystem.__Canon:System.Object:this (Tier1)

@@ -2,56 +2,39 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rsi single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rsi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rsi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M64337_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M64337_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rsi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M64337_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M64337_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
mov rsi, rdx ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx rsi] +[rax]
- ;; size=8 bbWeight=0.12 PerfScore 0.16 -G_M64337_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M64337_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=16 bbWeight=1 PerfScore 5.50 +G_M64337_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 14, PerfScore 8.41, instruction count 17, allocated bytes for code 49 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
+; Total bytes of code 26, prolog size 5, PerfScore 8.75, instruction count 9, allocated bytes for code 26 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info: @@ -59,10 +42,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-36.36%) : 594513.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-28 (-36.36%) : 1622.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+22 (+24.72%) : 398535.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)

@@ -5,47 +5,43 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 17492
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 17492
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> -; V01 arg1 [V01,T00] ( 6, 4.07) ref -> rsi class-hnd single-def <Internal.TypeSystem.TypeDesc> -; V02 loc0 [V02,T04] ( 4, 3.50) ref -> rsi class-hnd exact <Internal.TypeSystem.Ecma.EcmaType>
+; V00 this [V00,T03] ( 3, 3 ) ref -> rbx this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> +; V01 arg1 [V01,T01] ( 6, 4.07) ref -> rsi class-hnd single-def <Internal.TypeSystem.TypeDesc> +; V02 loc0 [V02,T05] ( 3, 3 ) ref -> rsi class-hnd exact single-def <Internal.TypeSystem.Ecma.EcmaType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.Ecma.EcmaType> -; V06 tmp3 [V06,T06] ( 3, 2 ) ref -> rsi "guarded devirt return temp" -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> -; V08 tmp5 [V08,T03] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> -; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>> -; V10 cse0 [V10,T05] ( 3, 2.50) long -> r15 "CSE - aggressive"
+; V04 tmp1 [V04,T06] ( 3, 2 ) ref -> rsi "guarded devirt return temp" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> +; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> +; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>> +; V08 rat0 [V08,T00] ( 5, 7.50) ref -> rsi "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M4376_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push r15
push rbx
+ push rax
lea rbp, [rsp+0x10] mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
G_M4376_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi]
- mov r15, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType - cmp qword ptr [rsi], r15 - jne SHORT G_M4376_IG07
+ mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType + cmp qword ptr [rsi], rdi + jne SHORT G_M4376_IG08
;; size=15 bbWeight=1 PerfScore 4.25 G_M4376_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rsi, rsi
- je SHORT G_M4376_IG08
+ jne SHORT G_M4376_IG06
;; size=5 bbWeight=1 PerfScore 1.25
-G_M4376_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - cmp qword ptr [rsi], r15 - jne SHORT G_M4376_IG08 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M4376_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M4376_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M4376_IG09
mov rsi, gword ptr [rsi+0x58] mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] @@ -54,15 +50,26 @@ G_M4376_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rbx rsi rdi] not eax shr eax, 31
- ;; size=22 bbWeight=1 PerfScore 10.75 -G_M4376_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=27 bbWeight=1 PerfScore 12.00 +G_M4376_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r15
pop rbp ret
- ;; size=5 bbWeight=1 PerfScore 2.50 -G_M4376_IG07: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M4376_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
+ mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType + cmp qword ptr [rsi], rdi + je SHORT G_M4376_IG04 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M4376_IG07: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M4376_IG04 + ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M4376_IG08: ; bbWeight=0.07, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi ; gcrRegs +[rdi] mov rax, qword ptr [rsi] @@ -73,18 +80,18 @@ G_M4376_IG07: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0048 ; gcrRegs +[rsi] jmp SHORT G_M4376_IG03 ;; size=18 bbWeight=0.07 PerfScore 0.67
-G_M4376_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4376_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi] xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M4376_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M4376_IG10: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r15
pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 89, prolog size 9, PerfScore 25.16, instruction count 33, allocated bytes for code 89 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
+; Total bytes of code 111, prolog size 8, PerfScore 26.85, instruction count 38, allocated bytes for code 111 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -92,11 +99,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x03
CountOfUnwindCodes: 3 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+34 (+39.08%) : 238513.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,83 +10,95 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rdi class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 0.74) int -> rbx "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rsi "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push rbx
- lea rbp, [rsp+0x08] - ;; size=7 bbWeight=1 PerfScore 2.50
+ push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M44244_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi rdi] test rdi, rdi
- je SHORT G_M44244_IG11
+ je SHORT G_M44244_IG12
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rdi], rax
- jne SHORT G_M44244_IG07
+ jne SHORT G_M44244_IG08
test rsi, rsi
- je SHORT G_M44244_IG13
+ je SHORT G_M44244_IG05
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rsi], rax
- jne SHORT G_M44244_IG13 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M44244_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M44244_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M44244_IG04: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M44244_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M44244_IG14
cmp rsi, rdi
- jne SHORT G_M44244_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M44244_IG05: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M44244_IG07 + ;; size=10 bbWeight=1 PerfScore 2.50 +G_M44244_IG06: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi] mov ebx, 1
- jmp SHORT G_M44244_IG09
+ jmp SHORT G_M44244_IG10
;; size=7 bbWeight=0.74 PerfScore 1.67
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M44244_IG07: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[rsi rdi]
+ add rsp, 8
pop rbx pop rbp jmp <unknown method> ; gcr arg pop 0
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M44244_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M44244_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=6 bbWeight=0 PerfScore 0.00 -G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi] movzx rax, bl ;; size=3 bbWeight=0 PerfScore 0.00
-G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor ebx, ebx
- jmp SHORT G_M44244_IG09
+ jmp SHORT G_M44244_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 7, PerfScore 17.17, instruction count 34, allocated bytes for code 87 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 121, prolog size 8, PerfScore 19.85, instruction count 43, allocated bytes for code 121 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,10 +106,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x02 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+44 (+400.00%) : 497763.dasm - T:TestEntryPoint():int (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rsp based frame
+; rbp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data @@ -11,24 +11,52 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V03 tmp2 [V03,T00] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V04 tmp3 [V04,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
+;* V03 tmp2 [V03,T01] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V04 rat0 [V04,T00] ( 5, 7.50) ref -> rax "replacement local"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push rax - ;; size=1 bbWeight=1 PerfScore 1.00 -G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, 100 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend - add rsp, 8 - ret
+G_M32114_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push rbp + mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32114_IG05 + ;; size=15 bbWeight=1 PerfScore 1.50 +G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; <unknown class> + cmp qword ptr [rax], rcx + je SHORT G_M32114_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + xor rax, rax + ; gcrRegs +[rax] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M32114_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + test rax, rax + je SHORT G_M32114_IG08
;; size=5 bbWeight=1 PerfScore 1.25
+G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov eax, 100 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75 +G_M32114_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, -1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 11, prolog size 1, PerfScore 2.50, instruction count 4, allocated bytes for code 11 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 7.94, instruction count 17, allocated bytes for code 55 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info: @@ -41,4 +69,4 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries.crossgen2.linux.x64.checked.mch
-42 (-50.00%) : 182392.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:b__0():System.__Canon:this (FullOpts)
@@ -3,72 +3,43 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> rbx this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> r15 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> rdi "argument with side effect"
; ; Lcl frame size = 16 G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - push r15 - push r14 - push r13
push rbx sub rsp, 16
- lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi
+ mov qword ptr [rsp+0x08], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 7.00 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov r15, gword ptr [rbx+0x08] - ; gcrRegs +[r15] - mov r14, r15 - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 3.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - mov r13, qword ptr [r14]
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbx] call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r13, rax - je SHORT G_M12636_IG05 - ;; size=17 bbWeight=0.25 PerfScore 2.06 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14]
+ ; gcr arg pop 0
mov rdi, rax
- mov rsi, r15
+ mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi] call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rsi r15] +[rax] - mov r14, rax - ; gcrRegs +[r14] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r14 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + nop + ;; size=23 bbWeight=1 PerfScore 10.50 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 16 pop rbx
- pop r13 - pop r14 - pop r15 - pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 84, prolog size 21, PerfScore 17.03, instruction count 30, allocated bytes for code 84 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 14.75, instruction count 13, allocated bytes for code 42 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -76,14 +47,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-39 (-46.99%) : 133269.dasm - System.Linq.ParallelQuery1+<>c__11[System.Canon,System.Canon]:b1_0(System.Canon):System.__Canon:this (FullOpts)

@@ -3,72 +3,48 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r15 this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rbx class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M42611_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
- push r14 - push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rsi
+ push rax + mov qword ptr [rsp], rdi + mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=27 bbWeight=1 PerfScore 7.25 -G_M42611_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov r14, rbx - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M42611_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M42611_IG03: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - mov r13, qword ptr [r14] - mov rdi, qword ptr [r15]
+ mov r15, rsi + ; gcrRegs +[r15] + ;; size=14 bbWeight=1 PerfScore 4.50 +G_M42611_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + mov rdi, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r13, rax - je SHORT G_M42611_IG05 - ;; size=17 bbWeight=0.25 PerfScore 2.06 -G_M42611_IG04: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14]
+ ; gcr arg pop 0
mov rdi, rax
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi] call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rbx rsi] +[rax] - mov r14, rax - ; gcrRegs +[r14] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M42611_IG05: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r14 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M42611_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ; gcrRegs -[rsi r15] +[rax] + ; gcr arg pop 0 + nop + ;; size=22 bbWeight=1 PerfScore 8.75 +G_M42611_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r13 - pop r14
pop r15
- pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=8 bbWeight=1 PerfScore 2.25
-; Total bytes of code 83, prolog size 21, PerfScore 15.28, instruction count 30, allocated bytes for code 83 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 15.50, instruction count 16, allocated bytes for code 44 (MethodHash=645c598c) for method System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -76,14 +52,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-39 (-46.99%) : 218407.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c11[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary2[System.String,System.Object]):System.Canon:this (FullOpts)

@@ -3,72 +3,48 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> r15 this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M31417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15
- push r14 - push r13
push rbx
- sub rsp, 16 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x28], rdi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rsi
+ push rax + mov qword ptr [rsp], rdi + mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=27 bbWeight=1 PerfScore 7.25 -G_M31417_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov r14, rbx - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M31417_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M31417_IG03: ; bbWeight=0.25, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - mov r13, qword ptr [r14] - mov rdi, qword ptr [r15]
+ mov r15, rsi + ; gcrRegs +[r15] + ;; size=14 bbWeight=1 PerfScore 4.50 +G_M31417_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + mov rdi, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- cmp r13, rax - je SHORT G_M31417_IG05 - ;; size=17 bbWeight=0.25 PerfScore 2.06 -G_M31417_IG04: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14]
+ ; gcr arg pop 0
mov rdi, rax
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi] call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rbx rsi] +[rax] - mov r14, rax - ; gcrRegs +[r14] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M31417_IG05: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r14 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M31417_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ; gcrRegs -[rsi r15] +[rax] + ; gcr arg pop 0 + nop + ;; size=22 bbWeight=1 PerfScore 8.75 +G_M31417_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r13 - pop r14
pop r15
- pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=8 bbWeight=1 PerfScore 2.25
-; Total bytes of code 83, prolog size 21, PerfScore 15.28, instruction count 30, allocated bytes for code 83 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 15.50, instruction count 16, allocated bytes for code 44 (MethodHash=9c5d8546) for method System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -76,14 +52,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+30 (+3.81%) : 153829.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)

@@ -9,44 +9,43 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>> ; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup" ; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1" -; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>> -; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" -; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" -;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" -; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon> -; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP -; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP -; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP -; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP -; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect" -; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect" -; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect" -; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect" -; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect" -; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect" -; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect" -; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" -; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate" -; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate" -; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate" -; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive" -; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" +; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" +; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg" +; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" +; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon> +; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP +; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP +; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP +; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP +; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect" +; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect" +; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect" +; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect" +; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect" +; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect" +; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect" +; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect" +; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" +; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive" +; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate" +; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive" +; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative" +; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive" +; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
; ; Lcl frame size = 104 @@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdi] test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi] mov rdi, r15 ; gcrRegs -[rdi] @@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 ; byrRegs +[rsi] mov rdi, gword ptr [rbp-0x60] ; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10] + ; byrRegs +[rbx] + mov rdi, rbx
; gcrRegs -[rdi] ; byrRegs +[rdi] call [CORINFO_HELP_ASSIGN_BYREF] ; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq mov edi, dword ptr [r13+0x08] ; byrRegs -[rdi] mov rbx, gword ptr [rbp-0x60] ; gcrRegs +[rbx] mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= mov r13, rax ; gcrRegs +[r13] test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15 call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] @@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcrRegs +[rbx] lea rdi, bword ptr [rbx+0x10] ; byrRegs +[rdi]
+ mov r14, rdi + ; byrRegs +[r14] + mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13] ; byrRegs -[rsi rdi] mov rdi, r15 @@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs -[rdi] mov edi, dword ptr [rbp-0x38] mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10] - ; gcrRegs +[rax] - mov gword ptr [rbp-0x70], rax - ; GC ptr vars +{V12} - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je G_M47297_IG15 - ;; size=73 bbWeight=0.50 PerfScore 9.75 -G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10] + ; byrRegs +[rdi] + mov rax, rdi + ; byrRegs +[rax] + mov bword ptr [rbp-0x88], rax + ; GC ptr vars +{V36} + mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx] - mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80] - cmp rdx, rax - je SHORT G_M47297_IG12 - ;; size=29 bbWeight=0.25 PerfScore 2.38 -G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78] + ; byrRegs +[rsi] + mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi] + ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax - ; GC ptr vars +{V14} - ;; size=17 bbWeight=0.12 PerfScore 0.66 -G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rax, gword ptr [rbp-0x78] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], 1 - jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax + ; GC ptr vars +{V06} + test rax, rax + je SHORT G_M47297_IG12 + mov edi, dword ptr [rax+0x08] + cmp edi, 1 + jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax rbx] ; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15] mov rsi, gword ptr [r15+0x10] ; gcrRegs +[rsi] @@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR ; gcrRegs +[rdi] mov r11, rax xor edx, edx
- ; GC ptr vars -{V14}
call [rax] ; gcrRegs -[rsi rdi r13 r15] ; gcr arg pop 0 mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00 -G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88 +G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104 pop rbx pop r12 @@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx] mov rdi, r14 call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE] @@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs +[rsi] mov r14, gword ptr [rbp-0x60] ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10] + mov r13, rax + ; byrRegs +[r13]
...

+30 (+3.81%) : 159717.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)

@@ -9,44 +9,43 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>> ; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup" ; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1" -; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>> -; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" -; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" -;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" -; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon> -; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP -; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP -; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP -; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP -; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect" -; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect" -; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect" -; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect" -; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect" -; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect" -; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect" -; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" -; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate" -; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate" -; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate" -; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive" -; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" +; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" +; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg" +; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" +; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon> +; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP +; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP +; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP +; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP +; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect" +; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect" +; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect" +; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect" +; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect" +; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect" +; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect" +; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect" +; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" +; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive" +; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate" +; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive" +; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative" +; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive" +; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
; ; Lcl frame size = 104 @@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdi] test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi] mov rdi, r15 ; gcrRegs -[rdi] @@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 ; byrRegs +[rsi] mov rdi, gword ptr [rbp-0x60] ; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10] + ; byrRegs +[rbx] + mov rdi, rbx
; gcrRegs -[rdi] ; byrRegs +[rdi] call [CORINFO_HELP_ASSIGN_BYREF] ; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq mov edi, dword ptr [r13+0x08] ; byrRegs -[rdi] mov rbx, gword ptr [rbp-0x60] ; gcrRegs +[rbx] mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= mov r13, rax ; gcrRegs +[r13] test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15 call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] @@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcrRegs +[rbx] lea rdi, bword ptr [rbx+0x10] ; byrRegs +[rdi]
+ mov r14, rdi + ; byrRegs +[r14] + mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13] ; byrRegs -[rsi rdi] mov rdi, r15 @@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs -[rdi] mov edi, dword ptr [rbp-0x38] mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10] - ; gcrRegs +[rax] - mov gword ptr [rbp-0x70], rax - ; GC ptr vars +{V12} - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je G_M47297_IG15 - ;; size=73 bbWeight=0.50 PerfScore 9.75 -G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10] + ; byrRegs +[rdi] + mov rax, rdi + ; byrRegs +[rax] + mov bword ptr [rbp-0x88], rax + ; GC ptr vars +{V36} + mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx] - mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80] - cmp rdx, rax - je SHORT G_M47297_IG12 - ;; size=29 bbWeight=0.25 PerfScore 2.38 -G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78] + ; byrRegs +[rsi] + mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi] + ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax - ; GC ptr vars +{V14} - ;; size=17 bbWeight=0.12 PerfScore 0.66 -G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rax, gword ptr [rbp-0x78] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], 1 - jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax + ; GC ptr vars +{V06} + test rax, rax + je SHORT G_M47297_IG12 + mov edi, dword ptr [rax+0x08] + cmp edi, 1 + jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax rbx] ; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15] mov rsi, gword ptr [r15+0x10] ; gcrRegs +[rsi] @@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR ; gcrRegs +[rdi] mov r11, rax xor edx, edx
- ; GC ptr vars -{V14}
call [rax] ; gcrRegs -[rsi rdi r13 r15] ; gcr arg pop 0 mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00 -G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88 +G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104 pop rbx pop r12 @@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx] mov rdi, r14 call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE] @@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs +[rsi] mov r14, gword ptr [rbp-0x60] ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10] + mov r13, rax + ; byrRegs +[r13]
...

+30 (+3.81%) : 170862.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable1[System.__Canon]):this (FullOpts)

@@ -9,44 +9,43 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 27 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T07] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 this [V00,T00] ( 16, 23 ) ref -> [rbp-0x60] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T08] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T13] ( 4, 3 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]>
-; V03 loc1 [V03,T19] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T18] ( 4, 2 ) ref -> r13 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 7, 9 ) ref -> [rbp-0x68] class-hnd EH-live single-def <<unknown class>> ; V05 loc3 [V05,T20] ( 4, 2 ) int -> r12 single-def
-;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 4, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T15] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V09 tmp2 [V09,T01] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup" ; V10 tmp3 [V10,T16] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" ; V11 tmp4 [V11 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]>
-; V12 tmp5 [V12,T18] ( 3, 2.25) ref -> [rbp-0x70] spill-single-def "CASTCLASS eval op1" -; V13 tmp6 [V13,T25] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V14 tmp7 [V14,T09] ( 6, 4.75) ref -> [rbp-0x78] class-hnd "spilling QMark2" <<unknown class>> -; V15 tmp8 [V15,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" -; V16 tmp9 [V16,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" -;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V18 tmp11 [V18 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V19 tmp12 [V19,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" -; V20 tmp13 [V20,T02] ( 3, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon> -; V21 tmp14 [V21 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP -; V22 tmp15 [V22 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP -; V23 tmp16 [V23 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP -; V24 tmp17 [V24 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V18._length (fldOffset=0x8)" P-DEP -; V25 tmp18 [V25,T11] ( 2, 4 ) long -> rdi "argument with side effect" -; V26 tmp19 [V26,T22] ( 2, 2 ) long -> rdi "argument with side effect" -; V27 tmp20 [V27,T23] ( 2, 2 ) long -> rsi "argument with side effect" -; V28 tmp21 [V28,T05] ( 2, 8 ) long -> rsi "argument with side effect" -; V29 tmp22 [V29,T24] ( 2, 2 ) long -> rsi "argument with side effect" -; V30 tmp23 [V30,T21] ( 2, 2 ) byref -> rbx single-def "argument with side effect" -; V31 tmp24 [V31,T26] ( 2, 1 ) long -> rdi "argument with side effect" -; V32 PSPSym [V32,T27] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" -; V33 cse0 [V33,T10] ( 2, 4.50) long -> r13 hoist "CSE - moderate" -; V34 cse1 [V34,T14] ( 4, 3 ) long -> r14 "CSE - moderate" -; V35 cse2 [V35,T08] ( 8, 6.75) long -> registers multi-def "CSE - moderate" -; V36 cse3 [V36,T06] ( 11, 7.75) long -> r15 "CSE - aggressive" -; TEMP_01 long -> [rbp-0x80]
+; V12 tmp5 [V12,T17] ( 3, 3 ) long -> rax "VirtualCall with runtime lookup" +; V13 tmp6 [V13,T12] ( 4, 3.50) ref -> r14 single-def "inline UNBOX clone1" +; V14 tmp7 [V14,T21] ( 2, 2 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg" +; V15 tmp8 [V15 ] ( 4, 14 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V16 tmp9 [V16,T03] ( 4, 12 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp" +; V17 tmp10 [V17,T02] ( 3, 16 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon> +; V18 tmp11 [V18 ] ( 2, 1.50) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._items (fldOffset=0x0)" P-DEP +; V19 tmp12 [V19 ] ( 2, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP +; V20 tmp13 [V20 ] ( 3, 10 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V15._items (fldOffset=0x0)" P-DEP +; V21 tmp14 [V21 ] ( 4, 14 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V15._length (fldOffset=0x8)" P-DEP +; V22 tmp15 [V22,T11] ( 2, 4 ) long -> rdi "argument with side effect" +; V23 tmp16 [V23,T23] ( 2, 2 ) long -> rdi "argument with side effect" +; V24 tmp17 [V24,T24] ( 2, 2 ) long -> rsi "argument with side effect" +; V25 tmp18 [V25,T25] ( 2, 2 ) long -> rdi "argument with side effect" +; V26 tmp19 [V26,T07] ( 2, 8 ) long -> rsi "argument with side effect" +; V27 tmp20 [V27,T26] ( 2, 2 ) long -> rsi "argument with side effect" +; V28 tmp21 [V28,T22] ( 2, 2 ) byref -> rbx single-def "argument with side effect" +; V29 tmp22 [V29,T27] ( 2, 1 ) long -> rdi "argument with side effect" +; V30 PSPSym [V30,T29] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym" +; V31 cse0 [V31,T10] ( 2, 4.50) long -> r12 hoist "CSE - aggressive" +; V32 cse1 [V32,T14] ( 4, 3 ) long -> r14 "CSE - moderate" +; V33 cse2 [V33,T09] ( 8, 6.75) long -> registers multi-def "CSE - aggressive" +; V34 cse3 [V34,T28] ( 2, 1 ) int -> rdi "CSE - conservative" +; V35 cse4 [V35,T05] ( 11, 8 ) long -> r15 "CSE - aggressive" +; V36 cse5 [V36,T06] ( 9, 8 ) byref -> [rbp-0x88] multi-def "CSE - aggressive"
; ; Lcl frame size = 104 @@ -72,7 +71,7 @@ G_M47297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M47297_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdi] test rbx, rbx
- je G_M47297_IG25
+ je G_M47297_IG22
mov r15, qword ptr [rdi] mov rdi, r15 ; gcrRegs -[rdi] @@ -124,18 +123,21 @@ G_M47297_IG05: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 ; byrRegs +[rsi] mov rdi, gword ptr [rbp-0x60] ; gcrRegs +[rdi]
- add rdi, 16
+ lea rbx, bword ptr [rdi+0x10] + ; byrRegs +[rbx] + mov rdi, rbx
; gcrRegs -[rdi] ; byrRegs +[rdi] call [CORINFO_HELP_ASSIGN_BYREF] ; gcrRegs -[r14]
+ ; byrRegs -[rbx]
movsq mov edi, dword ptr [r13+0x08] ; byrRegs -[rdi] mov rbx, gword ptr [rbp-0x60] ; gcrRegs +[rbx] mov dword ptr [rbx+0x08], edi
- ;; size=31 bbWeight=0.50 PerfScore 4.88
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M47297_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -161,7 +163,7 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= mov r13, rax ; gcrRegs +[r13] test r13, r13
- je G_M47297_IG14
+ je G_M47297_IG11
mov rdi, r15 call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] @@ -189,10 +191,13 @@ G_M47297_IG07: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; gcrRegs +[rbx] lea rdi, bword ptr [rbx+0x10] ; byrRegs +[rdi]
+ mov r14, rdi + ; byrRegs +[r14] + mov rdi, r14
call [CORINFO_HELP_ASSIGN_BYREF]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r14]
movsq
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=96 bbWeight=0.50 PerfScore 14.00
G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend add rsp, 104 pop rbx @@ -203,7 +208,7 @@ G_M47297_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13] ; byrRegs -[rsi rdi] mov rdi, r15 @@ -226,52 +231,42 @@ G_M47297_IG09: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs -[rdi] mov edi, dword ptr [rbp-0x38] mov dword ptr [r14+0x18], edi
- mov rax, gword ptr [r14+0x10] - ; gcrRegs +[rax] - mov gword ptr [rbp-0x70], rax - ; GC ptr vars +{V12} - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je G_M47297_IG15 - ;; size=73 bbWeight=0.50 PerfScore 9.75 -G_M47297_IG10: ; bbWeight=0.25, gcVars=0000000000040001 {V00 V12}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov gword ptr [rbp-0x78], rcx
+ lea rdi, bword ptr [r14+0x10] + ; byrRegs +[rdi] + mov rax, rdi + ; byrRegs +[rax] + mov bword ptr [rbp-0x88], rax + ; GC ptr vars +{V36} + mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V14}
- mov rdx, qword ptr [rcx] - mov qword ptr [rbp-0x80], rdx
mov rdi, r15
+ ; byrRegs -[rdi]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- ; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- mov rdx, qword ptr [rbp-0x80] - cmp rdx, rax - je SHORT G_M47297_IG12 - ;; size=29 bbWeight=0.25 PerfScore 2.38 -G_M47297_IG11: ; bbWeight=0.12, gcVars=0000000000040001 {V00 V12}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V14}
mov rdi, rax
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, bword ptr [rbp-0x78] + ; byrRegs +[rsi] + mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- ; GC ptr vars -{V12}
+ ; byrRegs -[rsi] + ; GC ptr vars -{V14}
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax - ; GC ptr vars +{V14} - ;; size=17 bbWeight=0.12 PerfScore 0.66 -G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rax, gword ptr [rbp-0x78] - ; gcrRegs +[rax] - cmp dword ptr [rax+0x08], 1 - jne SHORT G_M47297_IG15
+ mov gword ptr [rbp-0x70], rax + ; GC ptr vars +{V06} + test rax, rax + je SHORT G_M47297_IG12 + mov edi, dword ptr [rax+0x08] + cmp edi, 1 + jne SHORT G_M47297_IG12
mov rdi, r15
+ ; GC ptr vars -{V06 V36}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax rbx] ; gcr arg pop 0
- mov r15, gword ptr [rbp-0x78]
+ mov r15, gword ptr [rbp-0x70]
; gcrRegs +[r15] mov rsi, gword ptr [r15+0x10] ; gcrRegs +[rsi] @@ -279,13 +274,12 @@ G_M47297_IG12: ; bbWeight=0.50, gcVars=0000000000000201 {V00 V14}, gcrefR ; gcrRegs +[rdi] mov r11, rax xor edx, edx
- ; GC ptr vars -{V14}
call [rax] ; gcrRegs -[rsi rdi r13 r15] ; gcr arg pop 0 mov dword ptr [r14+0x08], r12d
- ;; size=41 bbWeight=0.50 PerfScore 8.00 -G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=144 bbWeight=0.50 PerfScore 21.88 +G_M47297_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 104 pop rbx pop r12 @@ -295,7 +289,7 @@ G_M47297_IG13: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M47297_IG11: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14] +[rbx] mov rdi, r14 call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE] @@ -308,14 +302,19 @@ G_M47297_IG14: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs= ; byrRegs +[rsi] mov r14, gword ptr [rbp-0x60] ; gcrRegs +[r14]
- lea rdi, bword ptr [r14+0x10]
+ lea rax, bword ptr [r14+0x10] + mov r13, rax + ; byrRegs +[r13]
...

libraries.pmi.linux.x64.checked.mch

-23 (-50.00%) : 202525.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -2,54 +2,37 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -57,10 +40,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-23 (-50.00%) : 19086.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -2,53 +2,36 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M7606_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M7606_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M7606_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -56,10 +39,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-25 (-42.37%) : 26137.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)

@@ -2,46 +2,29 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Data.Common.SqlUdtStorage> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Data.Common.SqlUdtStorage> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.BitArray> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M5622_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75 -G_M5622_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 1.25 +G_M5622_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M5622_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M5622_IG03: ; bbWeight=0.25, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rdi - je SHORT G_M5622_IG05 - ;; size=15 bbWeight=0.25 PerfScore 1.06 -G_M5622_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M5622_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
lea rdi, bword ptr [rbx+0x40] ; byrRegs +[rdi] mov rsi, rax @@ -50,15 +33,13 @@ G_M5622_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, ; gcrRegs -[rax rbx rsi] ; byrRegs -[rdi] nop
- ;; size=13 bbWeight=1 PerfScore 2.00 -G_M5622_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=28 bbWeight=1 PerfScore 3.25 +G_M5622_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 59, prolog size 8, PerfScore 10.69, instruction count 20, allocated bytes for code 59 (MethodHash=f8c9ea09) for method System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 6.00, instruction count 10, allocated bytes for code 34 (MethodHash=f8c9ea09) for method System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
; ============================================================ Unwind Info: @@ -66,11 +47,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+37 (+10.05%) : 263382.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r13 class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Type> -; V03 arg3 [V03,T07] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T08] ( 3, 3 ) ref -> [rbp-0x30] class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T05] ( 4, 3.50) int -> r14 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T07] ( 3, 3 ) ref -> r13 class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Type> +; V03 arg3 [V03,T08] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T09] ( 3, 3 ) ref -> [rbp-0x30] class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T06] ( 4, 3.50) int -> r14 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 12, 21 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl>
-;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 11 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T13] ( 3, 2.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T12] ( 4, 2.91) int -> rax "Inline stloc first use temp" -; V22 cse0 [V22,T10] ( 3, 3 ) ref -> [rbp-0x40] spill-single-def "CSE - moderate"
+;* V09 tmp2 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T00] ( 9, 21.50) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 11 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T14] ( 3, 2.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T13] ( 4, 2.91) int -> rax "Inline stloc first use temp" +; V20 cse0 [V20,T12] ( 3, 3 ) ref -> [rbp-0x40] spill-single-def "CSE - moderate" +; V21 rat0 [V21,T11] ( 3, 2.50) ref -> rcx "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> registers "replacement local"
; ; Lcl frame size = 24 @@ -55,13 +55,13 @@ G_M54407_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r12] mov r14d, r9d ;; size=38 bbWeight=1 PerfScore 9.00
-G_M54407_IG02: ; bbWeight=1, gcVars=0000000000000100 {V04}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54407_IG02: ; bbWeight=1, gcVars=0000000000000200 {V04}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] call [System.Reflection.Emit.TypeBuilderImpl:ThrowIfCreated():this] ; gcrRegs -[rdi] cmp gword ptr [rbx+0x40], 0
- jne SHORT G_M54407_IG08
+ jne SHORT G_M54407_IG11
;; size=16 bbWeight=1 PerfScore 7.25 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz mov rdi, rbx @@ -69,20 +69,43 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe mov rax, 0xD1FFAB1E ; gcrRegs +[rax] mov gword ptr [rbp-0x40], rax
- ; GC ptr vars +{V22}
+ ; GC ptr vars +{V20}
cmp rdi, rax
- jne SHORT G_M54407_IG05 - jmp SHORT G_M54407_IG08 - ;; size=24 bbWeight=0.50 PerfScore 2.38 -G_M54407_IG04: ; bbWeight=2, gcVars=0000000000000500 {V04 V22}, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ je SHORT G_M54407_IG11 + mov rcx, rdi + ; gcrRegs +[rcx] + test rcx, rcx + je SHORT G_M54407_IG08 + ;; size=30 bbWeight=0.50 PerfScore 2.12 +G_M54407_IG04: ; bbWeight=0.25, gcVars=0000000000001200 {V04 V20}, gcrefRegs=B08A {rcx rbx rdi r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
+ mov rdx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rcx], rdx + je SHORT G_M54407_IG08 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx] + jmp SHORT G_M54407_IG08 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rdi, rsi
- je SHORT G_M54407_IG07 - ;; size=9 bbWeight=2 PerfScore 4.50 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M54407_IG10 + mov rax, rdi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M54407_IG08 + ;; size=17 bbWeight=2 PerfScore 7.50 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=B089 {rax rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
+ mov rsi, rax + ; gcrRegs +[rsi] + mov rsi, qword ptr [rsi] + ; gcrRegs -[rsi] + ;; size=6 bbWeight=1 PerfScore 2.25 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
mov rcx, qword ptr [rdi] mov rcx, qword ptr [rcx+0xA0] call [rcx+0x20]<unknown method> @@ -90,16 +113,16 @@ G_M54407_IG05: ; bbWeight=4, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefR mov rdi, rax ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M54407_IG04
+ jne SHORT G_M54407_IG06
;; size=21 bbWeight=4 PerfScore 34.00
-G_M54407_IG06: ; bbWeight=0.50, gcVars=0000000000000100 {V04}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54407_IG09: ; bbWeight=0.50, gcVars=0000000000000200 {V04}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rdi]
- ; GC ptr vars -{V22} - jmp SHORT G_M54407_IG08
+ ; GC ptr vars -{V20} + jmp SHORT G_M54407_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
test r14b, 16
- jne SHORT G_M54407_IG08
+ jne SHORT G_M54407_IG11
lea rdi, bword ptr [rbx+0x40] ; byrRegs +[rdi] mov rsi, r15 @@ -108,16 +131,16 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe ; gcrRegs -[rsi] ; byrRegs -[rdi] ;; size=18 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.FieldBuilderImpl call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V08} test byte ptr [(reloc)], 1 ; global ptr
- je G_M54407_IG14
+ je G_M54407_IG17
;; size=32 bbWeight=1 PerfScore 6.25
-G_M54407_IG09: ; bbWeight=1, gcVars=0000000000000102 {V04 V08}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcVars=0000000000000202 {V04 V08}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rsi, gword ptr [rdi] ; gcrRegs +[rsi] @@ -165,7 +188,7 @@ G_M54407_IG09: ; bbWeight=1, gcVars=0000000000000102 {V04 V08}, gcrefRegs ; byrRegs +[rdi] mov rsi, gword ptr [rbp-0x30] ; gcrRegs +[rsi]
- ; GC ptr vars -{V04 V08}
+ ; GC ptr vars -{V04}
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rsi] ; byrRegs -[rdi] @@ -176,9 +199,9 @@ G_M54407_IG09: ; bbWeight=1, gcVars=0000000000000102 {V04 V08}, gcrefRegs ; gcrRegs +[rsi] mov eax, dword ptr [rdi+0x10] cmp dword ptr [rsi+0x08], eax
- jbe SHORT G_M54407_IG11
+ jbe SHORT G_M54407_IG14
;; size=129 bbWeight=1 PerfScore 30.50
-G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG13: ; bbWeight=0.46, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] lea ecx, [rax+0x01] mov dword ptr [rdi+0x10], ecx @@ -190,20 +213,20 @@ G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rsi] ; byrRegs -[rdi]
- jmp SHORT G_M54407_IG12
+ jmp SHORT G_M54407_IG15
;; size=23 bbWeight=0.46 PerfScore 2.74
-G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.04, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi] mov rsi, r13 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi rdi] ;; size=9 bbWeight=0.04 PerfScore 0.14
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rax, r13 ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -213,19 +236,19 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000102 {V04 V08}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000202 {V04 V08}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r12 r15]
- ; GC ptr vars +{V04 V08}
+ ; GC ptr vars +{V04 V09}
mov rdi, 0xD1FFAB1E mov esi, 204 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE ; gcrRegs -[rax] mov rax, gword ptr [rbp-0x38] ; gcrRegs +[rax]
- jmp G_M54407_IG09
+ jmp G_M54407_IG12
;; size=29 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 19, PerfScore 103.76, instruction count 97, allocated bytes for code 368 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 405, prolog size 19, PerfScore 110.82, instruction count 108, allocated bytes for code 405 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info:

+38 (+15.38%) : 263372.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> rdi "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> r15 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> rdi "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> r15 "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> rax "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> rsi "replacement local"
; ; Lcl frame size = 0 @@ -69,21 +69,41 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rdi, gword ptr [rbx+0x58] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x10], 0
- jne SHORT G_M47746_IG11
+ jne G_M47746_IG14
test byte ptr [rbx+0x88], 32
- jne SHORT G_M47746_IG11
+ jne SHORT G_M47746_IG14
mov rdi, rbx mov r15, 0xD1FFAB1E ; gcrRegs +[r15] cmp rdi, r15
- jne SHORT G_M47746_IG09 - jmp SHORT G_M47746_IG10 - ;; size=39 bbWeight=0.50 PerfScore 6.88 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M47746_IG13 + mov rax, rdi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M47746_IG12 + ;; size=49 bbWeight=0.50 PerfScore 6.62 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=8089 {rax rbx rdi r15}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rax], rcx + je SHORT G_M47746_IG12 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M47746_IG12 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
cmp rdi, r15
- je SHORT G_M47746_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M47746_IG14 + mov rsi, rdi + ; gcrRegs +[rsi] + test rsi, rsi + je SHORT G_M47746_IG12 + ;; size=13 bbWeight=2 PerfScore 5.50 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rsi] + ; gcrRegs -[rsi] + ;; size=3 bbWeight=1 PerfScore 2.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA0] call [rax+0x20]<unknown method> @@ -91,24 +111,24 @@ G_M47746_IG09: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 mov rdi, rax ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M47746_IG08
+ jne SHORT G_M47746_IG10
;; size=21 bbWeight=4 PerfScore 34.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdi r15] mov edi, dword ptr [rbx+0x88] mov esi, edi and esi, 384 cmp esi, 384
- je SHORT G_M47746_IG11
+ je SHORT G_M47746_IG14
test dil, 32
- jne SHORT G_M47746_IG12
+ jne SHORT G_M47746_IG15
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 6 call [<unknown method>] ; gcrRegs -[rdi] +[rax] ;; size=42 bbWeight=0.50 PerfScore 4.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -123,7 +143,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdi] jmp G_M47746_IG03 ;; size=43 bbWeight=0.50 PerfScore 6.75
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -144,7 +164,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 9, PerfScore 67.38, instruction count 66, allocated bytes for code 247 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 285, prolog size 9, PerfScore 74.19, instruction count 76, allocated bytes for code 285 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info:

+34 (+26.36%) : 263407.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> rax "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> r15 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> rdi class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> rax "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> r15 "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> rax "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> rax "replacement local"
; ; Lcl frame size = 0 @@ -42,18 +42,36 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov r15, 0xD1FFAB1E ; gcrRegs +[r15] cmp rdi, r15
- jne SHORT G_M32453_IG05
+ je SHORT G_M32453_IG12
;; size=20 bbWeight=1 PerfScore 4.75
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi r15] - jmp SHORT G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz + mov rax, rdi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=8089 {rax rbx rdi r15}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rax], rcx + je SHORT G_M32453_IG08 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M32453_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi r15]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
cmp rdi, r15
- je SHORT G_M32453_IG07 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M32453_IG10 + mov rax, rdi + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32453_IG08 + ;; size=13 bbWeight=2 PerfScore 5.50 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=8089 {rax rbx rdi r15}, byrefRegs=0000 {}, byref + mov rax, qword ptr [rax] + ; gcrRegs -[rax] + ;; size=3 bbWeight=1 PerfScore 2.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA0] call [rax+0x20]<unknown method> @@ -61,36 +79,36 @@ G_M32453_IG05: ; bbWeight=4, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 mov rdi, rax ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M32453_IG04
+ jne SHORT G_M32453_IG06
;; size=21 bbWeight=4 PerfScore 34.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdi r15]
- jmp SHORT G_M32453_IG09
+ jmp SHORT G_M32453_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x40] ; gcrRegs +[rax] test rax, rax
- je SHORT G_M32453_IG11
+ je SHORT G_M32453_IG14
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx pop r15 pop rbp ret ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbx pop r15 pop rbp ret ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -111,7 +129,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 129, prolog size 9, PerfScore 51.25, instruction count 42, allocated bytes for code 129 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 163, prolog size 9, PerfScore 58.06, instruction count 52, allocated bytes for code 163 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-23 (-50.00%) : 636558.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -3,54 +3,37 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 657 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.50 PerfScore 4.00 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 10.50, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -58,10 +41,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-23 (-50.00%) : 665735.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -3,54 +3,37 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; rbp based frame
+; rsp based frame
; partially interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 11662 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.50 PerfScore 4.00 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 10.50, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -58,10 +41,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-45.90%) : 63313.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)

@@ -2,64 +2,41 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def -; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rsi single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> rax this single-def +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rsi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz - ; byrRegs +[rdi] - mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M64707_IG05 - ;; size=11 bbWeight=1 PerfScore 3.50 -G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rdi]
+ push rax + mov qword ptr [rsp], rsi + mov rax, rdi + ; byrRegs +[rax] + ;; size=8 bbWeight=1 PerfScore 2.25 +G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
mov rdi, qword ptr [rsi+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi+0x08]
- cmp qword ptr [rcx], rdi - je SHORT G_M64707_IG05 - ;; size=16 bbWeight=0.25 PerfScore 2.50 -G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - mov rsi, rax
+ mov rsi, gword ptr [rax]
; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi] - mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M64707_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M64707_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ; gcrRegs -[rsi] +[rax] + ; byrRegs -[rax] + ; gcr arg pop 0 + nop + ;; size=20 bbWeight=1 PerfScore 9.25 +G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 61, prolog size 14, PerfScore 10.94, instruction count 20, allocated bytes for code 61 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 33, prolog size 5, PerfScore 12.75, instruction count 11, allocated bytes for code 33 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -67,10 +44,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

+34 (+39.08%) : 465728.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,79 +10,91 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rdi class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 1 ) int -> rbx "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rsi "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push rbx
- lea rbp, [rsp+0x08] - ;; size=7 bbWeight=1 PerfScore 2.50
+ push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M44244_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi rdi] test rdi, rdi
- je SHORT G_M44244_IG10
+ je SHORT G_M44244_IG11
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rdi], rax
- jne SHORT G_M44244_IG06
+ jne SHORT G_M44244_IG07
test rsi, rsi
- je SHORT G_M44244_IG12
+ je SHORT G_M44244_IG05
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rsi], rax
- jne SHORT G_M44244_IG12 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M44244_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M44244_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M44244_IG04: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M44244_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M44244_IG13
cmp rsi, rdi
- jne SHORT G_M44244_IG05
+ jne SHORT G_M44244_IG06
mov ebx, 1
- jmp SHORT G_M44244_IG08 - ;; size=12 bbWeight=1 PerfScore 3.50 -G_M44244_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M44244_IG09 + ;; size=17 bbWeight=1 PerfScore 4.75 +G_M44244_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 8
pop rbx pop rbp jmp <unknown method> ; gcr arg pop 0
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M44244_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M44244_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG08: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=6 bbWeight=0 PerfScore 0.00 -G_M44244_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi] movzx rax, bl ;; size=3 bbWeight=0 PerfScore 0.00
-G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor ebx, ebx
- jmp SHORT G_M44244_IG08
+ jmp SHORT G_M44244_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 7, PerfScore 17.75, instruction count 34, allocated bytes for code 87 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 121, prolog size 8, PerfScore 20.44, instruction count 43, allocated bytes for code 121 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -90,10 +102,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x02 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+34 (+39.08%) : 690372.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,83 +10,95 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rdi class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 0.51) int -> rbx "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rsi "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push rbx
- lea rbp, [rsp+0x08] - ;; size=7 bbWeight=1 PerfScore 2.50
+ push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M44244_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi rdi] test rdi, rdi
- je SHORT G_M44244_IG11
+ je SHORT G_M44244_IG12
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rdi], rax
- jne SHORT G_M44244_IG07
+ jne SHORT G_M44244_IG08
test rsi, rsi
- je SHORT G_M44244_IG13
+ je SHORT G_M44244_IG05
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rsi], rax
- jne SHORT G_M44244_IG13 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M44244_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M44244_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M44244_IG04: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M44244_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M44244_IG14
cmp rsi, rdi
- jne SHORT G_M44244_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M44244_IG05: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M44244_IG07 + ;; size=10 bbWeight=1 PerfScore 2.50 +G_M44244_IG06: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi rdi] mov ebx, 1
- jmp SHORT G_M44244_IG09
+ jmp SHORT G_M44244_IG10
;; size=7 bbWeight=0.51 PerfScore 1.14
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M44244_IG07: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[rsi rdi]
+ add rsp, 8
pop rbx pop rbp jmp <unknown method> ; gcr arg pop 0
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M44244_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M44244_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=6 bbWeight=0 PerfScore 0.00 -G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi rdi] movzx rax, bl ;; size=3 bbWeight=0 PerfScore 0.00
-G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor ebx, ebx
- jmp SHORT G_M44244_IG09
+ jmp SHORT G_M44244_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 7, PerfScore 16.64, instruction count 34, allocated bytes for code 87 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 121, prolog size 8, PerfScore 19.33, instruction count 43, allocated bytes for code 121 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,10 +106,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x02 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+38 (+44.71%) : 550888.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,83 +10,95 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rdi class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 0.95) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T04] ( 3, 0.70) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rsi "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44244_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push rbx
- lea rbp, [rsp+0x08] - ;; size=7 bbWeight=1 PerfScore 2.50
+ push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50
G_M44244_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi rdi] test rdi, rdi
- je SHORT G_M44244_IG10
+ je SHORT G_M44244_IG13
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rdi], rax
- jne SHORT G_M44244_IG12
+ jne SHORT G_M44244_IG09
test rsi, rsi
- je SHORT G_M44244_IG07
+ je SHORT G_M44244_IG04
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rsi], rax jne SHORT G_M44244_IG07
- ;; size=5 bbWeight=0.50 PerfScore 2.00
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M44244_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi + je SHORT G_M44244_IG06
cmp rsi, rdi
- jne SHORT G_M44244_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25
+ jne SHORT G_M44244_IG08 + ;; size=10 bbWeight=1 PerfScore 2.50
G_M44244_IG05: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi rdi] mov ebx, 1
- jmp SHORT G_M44244_IG08
+ jmp SHORT G_M44244_IG11
;; size=7 bbWeight=0.70 PerfScore 1.57
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs +[rsi rdi]
+G_M44244_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor ebx, ebx + jmp SHORT G_M44244_IG11 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M44244_IG07: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M44244_IG04 + ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M44244_IG08: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 8
pop rbx pop rbp jmp <unknown method> ; gcr arg pop 0
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M44244_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rsi rdi] - xor ebx, ebx - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M44244_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movzx rax, bl - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop rbp - ret - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop rbp - ret - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rsi rdi]
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend + add rsp, 8
pop rbx pop rbp tail.jmp [rax+0x10]<unknown method>
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rsi rdi] + movzx rax, bl + ;; size=3 bbWeight=0 PerfScore 0.00 +G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + ret + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M44244_IG14: ; bbWeight=0, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + ret + ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 85, prolog size 7, PerfScore 17.13, instruction count 33, allocated bytes for code 85 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 123, prolog size 8, PerfScore 20.25, instruction count 44, allocated bytes for code 123 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,10 +106,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x02 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-23 (-50.00%) : 34960.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)

@@ -2,53 +2,36 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M24927_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M24927_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M24927_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M24927_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M24927_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -56,10 +39,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-23 (-50.00%) : 142216.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -2,54 +2,37 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rdi single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 46, prolog size 14, PerfScore 8.38, instruction count 16, allocated bytes for code 46 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 23, prolog size 5, PerfScore 8.50, instruction count 8, allocated bytes for code 23 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -57,10 +40,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-23 (-46.94%) : 30486.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)

@@ -2,56 +2,39 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> rsi single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rsi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ push rax + mov qword ptr [rsp], rsi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M29555_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rsi+0x38] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M29555_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
mov rsi, rdx ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx rsi] +[rax]
- ;; size=8 bbWeight=0.12 PerfScore 0.16 -G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M29555_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ ;; size=16 bbWeight=1 PerfScore 5.50 +G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 14, PerfScore 8.41, instruction count 17, allocated bytes for code 49 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 26, prolog size 5, PerfScore 8.75, instruction count 9, allocated bytes for code 26 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -59,10 +42,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

+30 (+55.56%) : 95061.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)

@@ -8,27 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 8
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push rbx push rax lea rbp, [rsp+0x10] mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=11 bbWeight=0 PerfScore 0.00 -G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M18245_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rsi, gword ptr [rbx+0x10] @@ -37,16 +36,25 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor edx, edx call [<unknown method>] ; gcrRegs -[rsi rdi]
- mov rdi, gword ptr [rbx+0x08] - ; gcrRegs +[rdi] - cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rbx+0x08] + cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
call [System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rbx rdi] - int3 - ;; size=43 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rdi] + mov rsi, 0xD1FFAB1E + mov rdi, rbx + ; gcrRegs +[rdi] + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + ;; size=64 bbWeight=1 PerfScore 19.25 +G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + tail.jmp [rax]System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 54, prolog size 8, PerfScore 0.00, instruction count 15, allocated bytes for code 54 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 26.25, instruction count 21, allocated bytes for code 84 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================ Unwind Info:

+30 (+55.56%) : 97246.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)

@@ -8,27 +8,26 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rdi "CSE - aggressive"
; ; Lcl frame size = 8
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push rbx push rax lea rbp, [rsp+0x10] mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=11 bbWeight=0 PerfScore 0.00 -G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M51850_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rsi, gword ptr [rbx+0x10] @@ -37,16 +36,25 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor edx, edx call [<unknown method>] ; gcrRegs -[rsi rdi]
- mov rdi, gword ptr [rbx+0x08] - ; gcrRegs +[rdi] - cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rbx+0x08] + cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rbx rdi] - int3 - ;; size=43 bbWeight=0 PerfScore 0.00
+ ; gcrRegs -[rdi] + mov rsi, 0xD1FFAB1E + mov rdi, rbx + ; gcrRegs +[rdi] + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + ;; size=64 bbWeight=1 PerfScore 19.25 +G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 54, prolog size 8, PerfScore 0.00, instruction count 15, allocated bytes for code 54 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 26.25, instruction count 21, allocated bytes for code 84 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================ Unwind Info:

+36 (+128.57%) : 94893.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)

@@ -8,31 +8,42 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 2 ) ref -> rdi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V06 cse0 [V06,T02] ( 2, 0 ) ref -> rdi "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V04 cse0 [V04,T02] ( 2, 2 ) ref -> rdi "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M51219_IG02: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ push rbx + push rax + lea rbp, [rsp+0x10] + ;; size=8 bbWeight=1 PerfScore 3.50 +G_M51219_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08] - cmp byte ptr [rdi], dil
+ mov rbx, gword ptr [rdi+0x08] + ; gcrRegs +[rbx] + cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)] ; gcrRegs -[rdi]
- int3 - ;; size=24 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E + mov rdi, rbx + ; gcrRegs +[rdi] + xor esi, esi + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + ;; size=47 bbWeight=1 PerfScore 9.25 +G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 28, prolog size 4, PerfScore 0.00, instruction count 7, allocated bytes for code 28 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 16.00, instruction count 16, allocated bytes for code 64 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================ Unwind Info: @@ -40,9 +51,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

realworld.run.linux.x64.checked.mch

-28 (-36.36%) : 412.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi - mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi]
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rdi+0x38] + mov rdi, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rdi]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi] - cmp qword ptr [rcx], rdi - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 12, PerfScore 19.19, instruction count 26, allocated bytes for code 77 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -72,11 +52,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-16 (-29.63%) : 32961.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)

@@ -2,59 +2,42 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> rbx this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M56342_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M56342_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rax, rsi - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M56342_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbx] mov rdi, qword ptr [rdi+0x38] mov rdi, qword ptr [rdi] mov rdi, qword ptr [rdi]
- cmp qword ptr [rax], rdi - je SHORT G_M56342_IG05 - ;; size=18 bbWeight=0.25 PerfScore 3.00 -G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M56342_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M56342_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=19 bbWeight=1 PerfScore 9.25 +G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 54, prolog size 12, PerfScore 11.88, instruction count 21, allocated bytes for code 54 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 13.50, instruction count 13, allocated bytes for code 38 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -62,11 +45,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-41 (-29.08%) : 8706.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1int

@@ -8,17 +8,13 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 23.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
+; V00 arg0 [V00,T00] ( 7, 22.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.TypedTree+DecisionTree> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T03] ( 5, 5 ) ref -> rdi class-hnd "spilling QMark2" <<unknown class>> -; V07 tmp3 [V07,T02] ( 2, 16 ) long -> rdi "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T01] ( 4, 25 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V09 tmp5 [V09,T06] ( 2, 2 ) int -> rbx "Inlining Arg" -; V10 tmp6 [V10,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
+; V05 tmp1 [V05,T02] ( 2, 2 ) int -> rbx "Inlining Arg" +; V06 tmp2 [V06,T01] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
; ; Lcl frame size = 8 @@ -38,7 +34,7 @@ G_M51841_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M51841_IG08
+ jne SHORT G_M51841_IG06
;; size=23 bbWeight=8 PerfScore 22.00 G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -49,58 +45,39 @@ G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M51841_IG06 - mov rax, rbx - mov rdi, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rax], rdi - je SHORT G_M51841_IG05 - ;; size=41 bbWeight=4 PerfScore 29.00 -G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rbx - ; gcrRegs +[rax] - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M51841_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] - mov rbx, gword ptr [rax+0x10] - ; gcrRegs +[rbx]
+ je SHORT G_M51841_IG04 + mov rbx, gword ptr [rbx+0x10]
jmp SHORT G_M51841_IG02
- ;; size=6 bbWeight=4 PerfScore 16.00 -G_M51841_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=29 bbWeight=4 PerfScore 27.00 +G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M51841_IG05: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + ret + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M51841_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx] + mov ebx, dword ptr [rbx+0x10] + ; gcrRegs -[rbx] + mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int] + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov dword ptr [rax+0x08], ebx + ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M51841_IG07: ; bbWeight=0.50, epilog, nogc, extend add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M51841_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] +[rbx] - mov rdi, rbx - ; gcrRegs +[rdi] - mov rax, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rdi], rax - cmovne rdi, rbx - mov ebx, dword ptr [rdi+0x10] - ; gcrRegs -[rbx] - mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int] - ; gcrRegs -[rdi] - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov dword ptr [rax+0x08], ebx - ;; size=41 bbWeight=0.50 PerfScore 4.00 -G_M51841_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 8 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 141, prolog size 11, PerfScore 103.50, instruction count 39, allocated bytes for code 141 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
+; Total bytes of code 100, prolog size 11, PerfScore 83.50, instruction count 30, allocated bytes for code 100 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
; ============================================================ Unwind Info:

+27 (+1.48%) : 11198.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,107 +9,106 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T37] ( 2, 2 ) ref -> r15 class-hnd single-def <System.String> -; V05 loc4 [V05,T39] ( 2, 2 ) int -> r13 single-def
+; V04 loc3 [V04,T38] ( 2, 2 ) ref -> r15 class-hnd single-def <System.String> +; V05 loc4 [V05,T40] ( 2, 2 ) int -> r13 single-def
; V06 loc5 [V06 ] ( 15, 15 ) struct (40) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T33] ( 4, 2 ) int -> [rbp-0x64] do-not-enreg[M] EH-live -; V08 loc7 [V08,T47] ( 6, 0 ) ref -> [rbp-0x88] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T52] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T34] ( 4, 2 ) int -> [rbp-0x64] do-not-enreg[M] EH-live +; V08 loc7 [V08,T49] ( 5, 0 ) ref -> [rbp-0x88] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T51] ( 3, 0 ) ref -> rax class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T15] ( 5, 5 ) ref -> r15
-; V16 tmp5 [V16,T18] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T16] ( 5, 5 ) ref -> rax
-; V18 tmp7 [V18,T30] ( 3, 3 ) int -> r13
+; V18 tmp7 [V18,T32] ( 3, 3 ) int -> r13
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T19] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T20] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> rbx class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T49] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T53] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T50] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T55] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T48] ( 4, 0 ) int -> rax -; V29 tmp18 [V29,T51] ( 3, 0 ) int -> rax -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T12] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T28] ( 3, 3 ) ref -> rsi class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T42] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T27] ( 2, 4 ) int -> rbx "Inlining Arg" -; V47 tmp36 [V47,T20] ( 2, 4 ) byref -> r12 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T35] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T21] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T44] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> rdi "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> r14 "Inlining Arg" -; V64 tmp53 [V64,T22] ( 2, 4 ) byref -> rbx single-def "Inlining Arg" -;* V65 tmp54 [V65,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T23] ( 2, 4 ) byref -> rdi single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T34] ( 3, 2 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T36] ( 3, 2 ) int -> rbx single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T38] ( 2, 2 ) byref -> r12 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T41] ( 2, 2 ) int -> rbx single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T29] ( 3, 3 ) byref -> rdi "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T31] ( 3, 3 ) int -> rcx "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T43] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T24] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V93 tmp82 [V93,T25] ( 2, 4 ) ref -> rcx single-def "argument with side effect" -; V94 tmp83 [V94,T26] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V95 tmp84 [V95,T54] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V96 tmp85 [V96,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V97 tmp86 [V97,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V98 PSPSym [V98,T45] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T46] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T32] ( 3, 3 ) int -> rax "CSE - conservative" -; V101 cse2 [V101,T08] ( 7, 7 ) int -> r14 multi-def "CSE - moderate"
+; V28 tmp17 [V28,T50] ( 4, 0 ) int -> rax +; V29 tmp18 [V29,T54] ( 3, 0 ) int -> rax +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T11] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T29] ( 3, 3 ) ref -> rsi class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T30] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T28] ( 2, 4 ) int -> rbx "Inlining Arg" +; V45 tmp34 [V45,T21] ( 2, 4 ) byref -> r12 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T36] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T22] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T46] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> rdi "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T14] ( 3, 6 ) int -> r14 "Inlining Arg" +; V62 tmp51 [V62,T23] ( 2, 4 ) byref -> rbx single-def "Inlining Arg" +;* V63 tmp52 [V63,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T24] ( 2, 4 ) byref -> rdi single-def "Inlining Arg" +; V67 tmp56 [V67,T13] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T35] ( 3, 2 ) byref -> r12 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T37] ( 3, 2 ) int -> rbx single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T39] ( 2, 2 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T42] ( 2, 2 ) int -> rbx single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T31] ( 3, 3 ) byref -> rdi "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T33] ( 3, 3 ) int -> rcx "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T44] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T25] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V91 tmp80 [V91,T26] ( 2, 4 ) ref -> rcx single-def "argument with side effect" +; V92 tmp81 [V92,T27] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V93 tmp82 [V93,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V94 tmp83 [V94,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V95 tmp84 [V95,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V96 PSPSym [V96,T47] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T48] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T43] ( 2, 2 ) int -> rax "CSE - conservative" +; V99 cse2 [V99,T17] ( 4, 4 ) int -> r14 "CSE - moderate" +; V100 rat0 [V100,T07] ( 5, 7.50) ref -> rdi "replacement local"
; ; Lcl frame size = 120 @@ -134,8 +133,8 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov rbx, rdi ; gcrRegs +[rbx] ;; size=68 bbWeight=1 PerfScore 17.58
-G_M19825_IG02: ; bbWeight=1, gcVars=0000800000000000 {V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08 V47}
+G_M19825_IG02: ; bbWeight=1, gcVars=0002000000000000 {V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08}
lea rdx, [rbp-0x38] lea rsi, [rbp-0x30] mov rdi, rbx @@ -166,7 +165,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0000800000000000 {V08}, gcrefRegs=000 ;; size=62 bbWeight=1 PerfScore 15.25 G_M19825_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[r15]
- ; GC ptr vars -{V01 V47}
+ ; GC ptr vars -{V01 V08}
mov rdi, 0xD1FFAB1E ; BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -185,8 +184,9 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov gword ptr [rbp-0x80], r15 ; GC ptr vars +{V01} ;; size=40 bbWeight=1 PerfScore 7.25
-G_M19825_IG04: ; bbWeight=1, gcVars=0000800000000080 {V01 V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0002000000000100 {V01 V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15]
+ ; GC ptr vars +{V08}
mov rdi, gword ptr [rbp-0x80] ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -198,7 +198,7 @@ G_M19825_IG04: ; bbWeight=1, gcVars=0000800000000080 {V01 V08}, gcrefRegs ;; size=23 bbWeight=1 PerfScore 4.75 G_M19825_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref test byte ptr [(reloc)], 1 ; global ptr
- je G_M19825_IG18
+ je G_M19825_IG21
;; size=13 bbWeight=1 PerfScore 4.00 G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> @@ -216,7 +216,7 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rdi] ; gcrRegs +[rsi] test rsi, rsi
- je G_M19825_IG17
+ je G_M19825_IG20
lea rdi, bword ptr [r15+0x08] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF @@ -230,15 +230,33 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rsi] ;; size=99 bbWeight=1 PerfScore 12.75
-G_M19825_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M19825_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx ...

+27 (+1.48%) : 29492.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,107 +9,106 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> rbx class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V04 loc3 [V04,T37] ( 2, 2 ) ref -> r15 class-hnd single-def <System.String> -; V05 loc4 [V05,T39] ( 2, 2 ) int -> r13 single-def
+; V04 loc3 [V04,T38] ( 2, 2 ) ref -> r15 class-hnd single-def <System.String> +; V05 loc4 [V05,T40] ( 2, 2 ) int -> r13 single-def
; V06 loc5 [V06 ] ( 15, 15 ) struct (40) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V07 loc6 [V07,T33] ( 4, 2 ) int -> [rbp-0x64] do-not-enreg[M] EH-live -; V08 loc7 [V08,T47] ( 6, 0 ) ref -> [rbp-0x88] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T52] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V07 loc6 [V07,T34] ( 4, 2 ) int -> [rbp-0x64] do-not-enreg[M] EH-live +; V08 loc7 [V08,T49] ( 5, 0 ) ref -> [rbp-0x88] must-init class-hnd EH-live single-def <<unknown class>> +; V09 loc8 [V09,T51] ( 3, 0 ) ref -> rax class-hnd exact single-def <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost>
-; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp4 [V15,T15] ( 5, 5 ) ref -> r15
-; V16 tmp5 [V16,T18] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.String>
+; V16 tmp5 [V16,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.String>
; V17 tmp6 [V17,T16] ( 5, 5 ) ref -> rax
-; V18 tmp7 [V18,T30] ( 3, 3 ) int -> r13
+; V18 tmp7 [V18,T32] ( 3, 3 ) int -> r13
;* V19 tmp8 [V19 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V20 tmp9 [V20,T19] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V20 tmp9 [V20,T20] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Object[]> ; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> rbx class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T49] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T53] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T50] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T52] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T55] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T53] ( 3, 0 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T48] ( 4, 0 ) int -> rax -; V29 tmp18 [V29,T51] ( 3, 0 ) int -> rax -;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> -; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> -; V33 tmp22 [V33,T12] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V34 tmp23 [V34,T28] ( 3, 3 ) ref -> rsi class-hnd "Inline return value spill temp" <<unknown class>> -;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]> -;* V37 tmp26 [V37,T42] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]> -; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> -;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V45 tmp34 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V46 tmp35 [V46,T27] ( 2, 4 ) int -> rbx "Inlining Arg" -; V47 tmp36 [V47,T20] ( 2, 4 ) byref -> r12 single-def "Inlining Arg" -;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V50 tmp39 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> -; V51 tmp40 [V51 ] ( 2, 2 ) int -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V52 tmp41 [V52,T35] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" -;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V54 tmp43 [V54,T21] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]> -;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V57 tmp46 [V57,T44] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T06] ( 4, 8 ) int -> rdi "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> r14 "Inlining Arg" -; V64 tmp53 [V64,T22] ( 2, 4 ) byref -> rbx single-def "Inlining Arg" -;* V65 tmp54 [V65,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T23] ( 2, 4 ) byref -> rdi single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x8)" P-INDEP -; V72 tmp61 [V72,T34] ( 3, 2 ) byref -> r12 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T36] ( 3, 2 ) int -> rbx single-def "field V43._length (fldOffset=0x8)" P-INDEP -; V74 tmp63 [V74,T38] ( 2, 2 ) byref -> r12 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T41] ( 2, 2 ) int -> rbx single-def "field V44._length (fldOffset=0x8)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP -; V78 tmp67 [V78,T29] ( 3, 3 ) byref -> rdi "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T31] ( 3, 3 ) int -> rcx "field V59._length (fldOffset=0x8)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x8)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x8)" P-INDEP -;* V86 tmp75 [V86,T43] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" -; V92 tmp81 [V92,T24] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V93 tmp82 [V93,T25] ( 2, 4 ) ref -> rcx single-def "argument with side effect" -; V94 tmp83 [V94,T26] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V95 tmp84 [V95,T54] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V96 tmp85 [V96,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V97 tmp86 [V97,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V98 PSPSym [V98,T45] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T46] ( 0, 0 ) long -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T32] ( 3, 3 ) int -> rax "CSE - conservative" -; V101 cse2 [V101,T08] ( 7, 7 ) int -> r14 multi-def "CSE - moderate"
+; V28 tmp17 [V28,T50] ( 4, 0 ) int -> rax +; V29 tmp18 [V29,T54] ( 3, 0 ) int -> rax +;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> +; V31 tmp20 [V31,T11] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> +; V32 tmp21 [V32,T12] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V33 tmp22 [V33,T29] ( 3, 3 ) ref -> rsi class-hnd "Inline return value spill temp" <<unknown class>> +;* V34 tmp23 [V34,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V35 tmp24 [V35,T30] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.String[]> +; V36 tmp25 [V36,T00] ( 6, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V37 tmp26 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V38 tmp27 [V38 ] ( 1, 1 ) ubyte -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V39 tmp28 [V39,T05] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String> +;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp32 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp33 [V44,T28] ( 2, 4 ) int -> rbx "Inlining Arg" +; V45 tmp34 [V45,T21] ( 2, 4 ) byref -> r12 single-def "Inlining Arg" +;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo> +; V49 tmp38 [V49 ] ( 2, 2 ) int -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V50 tmp39 [V50,T36] ( 3, 2 ) int -> rax single-def "Inline stloc first use temp" +;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V52 tmp41 [V52,T22] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V53 tmp42 [V53,T03] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]> +;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V55 tmp44 [V55,T46] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" +;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp46 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V58 tmp47 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V59 tmp48 [V59,T06] ( 4, 8 ) int -> rdi "Inlining Arg" +;* V60 tmp49 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V61 tmp50 [V61,T14] ( 3, 6 ) int -> r14 "Inlining Arg" +; V62 tmp51 [V62,T23] ( 2, 4 ) byref -> rbx single-def "Inlining Arg" +;* V63 tmp52 [V63,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp53 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp54 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp55 [V66,T24] ( 2, 4 ) byref -> rdi single-def "Inlining Arg" +; V67 tmp56 [V67,T13] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type> +;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP +;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP +; V70 tmp59 [V70,T35] ( 3, 2 ) byref -> r12 single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T37] ( 3, 2 ) int -> rbx single-def "field V41._length (fldOffset=0x8)" P-INDEP +; V72 tmp61 [V72,T39] ( 2, 2 ) byref -> r12 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V73 tmp62 [V73,T42] ( 2, 2 ) int -> rbx single-def "field V42._length (fldOffset=0x8)" P-INDEP +;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP +; V76 tmp65 [V76,T31] ( 3, 3 ) byref -> rdi "field V57._reference (fldOffset=0x0)" P-INDEP +; V77 tmp66 [V77,T33] ( 3, 3 ) int -> rcx "field V57._length (fldOffset=0x8)" P-INDEP +;* V78 tmp67 [V78 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V60._length (fldOffset=0x8)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V64._length (fldOffset=0x8)" P-INDEP +;* V84 tmp73 [V84,T44] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..008)" +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[008..016)" +;* V86 tmp75 [V86 ] ( 0, 0 ) int -> zero-ref "V19.[016..020)" +;* V87 tmp76 [V87 ] ( 0, 0 ) ubyte -> zero-ref "V19.[020..021)" +;* V88 tmp77 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[024..032)" +;* V89 tmp78 [V89 ] ( 0, 0 ) int -> zero-ref single-def "V19.[032..036)" +; V90 tmp79 [V90,T25] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V91 tmp80 [V91,T26] ( 2, 4 ) ref -> rcx single-def "argument with side effect" +; V92 tmp81 [V92,T27] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V93 tmp82 [V93,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V94 tmp83 [V94,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V95 tmp84 [V95,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V96 PSPSym [V96,T47] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym" +;* V97 cse0 [V97,T48] ( 0, 0 ) long -> zero-ref "CSE - moderate" +; V98 cse1 [V98,T43] ( 2, 2 ) int -> rax "CSE - conservative" +; V99 cse2 [V99,T17] ( 4, 4 ) int -> r14 "CSE - moderate" +; V100 rat0 [V100,T07] ( 5, 7.50) ref -> rdi "replacement local"
; ; Lcl frame size = 120 @@ -134,8 +133,8 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov rbx, rdi ; gcrRegs +[rbx] ;; size=68 bbWeight=1 PerfScore 17.58
-G_M19825_IG02: ; bbWeight=1, gcVars=0000800000000000 {V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08 V47}
+G_M19825_IG02: ; bbWeight=1, gcVars=0002000000000000 {V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08}
lea rdx, [rbp-0x38] lea rsi, [rbp-0x30] mov rdi, rbx @@ -166,7 +165,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0000800000000000 {V08}, gcrefRegs=000 ;; size=62 bbWeight=1 PerfScore 15.25 G_M19825_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[r15]
- ; GC ptr vars -{V01 V47}
+ ; GC ptr vars -{V01 V08}
mov rdi, 0xD1FFAB1E ; BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -185,8 +184,9 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov gword ptr [rbp-0x80], r15 ; GC ptr vars +{V01} ;; size=40 bbWeight=1 PerfScore 7.25
-G_M19825_IG04: ; bbWeight=1, gcVars=0000800000000080 {V01 V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0002000000000100 {V01 V08}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15]
+ ; GC ptr vars +{V08}
mov rdi, gword ptr [rbp-0x80] ; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> @@ -198,7 +198,7 @@ G_M19825_IG04: ; bbWeight=1, gcVars=0000800000000080 {V01 V08}, gcrefRegs ;; size=23 bbWeight=1 PerfScore 4.75 G_M19825_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref test byte ptr [(reloc)], 1 ; global ptr
- je G_M19825_IG18
+ je G_M19825_IG21
;; size=13 bbWeight=1 PerfScore 4.00 G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> @@ -216,7 +216,7 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, gword ptr [rdi] ; gcrRegs +[rsi] test rsi, rsi
- je G_M19825_IG17
+ je G_M19825_IG20
lea rdi, bword ptr [r15+0x08] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF @@ -230,15 +230,33 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rsi] ;; size=99 bbWeight=1 PerfScore 12.75
-G_M19825_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M19825_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx ...

+14 (+3.35%) : 32302.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.Canon]:<.cctor>b4_0(System.Object):this (FullOpts)

@@ -7,64 +7,65 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x38] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]> -; V01 arg1 [V01,T00] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [rbp-0x40] do-not-enreg[M] class-hnd exact EH-live <<unknown class>> -; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r14 class-hnd single-def <<unknown class>> -; V04 loc2 [V04,T17] ( 2, 1 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x40] this class-hnd EH-live single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Object> +; V02 loc0 [V02,T00] ( 10, 6 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <<unknown class>> +; V03 loc1 [V03,T11] ( 4, 4 ) ref -> r13 class-hnd single-def <<unknown class>> +; V04 loc2 [V04,T17] ( 2, 1 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V06 loc4 [V06,T19] ( 4, 0 ) ref -> rbx class-hnd single-def <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T16] ( 2, 3 ) long -> rsi "spilling helperCall" -;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V12 tmp5 [V12,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" -;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V14 tmp7 [V14,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" -; V15 tmp8 [V15,T20] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V16 tmp9 [V16 ] ( 2, 0 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> -;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Threading.CancellationToken> -; V18 tmp11 [V18 ] ( 2, 0 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V16._source (fldOffset=0x0)" P-DEP -; V19 tmp12 [V19,T21] ( 2, 0 ) ref -> rsi "field V17._source (fldOffset=0x0)" P-INDEP
+; V11 tmp4 [V11,T02] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" +;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +; V13 tmp6 [V13,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup" +; V14 tmp7 [V14,T20] ( 3, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V15 tmp8 [V15 ] ( 2, 0 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken> +;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Threading.CancellationToken> +; V17 tmp10 [V17 ] ( 2, 0 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V15._source (fldOffset=0x0)" P-DEP +; V18 tmp11 [V18,T21] ( 2, 0 ) ref -> rsi "field V16._source (fldOffset=0x0)" P-INDEP +; V19 tmp12 [V19,T14] ( 2, 4 ) long -> rsi "argument with side effect"
; V20 tmp13 [V20,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V21 tmp14 [V21,T14] ( 2, 4 ) long -> rax "argument with side effect"
+; V21 tmp14 [V21,T15] ( 2, 4 ) long -> rdi "argument with side effect"
; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V23 cse0 [V23,T15] ( 3, 3 ) long -> rax "CSE - moderate" -; V24 cse1 [V24,T08] ( 6, 4.56) long -> r15 "CSE - aggressive"
+; V23 cse0 [V23,T16] ( 3, 3 ) long -> r14 "CSE - moderate" +; V24 cse1 [V24,T08] ( 6, 4.56) long -> r15 "CSE - moderate"
; V25 rat0 [V25,T10] ( 3, 4.40) long -> rsi "Spilling to split statement for tree"
-; V26 rat1 [V26,T12] ( 3, 4 ) long -> rax "runtime lookup" -; V27 rat2 [V27,T04] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V26 rat1 [V26,T12] ( 3, 4 ) long -> r14 "runtime lookup" +; V27 rat2 [V27,T04] ( 3, 5.60) long -> r14 "fgMakeTemp is creating a new local variable"
; V28 rat3 [V28,T05] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" ; V29 rat4 [V29,T06] ( 3, 5.60) long -> rdi "spilling expr" ; V30 rat5 [V30,T09] ( 3, 4.48) long -> r11 "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M57110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
+ push r13
push rbx
- sub rsp, 56
+ sub rsp, 48
lea rbp, [rsp+0x50] xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x50], rsp
- mov qword ptr [rbp-0x20], rdi - mov gword ptr [rbp-0x38], rdi
+ mov qword ptr [rbp-0x28], rdi + mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V00} mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=36 bbWeight=1 PerfScore 9.25
+ ;; size=38 bbWeight=1 PerfScore 10.25
G_M57110_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdi] mov r15, qword ptr [rdi] mov rsi, r15 mov rax, qword ptr [rsi+0x38] mov rax, qword ptr [rax]
- mov rax, qword ptr [rax+0x10] - test rax, rax
+ mov r14, qword ptr [rax+0x10] + test r14, r14
je SHORT G_M57110_IG04 ;; size=22 bbWeight=1 PerfScore 9.50 G_M57110_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz @@ -76,30 +77,29 @@ G_M57110_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0
- ;; size=18 bbWeight=0.20 PerfScore 0.30
+ mov r14, rax + ;; size=21 bbWeight=0.20 PerfScore 0.35
G_M57110_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, rax - mov gword ptr [rbp-0x40], rbx - ; GC ptr vars +{V02} - test rbx, rbx - je SHORT G_M57110_IG08 - ;; size=12 bbWeight=1 PerfScore 2.50 -G_M57110_IG06: ; bbWeight=0.50, gcVars=0000000000000082 {V00 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - cmp qword ptr [rbx], rsi - jne SHORT G_M57110_IG08 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M57110_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, gword ptr [rbp-0x40]
+ mov rsi, r14 + mov rdi, rsi + mov rsi, rbx
; gcrRegs +[rsi]
- mov r14, gword ptr [rsi+0x40] - ; gcrRegs +[r14] - test r14, r14 - jne SHORT G_M57110_IG10 - ;; size=13 bbWeight=1 PerfScore 4.25 -G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rsi r14] - ; GC ptr vars -{V02} - mov rdi, rax
+ call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + mov gword ptr [rbp-0x48], rax + ; GC ptr vars +{V02} + test rax, rax + je SHORT G_M57110_IG06 + mov r13, gword ptr [rax+0x40] + ; gcrRegs +[r13] + test r13, r13 + jne SHORT G_M57110_IG08 + ;; size=32 bbWeight=1 PerfScore 7.25 +G_M57110_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax r13] + ; GC ptr vars -{V00 V02} + mov rdi, r14
mov rsi, rbx ; gcrRegs +[rsi] call [<unknown method>] @@ -107,116 +107,115 @@ G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=000 ; gcr arg pop 0 nop ;; size=13 bbWeight=1 PerfScore 3.75
-G_M57110_IG09: ; bbWeight=1, epilog, nogc, extend - add rsp, 56
+G_M57110_IG07: ; bbWeight=1, epilog, nogc, extend + add rsp, 48
pop rbx
+ pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25 -G_M57110_IG10: ; bbWeight=1, gcVars=0000000000000082 {V00 V02}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r14] - ; GC ptr vars +{V01 V02} - mov rsi, gword ptr [rbp-0x40] - ; gcrRegs +[rsi] - xor rax, rax - ; gcrRegs +[rax] - mov gword ptr [rsi+0x40], rax - mov rsi, qword ptr [r15+0x38] - ; gcrRegs -[rsi] - mov rsi, qword ptr [rsi] - mov r11, qword ptr [rsi+0x18]
+ ;; size=13 bbWeight=1 PerfScore 3.75 +G_M57110_IG08: ; bbWeight=1, gcVars=0000000000000081 {V00 V02}, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r13] + ; GC ptr vars +{V00 V02} + xor rdi, rdi + ; gcrRegs +[rdi] + mov gword ptr [rax+0x40], rdi + mov rdi, qword ptr [r15+0x38] + ; gcrRegs -[rdi] + mov rdi, qword ptr [rdi] + mov r11, qword ptr [rdi+0x18]
test r11, r11
- je SHORT G_M57110_IG12 - ;; size=26 bbWeight=1 PerfScore 9.50 -G_M57110_IG11: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M57110_IG10 + ;; size=22 bbWeight=1 PerfScore 8.50 +G_M57110_IG09: ; bbWeight=0.80, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M57110_IG13
+ jmp SHORT G_M57110_IG11
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M57110_IG12: ; bbWeight=0.20, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57110_IG10: ; bbWeight=0.20, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r11, rax ;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M57110_IG13: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref - mov rsi, gword ptr [rbp-0x40] - ; gcrRegs +[rsi] - movsx rsi, word ptr [rsi+0x48] - ; gcrRegs -[rsi] - mov rdi, r14
+G_M57110_IG11: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref + mov rax, gword ptr [rbp-0x48] + ; gcrRegs +[rax] + movsx rsi, word ptr [rax+0x48] + mov rdi, r13
; gcrRegs +[rdi] call [r11]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov dword ptr [rbp-0x24], eax
+ mov dword ptr [rbp-0x2C], eax
;; size=18 bbWeight=1 PerfScore 9.25
-G_M57110_IG14: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG12: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] cmp qword ptr [rdi+0x08], 32
- jle SHORT G_M57110_IG17
+ jle SHORT G_M57110_IG15
;; size=14 bbWeight=1 PerfScore 8.00
-G_M57110_IG15: ; bbWeight=0.80, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M57110_IG13: ; bbWeight=0.80, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov r11, qword ptr [rdi+0x20] test r11, r11
- je SHORT G_M57110_IG17
+ je SHORT G_M57110_IG15
;; size=9 bbWeight=0.80 PerfScore 2.60
-G_M57110_IG16: ; bbWeight=0.64, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M57110_IG18
+G_M57110_IG14: ; bbWeight=0.64, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57110_IG16
;; size=2 bbWeight=0.64 PerfScore 1.28
-G_M57110_IG17: ; bbWeight=0.36, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57110_IG15: ; bbWeight=0.36, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r11, rax ...

smoke_tests.nativeaot.linux.x64.checked.mch

-21 (-33.33%) : 13729.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -3,74 +3,53 @@ ; FullOpts code ; NativeAOT compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rsi - mov rbx, rsi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rsi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rdi, qword ptr [rbx]
+ mov rbx, qword ptr [rsi] + mov rdi, rbx
mov rsi, rdx ; gcrRegs +[rsi] call CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[rdx rsi] +[rax]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M33075_IG05 - ;; size=19 bbWeight=1 PerfScore 4.75 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx] - cmp qword ptr [rcx], rdi - je SHORT G_M33075_IG05 - ;; size=8 bbWeight=0.25 PerfScore 1.50 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, rbx
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=26 bbWeight=1 PerfScore 5.25 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 13.69, instruction count 23, allocated bytes for code 63 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0 - CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0 - CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0 + CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10

-21 (-33.33%) : 17048.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -3,74 +3,53 @@ ; FullOpts code ; NativeAOT compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rsi single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rsi - mov rbx, rsi - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rsi + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rdi, qword ptr [rbx]
+ mov rbx, qword ptr [rsi] + mov rdi, rbx
mov rsi, rdx ; gcrRegs +[rsi] call CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[rdx rsi] +[rax]
- mov rcx, rax - ; gcrRegs +[rcx] - test rcx, rcx - je SHORT G_M33075_IG05 - ;; size=19 bbWeight=1 PerfScore 4.75 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx] - cmp qword ptr [rcx], rdi - je SHORT G_M33075_IG05 - ;; size=8 bbWeight=0.25 PerfScore 1.50 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rsi, rax ; gcrRegs +[rsi]
+ mov rdi, rbx
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi]
- mov rcx, rax - ; gcrRegs +[rcx] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rcx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ; gcr arg pop 0 + nop + ;; size=26 bbWeight=1 PerfScore 5.25 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 13.69, instruction count 23, allocated bytes for code 63 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0 - CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0 - CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0 + CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10

-19 (-29.69%) : 16674.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.Canon]:b11_1(System.Object):this (FullOpts)

@@ -3,71 +3,51 @@ ; FullOpts code ; NativeAOT compilation ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> rbx this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rsi class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd exact single-def <System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rdi class-hnd "spilling QMark2" <System.__Canon>
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M10356_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rdi
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M10356_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M10356_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rdi, rsi - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M10356_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M10356_IG03: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x30] - mov rax, qword ptr [rax] - cmp qword ptr [rdi], rax - je SHORT G_M10356_IG05 - ;; size=15 bbWeight=0.25 PerfScore 2.50 -G_M10356_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rdi, rax
+ mov rdi, qword ptr [rbx] + mov rdi, qword ptr [rdi+0x30] + mov rdi, qword ptr [rdi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
mov rdi, rax ; gcrRegs +[rdi]
- ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M10356_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
cmp dword ptr [rdi], edi call System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi] + ; gcr arg pop 0
nop
- ;; size=8 bbWeight=1 PerfScore 4.25 -G_M10356_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=26 bbWeight=1 PerfScore 11.50 +G_M10356_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 64, prolog size 12, PerfScore 15.44, instruction count 24, allocated bytes for code 64 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
+; Total bytes of code 45, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 45 (MethodHash=959bd78b) for method System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
; ============================================================ Cfi Info: >> Start offset : 0x000000 >> End offset : 0xd1ffab1e CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0 - CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8 - CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0 - CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x01 Op: RelOffset DwarfReg:0x3 Offset:0x0 + CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10

+8 (+5.52%) : 17852.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,16 +7,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 5.25) ref -> r15 class-hnd exact <System.Text.UnicodeEncoding>
+; V00 this [V00,T01] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> +; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> +; V02 loc0 [V02,T02] ( 8, 5 ) ref -> r15 class-hnd exact single-def <System.Text.UnicodeEncoding>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Text.UnicodeEncoding> -;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> -; V08 tmp5 [V08,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 3 ) ref -> rdi "virtual vtable call"
+;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> +; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V08 rat0 [V08,T00] ( 5, 7.50) ref -> r15 "replacement local" +; V09 rat1 [V09,T05] ( 3, 3 ) ref -> rdi "virtual vtable call"
; ; Lcl frame size = 8 @@ -35,15 +35,24 @@ G_M7325_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov r15, rsi ; gcrRegs +[r15] test r15, r15
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7325_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M7325_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- lea rdi, [(reloc)] ; System.Text.UnicodeEncoding
+ lea rdi, [(reloc)]
cmp qword ptr [r15], rdi
- jne SHORT G_M7325_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M7325_IG05 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M7325_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] + xor r15, r15 + ; gcrRegs +[r15] + ;; size=3 bbWeight=0.25 PerfScore 0.06 +G_M7325_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + test r15, r15 + je SHORT G_M7325_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M7325_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -56,13 +65,13 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [rax+0x98]<unknown method> ; gcrRegs -[rdi] cmp r14d, eax
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rdi, byte ptr [rbx+0x27] cmp dil, byte ptr [r15+0x27]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rdi, byte ptr [rbx+0x26] cmp dil, byte ptr [r15+0x26]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov rsi, gword ptr [r15+0x10] @@ -71,14 +80,14 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi] test eax, eax
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG08
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov rsi, gword ptr [r15+0x18] ; gcrRegs +[rsi] mov rax, qword ptr [rdi] ;; size=83 bbWeight=0.50 PerfScore 20.12
-G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -86,11 +95,11 @@ G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x20]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M7325_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7325_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -99,7 +108,7 @@ G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 145, prolog size 12, PerfScore 32.38, instruction count 50, allocated bytes for code 145 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 153, prolog size 12, PerfScore 34.81, instruction count 53, allocated bytes for code 153 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info:

+8 (+5.52%) : 22588.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,16 +7,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 5.25) ref -> r15 class-hnd exact <System.Text.UnicodeEncoding>
+; V00 this [V00,T01] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> +; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> +; V02 loc0 [V02,T02] ( 8, 5 ) ref -> r15 class-hnd exact single-def <System.Text.UnicodeEncoding>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Text.UnicodeEncoding> -;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> -; V08 tmp5 [V08,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 3 ) ref -> rdi "virtual vtable call"
+;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> +; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V08 rat0 [V08,T00] ( 5, 7.50) ref -> r15 "replacement local" +; V09 rat1 [V09,T05] ( 3, 3 ) ref -> rdi "virtual vtable call"
; ; Lcl frame size = 8 @@ -35,15 +35,24 @@ G_M7325_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov r15, rsi ; gcrRegs +[r15] test r15, r15
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7325_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M7325_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- lea rdi, [(reloc)] ; System.Text.UnicodeEncoding
+ lea rdi, [(reloc)]
cmp qword ptr [r15], rdi
- jne SHORT G_M7325_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M7325_IG05 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M7325_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] + xor r15, r15 + ; gcrRegs +[r15] + ;; size=3 bbWeight=0.25 PerfScore 0.06 +G_M7325_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + test r15, r15 + je SHORT G_M7325_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M7325_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -56,13 +65,13 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [rax+0x98]<unknown method> ; gcrRegs -[rdi] cmp r14d, eax
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rdi, byte ptr [rbx+0x27] cmp dil, byte ptr [r15+0x27]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rdi, byte ptr [rbx+0x26] cmp dil, byte ptr [r15+0x26]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov rsi, gword ptr [r15+0x10] @@ -71,14 +80,14 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi] test eax, eax
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG08
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov rsi, gword ptr [r15+0x18] ; gcrRegs +[rsi] mov rax, qword ptr [rdi] ;; size=83 bbWeight=0.50 PerfScore 20.12
-G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -86,11 +95,11 @@ G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend pop rbp tail.jmp [rax+0x20]<unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M7325_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7325_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -99,7 +108,7 @@ G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 145, prolog size 12, PerfScore 32.38, instruction count 50, allocated bytes for code 145 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 153, prolog size 12, PerfScore 34.81, instruction count 53, allocated bytes for code 153 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info:

+8 (+6.25%) : 2133.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,19 +7,19 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd exact single-def <System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> -; V02 loc0 [V02,T02] ( 8, 4.75) ref -> r15 class-hnd exact <System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo>
+; V00 this [V00,T01] ( 7, 4.50) ref -> rbx this class-hnd exact single-def <System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object> +; V02 loc0 [V02,T03] ( 7, 4.50) ref -> r15 class-hnd exact single-def <System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Internal.Metadata.NativeFormat.EventHandle> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo> -;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> -;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Internal.Metadata.NativeFormat.EventHandle> -; V08 tmp4 [V08,T06] ( 2, 1 ) int -> rdi "field V03._value (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T07] ( 2, 1 ) int -> rsi "field V07._value (fldOffset=0x0)" P-INDEP -; V10 tmp6 [V10,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V11 tmp7 [V11,T04] ( 3, 3 ) ref -> rbx single-def "argument with side effect" -; V12 tmp8 [V12,T05] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> +;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Internal.Metadata.NativeFormat.EventHandle> +; V07 tmp3 [V07,T07] ( 2, 1 ) int -> rdi "field V03._value (fldOffset=0x0)" P-INDEP +; V08 tmp4 [V08,T08] ( 2, 1 ) int -> rsi "field V06._value (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V10 tmp6 [V10,T05] ( 3, 3 ) ref -> rbx single-def "argument with side effect" +; V11 tmp7 [V11,T06] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V12 rat0 [V12,T00] ( 5, 7.50) ref -> r15 "replacement local"
; ; Lcl frame size = 0 @@ -38,22 +38,31 @@ G_M40518_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, test r15, r15 je SHORT G_M40518_IG05 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M40518_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M40518_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- lea rdi, [(reloc)] ; System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo
+ lea rdi, [(reloc)]
cmp qword ptr [r15], rdi
- jne SHORT G_M40518_IG05 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M40518_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M40518_IG05 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M40518_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] + xor r15, r15 + ; gcrRegs +[r15] + ;; size=3 bbWeight=0.25 PerfScore 0.06 +G_M40518_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + test r15, r15 + je SHORT G_M40518_IG07 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M40518_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x38] ; gcrRegs +[rdi] cmp rdi, gword ptr [r15+0x38]
- jne SHORT G_M40518_IG05
+ jne SHORT G_M40518_IG07
mov edi, dword ptr [rbx+0x40] ; gcrRegs -[rdi] mov esi, dword ptr [r15+0x40] cmp edi, esi
- jne SHORT G_M40518_IG05
+ jne SHORT G_M40518_IG07
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rsi, gword ptr [r15+0x08] @@ -62,7 +71,7 @@ G_M40518_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 call [rax+0x20]<unknown method> ; gcrRegs -[rsi rdi] test eax, eax
- je SHORT G_M40518_IG05
+ je SHORT G_M40518_IG07
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -85,28 +94,28 @@ G_M40518_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 call [rax+0x218]<unknown method> ; gcrRegs -[rbx rsi rdi] test eax, eax
- jne SHORT G_M40518_IG07
+ jne SHORT G_M40518_IG09
;; size=79 bbWeight=0.50 PerfScore 19.50
-G_M40518_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40518_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M40518_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r15 - pop rbp - ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M40518_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov eax, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M40518_IG08: ; bbWeight=0.50, epilog, nogc, extend pop rbx pop r15 pop rbp ret ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M40518_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M40518_IG10: ; bbWeight=0.50, epilog, nogc, extend + pop rbx + pop r15 + pop rbp + ret + ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 128, prolog size 9, PerfScore 28.62, instruction count 47, allocated bytes for code 128 (MethodHash=c0f861b9) for method System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 136, prolog size 9, PerfScore 31.06, instruction count 50, allocated bytes for code 136 (MethodHash=c0f861b9) for method System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 126 84 37 5 -1,671 +1,425
benchmarks.run_pgo.linux.x64.checked.mch 9,442 2,217 7,177 48 -36,638 +92,122
benchmarks.run_tiered.linux.x64.checked.mch 35 29 6 0 -528 +150
coreclr_tests.run.linux.x64.checked.mch 1,159 448 455 256 -5,964 +180,378
libraries.crossgen2.linux.x64.checked.mch 1,105 1,100 5 0 -36,798 +108
libraries.pmi.linux.x64.checked.mch 599 524 57 18 -12,384 +1,912
libraries_tests.run.linux.x64.Release.mch 8,848 3,882 3,968 998 -62,624 +110,057
librariestestsnotieredcompilation.run.linux.x64.Release.mch 880 699 155 26 -18,571 +11,287
realworld.run.linux.x64.checked.mch 134 120 9 5 -2,493 +189
smoke_tests.nativeaot.linux.x64.checked.mch 73 56 11 6 -672 +87
22,401 9,159 11,880 1,362 -178,343 +397,715

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 32,685 3,549 29,136 0 (0.00%) 3,532 (9.75%)
benchmarks.run_pgo.linux.x64.checked.mch 152,227 63,207 89,020 0 (0.00%) 8,100 (5.05%)
benchmarks.run_tiered.linux.x64.checked.mch 64,802 50,236 14,566 0 (0.00%) 584 (0.89%)
coreclr_tests.run.linux.x64.checked.mch 589,288 355,942 233,346 1 (0.00%) 9,725 (1.62%)
libraries.crossgen2.linux.x64.checked.mch 234,322 15 234,307 0 (0.00%) 7 (0.00%)
libraries.pmi.linux.x64.checked.mch 268,664 6 268,658 0 (0.00%) 28,267 (9.52%)
libraries_tests.run.linux.x64.Release.mch 721,131 496,184 224,947 0 (0.00%) 38,635 (5.09%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 264,812 21,912 242,900 0 (0.00%) 40,631 (13.30%)
realworld.run.linux.x64.checked.mch 28,701 9 28,692 0 (0.00%) 4,382 (13.25%)
smoke_tests.nativeaot.linux.x64.checked.mch 25,950 10 25,940 0 (0.00%) 1,464 (5.34%)
2,382,582 991,070 1,391,512 1 (0.00%) 135,327 (5.37%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9116540 (overridden on cmd)
Total bytes of diff: 9116294 (overridden on cmd)
Total bytes of delta: -246 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         107 : 23347.dasm (47.56 % of base)
          66 : 3728.dasm (3.16 % of base)
          66 : 5247.dasm (3.01 % of base)
          66 : 11410.dasm (7.59 % of base)
          63 : 35928.dasm (7.69 % of base)
          63 : 8592.dasm (2.87 % of base)
          62 : 3787.dasm (2.68 % of base)
          57 : 29812.dasm (12.93 % of base)
          57 : 34145.dasm (10.29 % of base)
          57 : 18369.dasm (13.90 % of base)
          54 : 29420.dasm (13.88 % of base)
          54 : 4308.dasm (15.25 % of base)
          54 : 29661.dasm (12.47 % of base)
          54 : 30162.dasm (10.17 % of base)
          54 : 30583.dasm (10.38 % of base)
          54 : 8797.dasm (13.43 % of base)
          36 : 3814.dasm (5.14 % of base)
          27 : 12344.dasm (1.48 % of base)
          27 : 18316.dasm (1.48 % of base)
          27 : 34879.dasm (1.48 % of base)

Top file improvements (bytes):
        -107 : 7837.dasm (-3.41 % of base)
         -78 : 2411.dasm (-12.75 % of base)
         -58 : 7567.dasm (-1.45 % of base)
         -45 : 10194.dasm (-4.55 % of base)
         -37 : 9477.dasm (-4.76 % of base)
         -36 : 20031.dasm (-5.87 % of base)
         -34 : 10302.dasm (-11.68 % of base)
         -33 : 7120.dasm (-30.00 % of base)
         -30 : 9018.dasm (-23.62 % of base)
         -29 : 12491.dasm (-14.65 % of base)
         -29 : 21249.dasm (-11.07 % of base)
         -28 : 18075.dasm (-28.87 % of base)
         -28 : 413.dasm (-36.36 % of base)
         -28 : 9506.dasm (-8.19 % of base)
         -26 : 10144.dasm (-4.19 % of base)
         -26 : 22445.dasm (-6.47 % of base)
         -26 : 24439.dasm (-14.53 % of base)
         -25 : 19938.dasm (-28.74 % of base)
         -25 : 4664.dasm (-26.60 % of base)
         -24 : 17600.dasm (-2.63 % of base)

63 total files with Code Size differences (36 improved, 27 regressed), 5 unchanged.

Top method regressions (bytes):
         107 (47.56 % of base) : 23347.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          66 (3.16 % of base) : 3728.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          66 (3.01 % of base) : 5247.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          66 (7.59 % of base) : 11410.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          63 (2.87 % of base) : 8592.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          63 (7.69 % of base) : 35928.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          62 (2.68 % of base) : 3787.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          57 (13.90 % of base) : 18369.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          57 (12.93 % of base) : 29812.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          57 (10.29 % of base) : 34145.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          54 (15.25 % of base) : 4308.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          54 (13.43 % of base) : 8797.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          54 (13.88 % of base) : 29420.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          54 (12.47 % of base) : 29661.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          54 (10.17 % of base) : 30162.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          54 (10.38 % of base) : 30583.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          36 (5.14 % of base) : 3814.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          27 (1.48 % of base) : 12344.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          27 (1.48 % of base) : 18316.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          27 (1.48 % of base) : 34879.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

Top method improvements (bytes):
        -107 (-3.41 % of base) : 7837.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -78 (-12.75 % of base) : 2411.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (FullOpts)
         -58 (-1.45 % of base) : 7567.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -45 (-4.55 % of base) : 10194.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (FullOpts)
         -37 (-4.76 % of base) : 9477.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -36 (-5.87 % of base) : 20031.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -34 (-11.68 % of base) : 10302.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -33 (-30.00 % of base) : 7120.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -30 (-23.62 % of base) : 9018.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -29 (-14.65 % of base) : 12491.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (FullOpts)
         -29 (-11.07 % of base) : 21249.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -28 (-28.87 % of base) : 18075.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-36.36 % of base) : 413.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-8.19 % of base) : 9506.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -26 (-14.53 % of base) : 24439.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -26 (-6.47 % of base) : 22445.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -26 (-4.19 % of base) : 10144.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
         -25 (-26.60 % of base) : 4664.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -25 (-28.74 % of base) : 19938.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -24 (-2.63 % of base) : 17600.dasm - System.Xml.XmlNode:AppendChild(System.Xml.XmlNode):System.Xml.XmlNode:this (FullOpts)

Top method regressions (percentages):
         107 (47.56 % of base) : 23347.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          19 (20.21 % of base) : 9855.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
          19 (20.21 % of base) : 33726.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
          19 (20.21 % of base) : 12693.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
          19 (20.21 % of base) : 14720.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
          19 (20.21 % of base) : 17351.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
          19 (20.21 % of base) : 30014.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)
          54 (15.25 % of base) : 4308.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          57 (13.90 % of base) : 18369.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          54 (13.88 % of base) : 29420.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          54 (13.43 % of base) : 8797.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          57 (12.93 % of base) : 29812.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          54 (12.47 % of base) : 29661.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          54 (10.38 % of base) : 30583.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          57 (10.29 % of base) : 34145.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          54 (10.17 % of base) : 30162.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          63 (7.69 % of base) : 35928.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          66 (7.59 % of base) : 11410.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          36 (5.14 % of base) : 3814.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          14 (3.35 % of base) : 5898.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)

Top method improvements (percentages):
         -23 (-50.00 % of base) : 5497.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-36.36 % of base) : 413.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -33 (-30.00 % of base) : 7120.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -21 (-29.58 % of base) : 10850.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -16 (-29.09 % of base) : 2892.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -28 (-28.87 % of base) : 18075.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -25 (-28.74 % of base) : 19938.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -25 (-26.60 % of base) : 4664.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-25.35 % of base) : 6302.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -30 (-23.62 % of base) : 9018.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -16 (-21.05 % of base) : 12487.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
         -17 (-16.19 % of base) : 12238.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -17 (-16.19 % of base) : 7839.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -29 (-14.65 % of base) : 12491.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (FullOpts)
         -26 (-14.53 % of base) : 24439.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -14 (-14.43 % of base) : 20241.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -21 (-13.13 % of base) : 4396.dasm - System.Threading.Tasks.TaskFactory`1+<>c__56`1[System.__Canon,System.__Canon]:<ContinueWhenAllImpl>b__56_0(System.Threading.Tasks.Task`1[System.__Canon],System.Object):System.__Canon:this (FullOpts)
         -22 (-12.87 % of base) : 24557.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (FullOpts)
         -78 (-12.75 % of base) : 2411.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (FullOpts)
         -15 (-12.30 % of base) : 19502.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)


benchmarks.run_pgo.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61759845 (overridden on cmd)
Total bytes of diff: 61815329 (overridden on cmd)
Total bytes of delta: 55484 (0.09 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          93 : 57641.dasm (14.29 % of base)
          91 : 49269.dasm (13.98 % of base)
          83 : 49729.dasm (12.75 % of base)
          83 : 152295.dasm (12.75 % of base)
          80 : 109595.dasm (14.81 % of base)
          80 : 151615.dasm (14.81 % of base)
          80 : 40035.dasm (14.81 % of base)
          80 : 68529.dasm (14.81 % of base)
          80 : 117057.dasm (14.81 % of base)
          80 : 133184.dasm (14.81 % of base)
          80 : 157279.dasm (14.81 % of base)
          80 : 29340.dasm (14.81 % of base)
          80 : 45022.dasm (14.81 % of base)
          76 : 133185.dasm (12.99 % of base)
          74 : 126517.dasm (10.45 % of base)
          74 : 142317.dasm (10.45 % of base)
          71 : 115096.dasm (13.15 % of base)
          71 : 64423.dasm (13.15 % of base)
          71 : 83862.dasm (13.15 % of base)
          71 : 26959.dasm (13.15 % of base)

Top file improvements (bytes):
        -127 : 97466.dasm (-3.28 % of base)
        -117 : 97014.dasm (-4.02 % of base)
         -39 : 139584.dasm (-12.19 % of base)
         -34 : 97640.dasm (-7.00 % of base)
         -33 : 103785.dasm (-6.99 % of base)
         -32 : 136486.dasm (-9.47 % of base)
         -32 : 46407.dasm (-9.47 % of base)
         -32 : 150687.dasm (-9.47 % of base)
         -30 : 135033.dasm (-8.70 % of base)
         -30 : 136394.dasm (-8.70 % of base)
         -30 : 156842.dasm (-6.41 % of base)
         -30 : 43457.dasm (-8.00 % of base)
         -30 : 43481.dasm (-8.70 % of base)
         -30 : 63485.dasm (-8.70 % of base)
         -30 : 96009.dasm (-1.15 % of base)
         -30 : 108914.dasm (-8.70 % of base)
         -30 : 136374.dasm (-8.00 % of base)
         -30 : 141374.dasm (-8.00 % of base)
         -30 : 141381.dasm (-8.70 % of base)
         -30 : 54641.dasm (-8.00 % of base)

73 total files with Code Size differences (36 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
          93 (14.29 % of base) : 57641.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          91 (13.98 % of base) : 49269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          83 (12.75 % of base) : 49729.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          83 (12.75 % of base) : 152295.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          80 (14.81 % of base) : 109595.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 151615.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 40035.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 68529.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 117057.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 133184.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 157279.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 29340.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 45022.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          76 (12.99 % of base) : 133185.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
          74 (10.45 % of base) : 126517.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          74 (10.45 % of base) : 142317.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          71 (13.15 % of base) : 115096.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 64423.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 83862.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 26959.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (bytes):
        -127 (-3.28 % of base) : 97466.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -117 (-4.02 % of base) : 97014.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:TrySynthesizeAttribute(int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.TypedConstant]],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData:this (Tier1)
         -39 (-12.19 % of base) : 139584.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
         -34 (-7.00 % of base) : 97640.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitReference(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.Emit.EmitContext) (Tier1)
         -33 (-6.99 % of base) : 103785.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -32 (-9.47 % of base) : 136486.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -32 (-9.47 % of base) : 46407.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -32 (-9.47 % of base) : 150687.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-1.15 % of base) : 96009.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
         -30 (-8.00 % of base) : 43457.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-8.00 % of base) : 136374.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-8.00 % of base) : 141374.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-8.00 % of base) : 54641.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-8.70 % of base) : 135033.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 136394.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 43481.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 63485.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 108914.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 141381.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-6.41 % of base) : 156842.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCompleted():ubyte:this (Tier1)

Top method regressions (percentages):
          43 (15.52 % of base) : 63078.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
          43 (15.52 % of base) : 73612.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
          80 (14.81 % of base) : 109595.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 151615.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 40035.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 68529.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 117057.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 133184.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 157279.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 29340.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          80 (14.81 % of base) : 45022.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          93 (14.29 % of base) : 57641.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          91 (13.98 % of base) : 49269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          71 (13.15 % of base) : 115096.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 64423.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 83862.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 26959.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          71 (13.15 % of base) : 106721.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          76 (12.99 % of base) : 133185.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
          83 (12.75 % of base) : 49729.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)

Top method improvements (percentages):
         -28 (-36.36 % of base) : 7908.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -23 (-21.10 % of base) : 92906.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -29 (-14.65 % of base) : 30190.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
         -39 (-12.19 % of base) : 139584.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
         -13 (-10.32 % of base) : 102923.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -32 (-9.47 % of base) : 136486.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -32 (-9.47 % of base) : 46407.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -32 (-9.47 % of base) : 150687.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -29 (-9.29 % of base) : 146233.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
         -22 (-9.02 % of base) : 27798.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -29 (-8.71 % of base) : 139675.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -29 (-8.71 % of base) : 152148.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -29 (-8.71 % of base) : 156796.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -29 (-8.71 % of base) : 36745.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -30 (-8.70 % of base) : 135033.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 136394.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 43481.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 63485.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 108914.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)
         -30 (-8.70 % of base) : 141381.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)


benchmarks.run_tiered.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 20952201 (overridden on cmd)
Total bytes of diff: 20951823 (overridden on cmd)
Total bytes of delta: -378 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          25 : 30433.dasm (21.93 % of base)
          25 : 64974.dasm (21.93 % of base)
          25 : 34724.dasm (21.93 % of base)
          25 : 61124.dasm (21.93 % of base)
          25 : 24246.dasm (21.93 % of base)
          25 : 31195.dasm (21.93 % of base)

Top file improvements (bytes):
         -36 : 43052.dasm (-6.37 % of base)
         -29 : 22820.dasm (-14.65 % of base)
         -29 : 51392.dasm (-11.07 % of base)
         -28 : 3263.dasm (-9.59 % of base)
         -28 : 3802.dasm (-36.36 % of base)
         -26 : 48621.dasm (-6.47 % of base)
         -26 : 51245.dasm (-14.53 % of base)
         -25 : 61207.dasm (-26.60 % of base)
         -22 : 9217.dasm (-9.02 % of base)
         -22 : 51761.dasm (-12.87 % of base)
         -21 : 24544.dasm (-29.58 % of base)
         -18 : 44403.dasm (-17.31 % of base)
         -18 : 47563.dasm (-3.51 % of base)
         -16 : 3506.dasm (-9.52 % of base)
         -16 : 51919.dasm (-5.03 % of base)
         -16 : 3690.dasm (-4.57 % of base)
         -16 : 3705.dasm (-21.05 % of base)
         -14 : 3724.dasm (-14.14 % of base)
         -14 : 51297.dasm (-7.25 % of base)
         -14 : 59268.dasm (-2.85 % of base)

35 total files with Code Size differences (29 improved, 6 regressed), 0 unchanged.

Top method regressions (bytes):
          25 (21.93 % of base) : 24246.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
          25 (21.93 % of base) : 64974.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          25 (21.93 % of base) : 30433.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          25 (21.93 % of base) : 31195.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          25 (21.93 % of base) : 34724.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          25 (21.93 % of base) : 61124.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (bytes):
         -36 (-6.37 % of base) : 43052.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier1)
         -29 (-14.65 % of base) : 22820.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
         -29 (-11.07 % of base) : 51392.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-36.36 % of base) : 3802.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-9.59 % of base) : 3263.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -26 (-14.53 % of base) : 51245.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -26 (-6.47 % of base) : 48621.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -25 (-26.60 % of base) : 61207.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -22 (-12.87 % of base) : 51761.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -22 (-9.02 % of base) : 9217.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -21 (-29.58 % of base) : 24544.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -18 (-3.51 % of base) : 47563.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -18 (-17.31 % of base) : 44403.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -16 (-9.52 % of base) : 3506.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
         -16 (-21.05 % of base) : 3705.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
         -16 (-5.03 % of base) : 51919.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -16 (-4.57 % of base) : 3690.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -14 (-14.14 % of base) : 3724.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Apply(BenchmarkDotNet.Characteristics.CharacteristicObject):System.__Canon:this (Tier1)
         -14 (-7.25 % of base) : 51297.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -14 (-5.62 % of base) : 3267.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)

Top method regressions (percentages):
          25 (21.93 % of base) : 24246.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
          25 (21.93 % of base) : 64974.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          25 (21.93 % of base) : 30433.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          25 (21.93 % of base) : 31195.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          25 (21.93 % of base) : 34724.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          25 (21.93 % of base) : 61124.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-36.36 % of base) : 3802.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -21 (-29.58 % of base) : 24544.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -25 (-26.60 % of base) : 61207.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -16 (-21.05 % of base) : 3705.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (Tier1)
         -18 (-17.31 % of base) : 44403.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -29 (-14.65 % of base) : 22820.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:GenerateValue[System.__Canon](System.Random):System.__Canon (Tier1)
         -26 (-14.53 % of base) : 51245.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -14 (-14.14 % of base) : 3724.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Apply(BenchmarkDotNet.Characteristics.CharacteristicObject):System.__Canon:this (Tier1)
         -22 (-12.87 % of base) : 51761.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -29 (-11.07 % of base) : 51392.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -13 (-10.48 % of base) : 51636.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -28 (-9.59 % of base) : 3263.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -16 (-9.52 % of base) : 3506.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon]:ResolveValueCore(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Object):System.Object:this (Tier1)
         -13 (-9.35 % of base) : 47942.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -22 (-9.02 % of base) : 9217.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -13 (-8.23 % of base) : 49903.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -13 (-7.88 % of base) : 44400.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -14 (-7.25 % of base) : 51297.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -26 (-6.47 % of base) : 48621.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -36 (-6.37 % of base) : 43052.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (Tier1)

35 total methods with Code Size differences (29 improved, 6 regressed).


coreclr_tests.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 379875950 (overridden on cmd)
Total bytes of diff: 380050364 (overridden on cmd)
Total bytes of delta: 174414 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        7162 : 579571.dasm (36.27 % of base)
        7131 : 578957.dasm (37.83 % of base)
        7084 : 579498.dasm (38.50 % of base)
        6991 : 580186.dasm (42.33 % of base)
        6987 : 580883.dasm (36.37 % of base)
        6968 : 580974.dasm (37.54 % of base)
        6953 : 579121.dasm (39.10 % of base)
        6951 : 580453.dasm (37.48 % of base)
        6915 : 579155.dasm (36.89 % of base)
        6907 : 580261.dasm (39.14 % of base)
        6899 : 580643.dasm (35.31 % of base)
        6832 : 580917.dasm (34.14 % of base)
        6803 : 579024.dasm (36.89 % of base)
        6796 : 579753.dasm (38.08 % of base)
        6749 : 579785.dasm (39.95 % of base)
        6741 : 580155.dasm (39.10 % of base)
        6703 : 578881.dasm (38.88 % of base)
        6688 : 580066.dasm (32.36 % of base)
        6682 : 579088.dasm (39.17 % of base)
        6661 : 578990.dasm (36.83 % of base)

Top file improvements (bytes):
        -129 : 397847.dasm (-4.29 % of base)
        -115 : 391988.dasm (-1.89 % of base)
         -85 : 394137.dasm (-1.33 % of base)
         -85 : 399779.dasm (-1.33 % of base)
         -68 : 389646.dasm (-4.10 % of base)
         -68 : 398611.dasm (-4.10 % of base)
         -59 : 399106.dasm (-2.46 % of base)
         -52 : 399494.dasm (-0.90 % of base)
         -45 : 392012.dasm (-1.89 % of base)
         -44 : 389193.dasm (-15.07 % of base)
         -44 : 530917.dasm (-21.26 % of base)
         -43 : 402890.dasm (-4.23 % of base)
         -41 : 35582.dasm (-1.59 % of base)
         -40 : 388837.dasm (-14.29 % of base)
         -37 : 392345.dasm (-2.45 % of base)
         -37 : 392429.dasm (-3.90 % of base)
         -37 : 501105.dasm (-4.48 % of base)
         -36 : 239469.dasm (-1.66 % of base)
         -36 : 239859.dasm (-1.66 % of base)
         -36 : 518382.dasm (-1.66 % of base)

78 total files with Code Size differences (50 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
        7162 (36.27 % of base) : 579571.dasm - Generated920:CalliTest() (FullOpts)
        7131 (37.83 % of base) : 578957.dasm - Generated902:CalliTest() (FullOpts)
        7084 (38.50 % of base) : 579498.dasm - Generated918:CalliTest() (FullOpts)
        6991 (42.33 % of base) : 580186.dasm - Generated938:CalliTest() (FullOpts)
        6987 (36.37 % of base) : 580883.dasm - Generated959:CalliTest() (FullOpts)
        6968 (37.54 % of base) : 580974.dasm - Generated962:CalliTest() (FullOpts)
        6953 (39.10 % of base) : 579121.dasm - Generated907:CalliTest() (FullOpts)
        6951 (37.48 % of base) : 580453.dasm - Generated946:CalliTest() (FullOpts)
        6915 (36.89 % of base) : 579155.dasm - Generated908:CalliTest() (FullOpts)
        6907 (39.14 % of base) : 580261.dasm - Generated940:CalliTest() (FullOpts)
        6899 (35.31 % of base) : 580643.dasm - Generated952:CalliTest() (FullOpts)
        6832 (34.14 % of base) : 580917.dasm - Generated960:CalliTest() (FullOpts)
        6803 (36.89 % of base) : 579024.dasm - Generated904:CalliTest() (FullOpts)
        6796 (38.08 % of base) : 579753.dasm - Generated925:CalliTest() (FullOpts)
        6749 (39.95 % of base) : 579785.dasm - Generated926:CalliTest() (FullOpts)
        6741 (39.10 % of base) : 580155.dasm - Generated937:CalliTest() (FullOpts)
        6703 (38.88 % of base) : 578881.dasm - Generated900:CalliTest() (FullOpts)
        6688 (32.36 % of base) : 580066.dasm - Generated934:CalliTest() (FullOpts)
        6682 (39.17 % of base) : 579088.dasm - Generated906:CalliTest() (FullOpts)
        6661 (36.83 % of base) : 578990.dasm - Generated903:CalliTest() (FullOpts)

Top method improvements (bytes):
        -129 (-4.29 % of base) : 397847.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -115 (-1.89 % of base) : 391988.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (Tier1)
         -85 (-1.33 % of base) : 394137.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
         -85 (-1.33 % of base) : 399779.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
         -68 (-4.10 % of base) : 389646.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__WalkFormals|0_0(Internal.TypeSystem.InstantiatedType,ubyte):this (Tier1)
         -68 (-4.10 % of base) : 398611.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__WalkFormals|0_0(Internal.TypeSystem.InstantiatedType,ubyte):this (Tier1)
         -59 (-2.46 % of base) : 399106.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ComputeTypeReferenceVersionsWithCode(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -52 (-0.90 % of base) : 399494.dasm - ILCompiler.ReadyToRunCodegenCompilation:ComputeDependencyNodeDependencies(System.Collections.Generic.List`1[ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory]]):this (Tier1)
         -45 (-1.89 % of base) : 392012.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ComputeTypeReferenceVersionsWithCode(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -44 (-15.07 % of base) : 389193.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
         -44 (-21.26 % of base) : 530917.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -43 (-4.23 % of base) : 402890.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -41 (-1.59 % of base) : 35582.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
         -40 (-14.29 % of base) : 388837.dasm - Internal.TypeSystem.TypeDesc:Equals(System.Object):ubyte:this (Tier1)
         -37 (-3.90 % of base) : 392429.dasm - Internal.TypeSystem.DebugNameFormatter:AssemblyQualify(System.Text.StringBuilder,Internal.TypeSystem.DefType,int) (Tier1)
         -37 (-4.48 % of base) : 501105.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -37 (-2.45 % of base) : 392345.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
         -36 (-1.66 % of base) : 239469.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
         -36 (-1.66 % of base) : 239859.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
         -36 (-1.66 % of base) : 518382.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)

Top method regressions (percentages):
          44 (400.00 % of base) : 497763.dasm - T:TestEntryPoint():int (FullOpts)
         107 (47.56 % of base) : 490718.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.VtblPtr](long):ComWrappersTests.VtblPtr (FullOpts)
        6991 (42.33 % of base) : 580186.dasm - Generated938:CalliTest() (FullOpts)
         282 (41.78 % of base) : 361323.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
        6749 (39.95 % of base) : 579785.dasm - Generated926:CalliTest() (FullOpts)
        6682 (39.17 % of base) : 579088.dasm - Generated906:CalliTest() (FullOpts)
        6907 (39.14 % of base) : 580261.dasm - Generated940:CalliTest() (FullOpts)
        6953 (39.10 % of base) : 579121.dasm - Generated907:CalliTest() (FullOpts)
        6741 (39.10 % of base) : 580155.dasm - Generated937:CalliTest() (FullOpts)
          34 (39.08 % of base) : 238513.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
        6703 (38.88 % of base) : 578881.dasm - Generated900:CalliTest() (FullOpts)
        7084 (38.50 % of base) : 579498.dasm - Generated918:CalliTest() (FullOpts)
        6634 (38.08 % of base) : 580811.dasm - Generated957:CalliTest() (FullOpts)
        6796 (38.08 % of base) : 579753.dasm - Generated925:CalliTest() (FullOpts)
        7131 (37.83 % of base) : 578957.dasm - Generated902:CalliTest() (FullOpts)
        6620 (37.56 % of base) : 580217.dasm - Generated939:CalliTest() (FullOpts)
        6968 (37.54 % of base) : 580974.dasm - Generated962:CalliTest() (FullOpts)
        6951 (37.48 % of base) : 580453.dasm - Generated946:CalliTest() (FullOpts)
        6646 (37.12 % of base) : 579056.dasm - Generated905:CalliTest() (FullOpts)
        6803 (36.89 % of base) : 579024.dasm - Generated904:CalliTest() (FullOpts)

Top method improvements (percentages):
         -23 (-46.94 % of base) : 239395.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -28 (-36.36 % of base) : 594513.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-36.36 % of base) : 1622.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -25 (-35.21 % of base) : 595596.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -19 (-27.94 % of base) : 598805.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -18 (-25.35 % of base) : 518828.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -25 (-24.27 % of base) : 479018.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -25 (-24.27 % of base) : 199864.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -28 (-23.93 % of base) : 536872.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -25 (-22.12 % of base) : 489622.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
         -25 (-22.12 % of base) : 199862.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
         -44 (-21.26 % of base) : 530917.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -26 (-20.63 % of base) : 384086.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -17 (-19.10 % of base) : 583507.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -13 (-17.11 % of base) : 541226.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -19 (-16.67 % of base) : 391619.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -19 (-16.67 % of base) : 398921.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -44 (-15.07 % of base) : 389193.dasm - Internal.TypeSystem.MethodDesc:Equals(System.Object):ubyte:this (Tier1)
         -20 (-15.04 % of base) : 245963.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -26 (-14.53 % of base) : 506192.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)


libraries.crossgen2.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38724198 (overridden on cmd)
Total bytes of diff: 38687508 (overridden on cmd)
Total bytes of delta: -36690 (-0.09 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          30 : 153829.dasm (3.81 % of base)
          30 : 159717.dasm (3.81 % of base)
          30 : 170862.dasm (3.81 % of base)
          16 : 182656.dasm (3.17 % of base)
           2 : 184295.dasm (0.60 % of base)

Top file improvements (bytes):
        -407 : 185587.dasm (-8.00 % of base)
        -256 : 182917.dasm (-16.10 % of base)
        -240 : 182916.dasm (-16.01 % of base)
        -224 : 182914.dasm (-15.91 % of base)
        -208 : 182912.dasm (-15.79 % of base)
        -196 : 35758.dasm (-20.96 % of base)
        -193 : 135955.dasm (-28.09 % of base)
        -193 : 135951.dasm (-29.02 % of base)
        -192 : 182910.dasm (-15.66 % of base)
        -189 : 36667.dasm (-20.63 % of base)
        -176 : 182908.dasm (-15.51 % of base)
        -162 : 35575.dasm (-21.07 % of base)
        -162 : 35576.dasm (-20.56 % of base)
        -160 : 182906.dasm (-15.33 % of base)
        -153 : 34911.dasm (-19.17 % of base)
        -148 : 185596.dasm (-9.34 % of base)
        -144 : 182904.dasm (-15.11 % of base)
        -143 : 200965.dasm (-16.94 % of base)
        -140 : 123106.dasm (-11.33 % of base)
        -131 : 138270.dasm (-10.31 % of base)

83 total files with Code Size differences (78 improved, 5 regressed), 0 unchanged.

Top method regressions (bytes):
          30 (3.81 % of base) : 153829.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          30 (3.81 % of base) : 159717.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          30 (3.81 % of base) : 170862.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          16 (3.17 % of base) : 182656.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
           2 (0.60 % of base) : 184295.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)

Top method improvements (bytes):
        -407 (-8.00 % of base) : 185587.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
        -256 (-16.10 % of base) : 182917.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -240 (-16.01 % of base) : 182916.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -224 (-15.91 % of base) : 182914.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -208 (-15.79 % of base) : 182912.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -196 (-20.96 % of base) : 35758.dasm - Microsoft.FSharp.Collections.MapTreeModule:rebalance[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon,Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon] (FullOpts)
        -193 (-29.02 % of base) : 135951.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -193 (-28.09 % of base) : 135955.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -192 (-15.66 % of base) : 182910.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -189 (-20.63 % of base) : 36667.dasm - Microsoft.FSharp.Collections.MapTreeModule:rebalance[int,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon],int,System.__Canon,Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[int,System.__Canon] (FullOpts)
        -176 (-15.51 % of base) : 182908.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -162 (-21.07 % of base) : 35575.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -162 (-20.56 % of base) : 35576.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -160 (-15.33 % of base) : 182906.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -153 (-19.17 % of base) : 34911.dasm - Microsoft.FSharp.Collections.SetTreeModule:rebalance[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon],System.__Canon,Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTree`1[System.__Canon] (FullOpts)
        -148 (-9.34 % of base) : 185596.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
        -144 (-15.11 % of base) : 182904.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -143 (-16.94 % of base) : 200965.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -140 (-11.33 % of base) : 123106.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -131 (-10.31 % of base) : 138270.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)

Top method regressions (percentages):
          30 (3.81 % of base) : 153829.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          30 (3.81 % of base) : 159717.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          30 (3.81 % of base) : 170862.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          16 (3.17 % of base) : 182656.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)
           2 (0.60 % of base) : 184295.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
         -42 (-50.00 % of base) : 182392.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
        -129 (-49.43 % of base) : 32010.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -39 (-46.99 % of base) : 218407.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -39 (-46.99 % of base) : 133269.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
         -32 (-45.71 % of base) : 36021.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -32 (-45.71 % of base) : 35544.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-45.71 % of base) : 186279.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-43.84 % of base) : 123170.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -32 (-43.84 % of base) : 171918.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -32 (-43.84 % of base) : 154902.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -32 (-43.84 % of base) : 205402.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -74 (-42.53 % of base) : 185578.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
         -39 (-42.39 % of base) : 207180.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         -39 (-42.39 % of base) : 18118.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -30 (-42.25 % of base) : 182848.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -39 (-41.94 % of base) : 132224.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory+<>c__DisplayClass7_0`1[System.__Canon]:<CreateDefaultConstructor>b__0():System.__Canon:this (FullOpts)
         -39 (-41.94 % of base) : 132227.dasm - Newtonsoft.Json.Utilities.LateBoundReflectionDelegateFactory+<>c__DisplayClass5_0`1[System.__Canon]:<CreateDefaultConstructor>b__0():System.__Canon:this (FullOpts)
         -39 (-41.49 % of base) : 186224.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<>c__DisplayClass29_0[System.__Canon]:<SetCreateObject>b__0():System.__Canon:this (FullOpts)
         -30 (-40.54 % of base) : 186301.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -37 (-40.22 % of base) : 187696.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)


libraries.pmi.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44166644 (overridden on cmd)
Total bytes of diff: 44156172 (overridden on cmd)
Total bytes of delta: -10472 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         171 : 150893.dasm (4.54 % of base)
         111 : 225249.dasm (22.89 % of base)
         107 : 246024.dasm (9.08 % of base)
         107 : 289215.dasm (22.15 % of base)
         104 : 36197.dasm (35.74 % of base)
         100 : 36193.dasm (40.32 % of base)
         100 : 36194.dasm (40.16 % of base)
         100 : 36195.dasm (40.65 % of base)
         100 : 36196.dasm (39.53 % of base)
         100 : 36198.dasm (40.49 % of base)
          70 : 123617.dasm (3.20 % of base)
          64 : 171689.dasm (3.09 % of base)
          64 : 189042.dasm (3.09 % of base)
          47 : 141327.dasm (5.10 % of base)
          42 : 150771.dasm (4.37 % of base)
          38 : 263372.dasm (15.38 % of base)
          37 : 263382.dasm (10.05 % of base)
          36 : 263086.dasm (8.51 % of base)
          34 : 263118.dasm (6.36 % of base)
          34 : 263407.dasm (26.36 % of base)

Top file improvements (bytes):
        -425 : 275784.dasm (-22.57 % of base)
        -280 : 173965.dasm (-9.73 % of base)
        -280 : 191277.dasm (-9.73 % of base)
        -272 : 91546.dasm (-8.51 % of base)
        -264 : 105352.dasm (-8.62 % of base)
        -148 : 251471.dasm (-25.65 % of base)
        -143 : 101679.dasm (-12.45 % of base)
        -142 : 148442.dasm (-10.09 % of base)
        -126 : 147353.dasm (-38.07 % of base)
        -115 : 146707.dasm (-8.20 % of base)
        -112 : 147355.dasm (-6.37 % of base)
         -84 : 19365.dasm (-13.19 % of base)
         -84 : 19372.dasm (-12.79 % of base)
         -76 : 21132.dasm (-16.67 % of base)
         -59 : 139600.dasm (-14.75 % of base)
         -58 : 205175.dasm (-1.45 % of base)
         -57 : 36459.dasm (-7.56 % of base)
         -54 : 19529.dasm (-10.78 % of base)
         -54 : 19538.dasm (-10.65 % of base)
         -51 : 287379.dasm (-13.42 % of base)

76 total files with Code Size differences (49 improved, 27 regressed), 18 unchanged.

Top method regressions (bytes):
         171 (4.54 % of base) : 150893.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
         111 (22.89 % of base) : 225249.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         107 (22.15 % of base) : 289215.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         107 (9.08 % of base) : 246024.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         104 (35.74 % of base) : 36197.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         100 (39.53 % of base) : 36196.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         100 (40.65 % of base) : 36195.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         100 (40.49 % of base) : 36198.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         100 (40.16 % of base) : 36194.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         100 (40.32 % of base) : 36193.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          70 (3.20 % of base) : 123617.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
          64 (3.09 % of base) : 171689.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          64 (3.09 % of base) : 189042.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          47 (5.10 % of base) : 141327.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
          42 (4.37 % of base) : 150771.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
          38 (15.38 % of base) : 263372.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          37 (10.05 % of base) : 263382.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          36 (8.51 % of base) : 263086.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          34 (6.36 % of base) : 263118.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          34 (26.36 % of base) : 263407.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

Top method improvements (bytes):
        -425 (-22.57 % of base) : 275784.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -280 (-9.73 % of base) : 173965.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -280 (-9.73 % of base) : 191277.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -272 (-8.51 % of base) : 91546.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -264 (-8.62 % of base) : 105352.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -148 (-25.65 % of base) : 251471.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -143 (-12.45 % of base) : 101679.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -142 (-10.09 % of base) : 148442.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -126 (-38.07 % of base) : 147353.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -115 (-8.20 % of base) : 146707.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -112 (-6.37 % of base) : 147355.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
         -84 (-13.19 % of base) : 19365.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
         -84 (-12.79 % of base) : 19372.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
         -76 (-16.67 % of base) : 21132.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -59 (-14.75 % of base) : 139600.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
         -58 (-1.45 % of base) : 205175.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -57 (-7.56 % of base) : 36459.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
         -54 (-10.65 % of base) : 19538.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
         -54 (-10.78 % of base) : 19529.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
         -51 (-13.42 % of base) : 287379.dasm - System.Security.Cryptography.Xml.XmlDsigBase64Transform:LoadInput(System.Object):this (FullOpts)

Top method regressions (percentages):
         100 (40.65 % of base) : 36195.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         100 (40.49 % of base) : 36198.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         100 (40.32 % of base) : 36193.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         100 (40.16 % of base) : 36194.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         100 (39.53 % of base) : 36196.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         104 (35.74 % of base) : 36197.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
          34 (26.36 % of base) : 263407.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         111 (22.89 % of base) : 225249.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         107 (22.15 % of base) : 289215.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
          38 (15.38 % of base) : 263372.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          37 (10.05 % of base) : 263382.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         107 (9.08 % of base) : 246024.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          36 (8.51 % of base) : 263086.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          29 (6.36 % of base) : 267880.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
          34 (6.36 % of base) : 263118.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
           5 (5.43 % of base) : 244898.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
          47 (5.10 % of base) : 141327.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
         171 (4.54 % of base) : 150893.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
          42 (4.37 % of base) : 150771.dasm - System.Linq.Expressions.Expression:ValidateAccessorArgumentTypes(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],byref,System.String) (FullOpts)
           4 (3.64 % of base) : 239856.dasm - Microsoft.Build.Collections.ReadOnlyEmptyDictionary`2[System.__Canon,System.Nullable`1[int]]:Contains(System.Object):ubyte:this (FullOpts)

Top method improvements (percentages):
         -23 (-50.00 % of base) : 19086.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -23 (-50.00 % of base) : 202525.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-42.37 % of base) : 26137.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
         -35 (-38.89 % of base) : 282227.dasm - CommandLine.Infrastructure.ReflectionHelper:CreateDefaultImmutableInstance[System.__Canon](System.Type[]):System.__Canon (FullOpts)
         -35 (-38.89 % of base) : 233552.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
        -126 (-38.07 % of base) : 147353.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -35 (-36.84 % of base) : 149406.dasm - Microsoft.VisualBasic.Conversion:CTypeDynamic[System.__Canon](System.Object):System.__Canon (FullOpts)
         -30 (-35.29 % of base) : 267679.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -30 (-35.29 % of base) : 267693.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -20 (-32.79 % of base) : 158648.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -20 (-32.79 % of base) : 176591.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -16 (-29.63 % of base) : 280070.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -18 (-29.51 % of base) : 251561.dasm - System.Net.Dns:GetHostAddressesCore(System.Net.IPAddress,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
         -18 (-29.51 % of base) : 251558.dasm - System.Net.Dns:GetHostAddressesCore(System.String,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
         -23 (-29.49 % of base) : 285761.dasm - FastSerialization.Deserializer:GetEntryObject[System.__Canon](byref):this (FullOpts)
         -28 (-28.87 % of base) : 289305.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
         -28 (-28.87 % of base) : 230920.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-28.87 % of base) : 233560.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
         -25 (-28.74 % of base) : 134864.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -25 (-28.74 % of base) : 134888.dasm - System.Xml.BinHexDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)


libraries_tests.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 292392477 (overridden on cmd)
Total bytes of diff: 292439910 (overridden on cmd)
Total bytes of delta: 47433 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         628 : 588411.dasm (6.03 % of base)
         520 : 462078.dasm (16.63 % of base)
         474 : 284262.dasm (3.32 % of base)
         474 : 455064.dasm (3.32 % of base)
         474 : 459597.dasm (3.32 % of base)
         474 : 294742.dasm (3.32 % of base)
         474 : 6302.dasm (3.32 % of base)
         474 : 70341.dasm (3.32 % of base)
         474 : 741623.dasm (3.32 % of base)
         471 : 529175.dasm (3.35 % of base)
         471 : 122379.dasm (3.35 % of base)
         471 : 272979.dasm (3.35 % of base)
         471 : 141172.dasm (3.35 % of base)
         471 : 145456.dasm (3.35 % of base)
         471 : 249692.dasm (3.35 % of base)
         467 : 214671.dasm (3.32 % of base)
         462 : 345396.dasm (3.28 % of base)
         462 : 206440.dasm (3.28 % of base)
         462 : 289396.dasm (3.28 % of base)
         462 : 748147.dasm (3.28 % of base)

Top file improvements (bytes):
        -260 : 468645.dasm (-2.81 % of base)
        -256 : 560345.dasm (-6.12 % of base)
        -245 : 532941.dasm (-1.72 % of base)
        -204 : 423794.dasm (-1.42 % of base)
        -194 : 116818.dasm (-1.44 % of base)
        -145 : 682548.dasm (-2.01 % of base)
        -144 : 356172.dasm (-3.95 % of base)
        -141 : 264828.dasm (-4.79 % of base)
        -135 : 208956.dasm (-4.14 % of base)
        -134 : 636911.dasm (-1.43 % of base)
        -131 : 134286.dasm (-4.40 % of base)
        -127 : 186628.dasm (-3.30 % of base)
        -122 : 680507.dasm (-2.07 % of base)
        -120 : 420408.dasm (-2.80 % of base)
        -119 : 286535.dasm (-3.93 % of base)
        -119 : 390153.dasm (-4.08 % of base)
        -119 : 145999.dasm (-3.93 % of base)
        -119 : 423958.dasm (-4.06 % of base)
        -119 : 517138.dasm (-3.93 % of base)
        -119 : 565895.dasm (-3.93 % of base)

97 total files with Code Size differences (48 improved, 49 regressed), 20 unchanged.

Top method regressions (bytes):
         628 (6.03 % of base) : 588411.dasm - System.Security.Cryptography.X509Certificates.Tests.TestDataGenerator:MakeTestChain(System.ReadOnlySpan`1[System.Security.Cryptography.RSA],System.Span`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.String) (Tier1)
         520 (16.63 % of base) : 462078.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         474 (3.32 % of base) : 284262.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 455064.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 459597.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 294742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 6302.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 70341.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         474 (3.32 % of base) : 741623.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 529175.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 122379.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 272979.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 141172.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 145456.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         471 (3.35 % of base) : 249692.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         467 (3.32 % of base) : 214671.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         462 (3.28 % of base) : 345396.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         462 (3.28 % of base) : 206440.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         462 (3.28 % of base) : 289396.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         462 (3.28 % of base) : 748147.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -260 (-2.81 % of base) : 468645.dasm - System.Xml.XPath.XPathNavigator:CompareSiblings(System.Xml.XPath.XPathNavigator,System.Xml.XPath.XPathNavigator):int (Tier1)
        -256 (-6.12 % of base) : 560345.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,ubyte,System.TimeSpan]:.ctor(System.Object[]):this (Tier1)
        -245 (-1.72 % of base) : 532941.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -204 (-1.42 % of base) : 423794.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -194 (-1.44 % of base) : 116818.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.<BindingExtensions_g>F06CBF607B39F5F589B67E292D600729E0514C7A495E0099C73A76F3B9B09B78C__BindingExtensions:BindCore(Microsoft.Extensions.Configuration.IConfiguration,byref,ubyte,Microsoft.Extensions.Configuration.BinderOptions) (Tier1)
        -145 (-2.01 % of base) : 682548.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -144 (-3.95 % of base) : 356172.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetCustomAttributes(System.Type,System.Type,System.AttributeUsageAttribute):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo] (Tier1)
        -141 (-4.79 % of base) : 264828.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -135 (-4.14 % of base) : 208956.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
        -134 (-1.43 % of base) : 636911.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -131 (-4.40 % of base) : 134286.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -127 (-3.30 % of base) : 186628.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -122 (-2.07 % of base) : 680507.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -120 (-2.80 % of base) : 420408.dasm - System.Net.Http.HttpConnection:ParseHeadersCore(System.Span`1[ubyte],System.Net.Http.HttpResponseMessage,ubyte):System.ValueTuple`2[ubyte,int]:this (Tier1)
        -119 (-3.93 % of base) : 286535.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -119 (-4.08 % of base) : 390153.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -119 (-3.93 % of base) : 145999.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -119 (-4.06 % of base) : 423958.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -119 (-3.93 % of base) : 517138.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -119 (-3.93 % of base) : 565895.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

Top method regressions (percentages):
         298 (45.02 % of base) : 463165.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
          38 (44.71 % of base) : 550888.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          96 (43.84 % of base) : 478884.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:SyncToNavigator(System.Xml.XPath.XPathNavigator,System.Xml.XPath.XPathNavigator):System.Xml.XPath.XPathNavigator (Tier1)
         278 (41.68 % of base) : 607524.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
          34 (39.08 % of base) : 112633.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 28275.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 668193.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 77565.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 105245.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 300640.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 465728.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 690372.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 606819.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 130139.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 370353.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 630035.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          34 (39.08 % of base) : 71033.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
         230 (37.89 % of base) : 463171.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         231 (36.78 % of base) : 607525.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         114 (29.31 % of base) : 588381.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)

Top method improvements (percentages):
         -23 (-50.00 % of base) : 636558.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -23 (-50.00 % of base) : 665735.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-45.90 % of base) : 63313.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
         -28 (-36.36 % of base) : 2216.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -30 (-35.29 % of base) : 140052.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -30 (-35.29 % of base) : 130874.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-34.15 % of base) : 66811.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -34 (-34.00 % of base) : 607165.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -34 (-31.19 % of base) : 131138.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -26 (-30.95 % of base) : 638308.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
         -25 (-30.12 % of base) : 641256.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
         -25 (-30.12 % of base) : 641375.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
         -21 (-29.58 % of base) : 139668.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -38 (-29.23 % of base) : 466335.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
         -28 (-28.57 % of base) : 43383.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -28 (-28.57 % of base) : 107534.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo,ubyte):System.__Canon (Tier1)
         -19 (-27.94 % of base) : 352919.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
         -56 (-26.92 % of base) : 191337.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -21 (-26.25 % of base) : 62782.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -23 (-25.84 % of base) : 116783.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.<BindingExtensions_g>F06CBF607B39F5F589B67E292D600729E0514C7A495E0099C73A76F3B9B09B78C__BindingExtensions:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier1)


librariestestsnotieredcompilation.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 104936794 (overridden on cmd)
Total bytes of diff: 104929510 (overridden on cmd)
Total bytes of delta: -7284 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         800 : 166403.dasm (22.41 % of base)
         534 : 166357.dasm (17.33 % of base)
         441 : 166825.dasm (19.71 % of base)
         441 : 62802.dasm (16.92 % of base)
         433 : 166448.dasm (20.93 % of base)
         433 : 62791.dasm (20.93 % of base)
         432 : 62913.dasm (14.39 % of base)
         181 : 166425.dasm (3.37 % of base)
         175 : 165667.dasm (3.23 % of base)
         175 : 166122.dasm (3.23 % of base)
         174 : 165668.dasm (4.31 % of base)
         174 : 166123.dasm (4.31 % of base)
         157 : 219708.dasm (9.96 % of base)
         148 : 166294.dasm (4.10 % of base)
         146 : 140542.dasm (10.78 % of base)
         142 : 137976.dasm (8.06 % of base)
         119 : 116140.dasm (13.60 % of base)
         115 : 166228.dasm (6.02 % of base)
         115 : 165623.dasm (6.02 % of base)
         115 : 166418.dasm (6.02 % of base)

Top file improvements (bytes):
        -425 : 63974.dasm (-22.57 % of base)
        -384 : 205483.dasm (-7.72 % of base)
        -280 : 11469.dasm (-9.94 % of base)
        -267 : 200602.dasm (-16.26 % of base)
        -238 : 166643.dasm (-13.51 % of base)
        -230 : 23167.dasm (-8.41 % of base)
        -229 : 166637.dasm (-13.25 % of base)
        -228 : 23143.dasm (-9.46 % of base)
        -225 : 2858.dasm (-7.70 % of base)
        -224 : 303365.dasm (-4.22 % of base)
        -223 : 16238.dasm (-11.26 % of base)
        -223 : 16293.dasm (-11.38 % of base)
        -223 : 14848.dasm (-16.72 % of base)
        -215 : 165761.dasm (-10.68 % of base)
        -194 : 45048.dasm (-6.93 % of base)
        -194 : 50820.dasm (-6.93 % of base)
        -194 : 7299.dasm (-6.93 % of base)
        -190 : 23490.dasm (-8.06 % of base)
        -189 : 200714.dasm (-12.92 % of base)
        -146 : 166639.dasm (-11.31 % of base)

88 total files with Code Size differences (51 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         800 (22.41 % of base) : 166403.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         534 (17.33 % of base) : 166357.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         441 (19.71 % of base) : 166825.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         441 (16.92 % of base) : 62802.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         433 (20.93 % of base) : 62791.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         433 (20.93 % of base) : 166448.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         432 (14.39 % of base) : 62913.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         181 (3.37 % of base) : 166425.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         175 (3.23 % of base) : 165667.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         175 (3.23 % of base) : 166122.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         174 (4.31 % of base) : 165668.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         174 (4.31 % of base) : 166123.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         157 (9.96 % of base) : 219708.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
         148 (4.10 % of base) : 166294.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         146 (10.78 % of base) : 140542.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         142 (8.06 % of base) : 137976.dasm - System.Linq.Tests.GroupByTests+<DebuggerAttributesValid_Data>d__62:MoveNext():ubyte:this (FullOpts)
         119 (13.60 % of base) : 116140.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic(int) (FullOpts)
         115 (6.02 % of base) : 166418.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read2_ArrayOfAnyType():System.Object:this (FullOpts)
         115 (6.02 % of base) : 166228.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleTypeArray:Read3_ArrayOfSimpleType():System.Object:this (FullOpts)
         115 (6.02 % of base) : 165623.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleTypeArray:Read3_ArrayOfSimpleType():System.Object:this (FullOpts)

Top method improvements (bytes):
        -425 (-22.57 % of base) : 63974.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -384 (-7.72 % of base) : 205483.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
        -280 (-9.94 % of base) : 11469.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -267 (-16.26 % of base) : 200602.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -238 (-13.51 % of base) : 166643.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
        -230 (-8.41 % of base) : 23167.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -229 (-13.25 % of base) : 166637.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
        -228 (-9.46 % of base) : 23143.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -225 (-7.70 % of base) : 2858.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -224 (-4.22 % of base) : 303365.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
        -223 (-11.26 % of base) : 16238.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -223 (-11.38 % of base) : 16293.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -223 (-16.72 % of base) : 14848.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
        -215 (-10.68 % of base) : 165761.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
        -194 (-6.93 % of base) : 45048.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -194 (-6.93 % of base) : 50820.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -194 (-6.93 % of base) : 7299.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -190 (-8.06 % of base) : 23490.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine:GetProjectsToSearchAsync(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Project]]:this (FullOpts)
        -189 (-12.92 % of base) : 200714.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
        -146 (-11.31 % of base) : 166639.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)

Top method regressions (percentages):
          36 (128.57 % of base) : 94893.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          30 (55.56 % of base) : 95061.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          30 (55.56 % of base) : 97246.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         107 (47.98 % of base) : 189245.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point](long):System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point (FullOpts)
         110 (33.33 % of base) : 140248.dasm - System.Linq.Tests.SelectTests:EmptyWithIndexedSelector():this (FullOpts)
         111 (31.27 % of base) : 116127.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
         111 (30.92 % of base) : 116125.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
           5 (29.41 % of base) : 90482.dasm - MonoTests.System.Configuration.KeyValueConfigurationCollectionTest+<>c__DisplayClass9_0:<GetElementKey_null>b__0():System.Object:this (FullOpts)
          34 (26.36 % of base) : 179730.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         107 (26.35 % of base) : 116139.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
         107 (26.23 % of base) : 116138.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
         107 (25.48 % of base) : 116128.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
         107 (25.24 % of base) : 116126.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         107 (25.12 % of base) : 115836.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         107 (23.31 % of base) : 116129.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         800 (22.41 % of base) : 166403.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         433 (20.93 % of base) : 62791.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         433 (20.93 % of base) : 166448.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         107 (20.27 % of base) : 116136.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
         441 (19.71 % of base) : 166825.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)

Top method improvements (percentages):
         -23 (-50.00 % of base) : 34960.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -23 (-50.00 % of base) : 142216.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -23 (-46.94 % of base) : 30486.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
         -35 (-38.89 % of base) : 21055.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
         -30 (-35.29 % of base) : 75852.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -30 (-35.29 % of base) : 126871.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -26 (-30.95 % of base) : 241138.dasm - System.Text.Json.Serialization.Converters.ConcurrentStackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -26 (-30.95 % of base) : 146413.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -26 (-30.95 % of base) : 240204.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -17 (-30.36 % of base) : 300204.dasm - System.Threading.Tasks.Tests.TaskRunSyncTest:DisposeScheduler(System.Threading.Tasks.TaskScheduler) (FullOpts)
         -16 (-29.63 % of base) : 89485.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -38 (-29.23 % of base) : 61451.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
         -16 (-29.09 % of base) : 133746.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
         -25 (-28.74 % of base) : 61900.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -25 (-28.74 % of base) : 61892.dasm - System.Xml.BinHexDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -25 (-28.74 % of base) : 174024.dasm - System.Xml.IncrementalReadCharsDecoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -28 (-28.00 % of base) : 35394.dasm - Grace.DependencyInjection.Impl.BaseExportLocatorScope:Locate[System.__Canon]():System.__Canon:this (FullOpts)
         -19 (-27.94 % of base) : 99623.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -16 (-27.59 % of base) : 42390.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -16 (-27.59 % of base) : 42382.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)


realworld.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9185961 (overridden on cmd)
Total bytes of diff: 9183657 (overridden on cmd)
Total bytes of delta: -2304 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          72 : 16052.dasm (5.27 % of base)
          31 : 12647.dasm (0.73 % of base)
          27 : 11198.dasm (1.48 % of base)
          27 : 29492.dasm (1.48 % of base)
          14 : 32302.dasm (3.35 % of base)
           7 : 28911.dasm (0.37 % of base)
           6 : 20433.dasm (0.55 % of base)
           3 : 29660.dasm (0.76 % of base)
           2 : 8828.dasm (1.05 % of base)

Top file improvements (bytes):
        -194 : 19791.dasm (-6.94 % of base)
         -55 : 32090.dasm (-15.80 % of base)
         -52 : 31730.dasm (-25.00 % of base)
         -52 : 32343.dasm (-19.62 % of base)
         -43 : 30110.dasm (-8.94 % of base)
         -42 : 27724.dasm (-6.29 % of base)
         -41 : 8706.dasm (-29.08 % of base)
         -40 : 7614.dasm (-7.09 % of base)
         -40 : 4982.dasm (-3.02 % of base)
         -39 : 31705.dasm (-2.26 % of base)
         -36 : 15368.dasm (-8.26 % of base)
         -36 : 16193.dasm (-5.87 % of base)
         -31 : 31700.dasm (-18.67 % of base)
         -31 : 8348.dasm (-11.36 % of base)
         -29 : 20017.dasm (-11.07 % of base)
         -28 : 412.dasm (-36.36 % of base)
         -28 : 25277.dasm (-2.94 % of base)
         -26 : 28298.dasm (-6.47 % of base)
         -26 : 16639.dasm (-14.53 % of base)
         -25 : 32872.dasm (-11.52 % of base)

59 total files with Code Size differences (50 improved, 9 regressed), 5 unchanged.

Top method regressions (bytes):
          72 (5.27 % of base) : 16052.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          31 (0.73 % of base) : 12647.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          27 (1.48 % of base) : 11198.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          27 (1.48 % of base) : 29492.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          14 (3.35 % of base) : 32302.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
           7 (0.37 % of base) : 28911.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           6 (0.55 % of base) : 20433.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
           3 (0.76 % of base) : 29660.dasm - System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:Clone():System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:this (FullOpts)
           2 (1.05 % of base) : 8828.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)

Top method improvements (bytes):
        -194 (-6.94 % of base) : 19791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
         -55 (-15.80 % of base) : 32090.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -52 (-25.00 % of base) : 31730.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -52 (-19.62 % of base) : 32343.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -43 (-8.94 % of base) : 30110.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
         -42 (-6.29 % of base) : 27724.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
         -41 (-29.08 % of base) : 8706.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -40 (-7.09 % of base) : 7614.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
         -40 (-3.02 % of base) : 4982.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -39 (-2.26 % of base) : 31705.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
         -36 (-5.87 % of base) : 16193.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -36 (-8.26 % of base) : 15368.dasm - System.Net.Http.Headers.ObjectCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
         -31 (-11.36 % of base) : 8348.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -31 (-18.67 % of base) : 31700.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -29 (-11.07 % of base) : 20017.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -28 (-2.94 % of base) : 25277.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -28 (-36.36 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -26 (-14.53 % of base) : 16639.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -26 (-6.47 % of base) : 28298.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -25 (-11.52 % of base) : 32872.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)

Top method regressions (percentages):
          72 (5.27 % of base) : 16052.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          14 (3.35 % of base) : 32302.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
          27 (1.48 % of base) : 11198.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          27 (1.48 % of base) : 29492.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
           2 (1.05 % of base) : 8828.dasm - FSharp.Compiler.NameResolution+TypeNameResolutionStaticArgsInfo:MangledNameForType(System.String):System.String:this (FullOpts)
           3 (0.76 % of base) : 29660.dasm - System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:Clone():System.Management.Automation.Runspaces.InitialSessionStateEntryCollection`1[System.__Canon]:this (FullOpts)
          31 (0.73 % of base) : 12647.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
           6 (0.55 % of base) : 20433.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
           7 (0.37 % of base) : 28911.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (percentages):
         -28 (-36.36 % of base) : 412.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -16 (-29.63 % of base) : 32961.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
         -41 (-29.08 % of base) : 8706.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -25 (-26.60 % of base) : 18646.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-25.35 % of base) : 29998.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -52 (-25.00 % of base) : 31730.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -18 (-24.32 % of base) : 16954.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -23 (-23.47 % of base) : 9692.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -16 (-21.05 % of base) : 11341.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:Freeze():System.__Canon:this (FullOpts)
         -52 (-19.62 % of base) : 32343.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -31 (-18.67 % of base) : 31700.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -20 (-18.35 % of base) : 4616.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
         -20 (-17.39 % of base) : 9802.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -18 (-17.31 % of base) : 22319.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
         -20 (-16.53 % of base) : 10819.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
         -55 (-15.80 % of base) : 32090.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -20 (-15.15 % of base) : 6046.dasm - FSharp.Compiler.AbstractIL.IL+ILResource:GetBytes():FSharp.Compiler.IO.ReadOnlyByteMemory:this (FullOpts)
         -26 (-14.53 % of base) : 16639.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -14 (-14.43 % of base) : 16610.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -16 (-14.29 % of base) : 32117.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)


smoke_tests.nativeaot.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3746367 (overridden on cmd)
Total bytes of diff: 3745782 (overridden on cmd)
Total bytes of delta: -585 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          14 : 5345.dasm (2.98 % of base)
           9 : 10202.dasm (3.56 % of base)
           9 : 13374.dasm (2.58 % of base)
           8 : 17852.dasm (5.52 % of base)
           8 : 22588.dasm (5.52 % of base)
           8 : 2133.dasm (6.25 % of base)
           8 : 25294.dasm (5.52 % of base)
           8 : 3213.dasm (5.52 % of base)
           7 : 5366.dasm (1.32 % of base)
           7 : 9696.dasm (3.12 % of base)
           1 : 15757.dasm (0.20 % of base)

Top file improvements (bytes):
         -34 : 13179.dasm (-12.01 % of base)
         -28 : 566.dasm (-12.67 % of base)
         -25 : 17946.dasm (-11.96 % of base)
         -25 : 22714.dasm (-11.96 % of base)
         -25 : 25378.dasm (-11.96 % of base)
         -25 : 574.dasm (-11.90 % of base)
         -24 : 14525.dasm (-12.90 % of base)
         -23 : 15266.dasm (-17.69 % of base)
         -21 : 13729.dasm (-33.33 % of base)
         -21 : 17048.dasm (-33.33 % of base)
         -19 : 16674.dasm (-29.69 % of base)
         -18 : 15357.dasm (-21.18 % of base)
         -18 : 20262.dasm (-17.82 % of base)
         -18 : 20263.dasm (-17.31 % of base)
         -18 : 20178.dasm (-18.75 % of base)
         -18 : 20255.dasm (-17.82 % of base)
         -18 : 21844.dasm (-7.26 % of base)
         -18 : 4782.dasm (-18.18 % of base)
         -17 : 13180.dasm (-14.53 % of base)
         -17 : 14102.dasm (-17.53 % of base)

46 total files with Code Size differences (35 improved, 11 regressed), 6 unchanged.

Top method regressions (bytes):
          14 (2.98 % of base) : 5345.dasm - Internal.TypeSystem.TypeSystemContext:GetMethodForInstantiatedType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.InstantiatedType):Internal.TypeSystem.MethodDesc:this (FullOpts)
           9 (2.58 % of base) : 13374.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
           9 (3.56 % of base) : 10202.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
           8 (6.25 % of base) : 2133.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 17852.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 22588.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 25294.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 3213.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           7 (1.32 % of base) : 5366.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           7 (3.12 % of base) : 9696.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           1 (0.20 % of base) : 15757.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
         -34 (-12.01 % of base) : 13179.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -28 (-12.67 % of base) : 566.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -25 (-11.96 % of base) : 17946.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -25 (-11.96 % of base) : 22714.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -25 (-11.96 % of base) : 25378.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -25 (-11.90 % of base) : 574.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -24 (-12.90 % of base) : 14525.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -23 (-17.69 % of base) : 15266.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -21 (-33.33 % of base) : 13729.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -21 (-33.33 % of base) : 17048.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -19 (-29.69 % of base) : 16674.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -18 (-17.82 % of base) : 20262.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -18 (-18.75 % of base) : 20178.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -18 (-18.18 % of base) : 4782.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-17.82 % of base) : 20255.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -18 (-17.31 % of base) : 20263.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -18 (-21.18 % of base) : 15357.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-7.26 % of base) : 21844.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.__Canon](long):System.__Canon (FullOpts)
         -17 (-17.53 % of base) : 14102.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -17 (-17.53 % of base) : 17208.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)

Top method regressions (percentages):
           8 (6.25 % of base) : 2133.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 17852.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 22588.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 25294.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (5.52 % of base) : 3213.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           9 (3.56 % of base) : 10202.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
           7 (3.12 % of base) : 9696.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
          14 (2.98 % of base) : 5345.dasm - Internal.TypeSystem.TypeSystemContext:GetMethodForInstantiatedType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.InstantiatedType):Internal.TypeSystem.MethodDesc:this (FullOpts)
           9 (2.58 % of base) : 13374.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
           7 (1.32 % of base) : 5366.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           1 (0.20 % of base) : 15757.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method improvements (percentages):
         -21 (-33.33 % of base) : 13729.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -21 (-33.33 % of base) : 17048.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -19 (-29.69 % of base) : 16674.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (FullOpts)
         -16 (-25.40 % of base) : 12923.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -18 (-21.18 % of base) : 15357.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-18.75 % of base) : 20178.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -18 (-18.18 % of base) : 4782.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-17.82 % of base) : 20262.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -18 (-17.82 % of base) : 20255.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -23 (-17.69 % of base) : 15266.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -17 (-17.53 % of base) : 14102.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -17 (-17.53 % of base) : 17208.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -18 (-17.31 % of base) : 20263.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -17 (-14.53 % of base) : 13180.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
         -13 (-14.29 % of base) : 13809.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -13 (-14.29 % of base) : 17101.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -17 (-14.05 % of base) : 14439.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -15 (-12.93 % of base) : 12882.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -24 (-12.90 % of base) : 14525.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-12.67 % of base) : 566.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)



osx arm64

Diffs are based on 2,159,155 contexts (932,669 MinOpts, 1,226,486 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 111,715 (4.92%)

Overall (+132,884 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 9,448,856 -564
benchmarks.run_pgo.osx.arm64.checked.mch 32,165,908 +15,424
benchmarks.run_tiered.osx.arm64.checked.mch 15,054,540 -304
coreclr_tests.run.osx.arm64.checked.mch 456,586,300 +174,144
libraries.crossgen2.osx.arm64.checked.mch 55,720,964 -38,600
libraries.pmi.osx.arm64.checked.mch 60,103,176 -17,584
libraries_tests.run.osx.arm64.Release.mch 290,728,984 +17,612
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 129,078,576 -13,956
realworld.run.osx.arm64.checked.mch 10,546,316 -3,288

FullOpts (+132,884 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 9,448,320 -564
benchmarks.run_pgo.osx.arm64.checked.mch 15,864,608 +15,424
benchmarks.run_tiered.osx.arm64.checked.mch 3,550,056 -304
coreclr_tests.run.osx.arm64.checked.mch 123,973,376 +174,144
libraries.crossgen2.osx.arm64.checked.mch 55,719,336 -38,600
libraries.pmi.osx.arm64.checked.mch 59,982,048 -17,584
libraries_tests.run.osx.arm64.Release.mch 87,013,136 +17,612
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 115,924,848 -13,956
realworld.run.osx.arm64.checked.mch 9,982,360 -3,288

Example diffs

benchmarks.run.osx.arm64.checked.mch

-28 (-46.67%) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-31.58%) : 1480.dasm - System.Collections.TryGetValueFalse`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M53474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M53474_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M53474_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53474_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3, #0x08] - cmp x2, x3 - beq G_M53474_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M53474_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M53474_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M53474_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=cb9b2f1d) for method System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 420.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.36%) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

@@ -8,17 +8,17 @@ ; 0 inlinees with PGO data; 31 single block inlinees; 33 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T19] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
+; V00 this [V00,T20] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle>
-; V02 arg2 [V02,T65] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
+; V02 arg2 [V02,T66] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
; V03 loc0 [V03,T00] ( 13, 29 ) ref -> x21 class-hnd <<unknown class>>
-; V04 loc1 [V04,T37] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc1 [V04,T38] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Microsoft.Cci.SecurityAttribute> ; V06 loc3 [V06 ] ( 7, 10.50) struct (24) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]>
-; V07 loc4 [V07,T30] ( 3, 12 ) short -> x22
+; V07 loc4 [V07,T31] ( 3, 12 ) short -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
-; V10 tmp2 [V10,T17] ( 4, 14 ) ref -> x21
+; V10 tmp2 [V10,T18] ( 4, 14 ) ref -> x21
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V12 tmp4 [V12,T15] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomAttribute]> @@ -27,114 +27,113 @@ ; V16 tmp8 [V16,T08] ( 4, 20 ) short -> x24 "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Cci.ICustomAttribute> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V19 tmp11 [V19,T20] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V19 tmp11 [V19,T21] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V21 tmp13 [V21,T21] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V21 tmp13 [V21,T22] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V23 tmp15 [V23,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V24 tmp16 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V25 tmp17 [V25,T54] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
+;* V23 tmp15 [V23,T73] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T23] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V25 tmp17 [V25,T55] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V27 tmp19 [V27 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" -;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V29 tmp21 [V29,T16] ( 8, 15 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -; V31 tmp23 [V31,T23] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> -;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V33 tmp25 [V33,T46] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -; V34 tmp26 [V34,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V35 tmp27 [V35,T41] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" -;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V37 tmp29 [V37,T09] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" -; V38 tmp30 [V38,T31] ( 3, 12 ) int -> x3 "Inlining Arg" -; V39 tmp31 [V39,T05] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" -; V40 tmp32 [V40,T38] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V41 tmp33 [V41,T55] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V42 tmp34 [V42,T24] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V43 tmp35 [V43,T25] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V44 tmp36 [V44,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V45 tmp37 [V45,T32] ( 3, 12 ) int -> x1 "Inlining Arg" -; V46 tmp38 [V46,T48] ( 2, 8 ) long -> x1 "Inlining Arg" -; V47 tmp39 [V47,T12] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V48 tmp40 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V49 tmp41 [V49,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V50 tmp42 [V50,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V52 tmp44 [V52,T10] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" -; V53 tmp45 [V53,T33] ( 3, 12 ) int -> x2 "Inlining Arg" -; V54 tmp46 [V54,T06] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" -; V55 tmp47 [V55,T39] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V56 tmp48 [V56,T56] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V57 tmp49 [V57,T26] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V58 tmp50 [V58,T27] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V59 tmp51 [V59,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V60 tmp52 [V60,T34] ( 3, 12 ) int -> x1 "Inlining Arg" -; V61 tmp53 [V61,T49] ( 2, 8 ) long -> x1 "Inlining Arg" -; V62 tmp54 [V62,T13] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V64 tmp56 [V64,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V65 tmp57 [V65,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V67 tmp59 [V67,T11] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" -; V68 tmp60 [V68,T35] ( 3, 12 ) int -> x2 "Inlining Arg" -; V69 tmp61 [V69,T07] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" -; V70 tmp62 [V70,T40] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V71 tmp63 [V71,T57] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V72 tmp64 [V72,T28] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V73 tmp65 [V73,T29] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V74 tmp66 [V74,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V75 tmp67 [V75,T36] ( 3, 12 ) int -> x1 "Inlining Arg" -; V76 tmp68 [V76,T50] ( 2, 8 ) long -> x1 "Inlining Arg" -; V77 tmp69 [V77,T14] ( 4, 16 ) long -> x2 "Inlining Arg" -;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V27 tmp19 [V27,T17] ( 7, 14 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> +;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> +; V29 tmp21 [V29,T24] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> +;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V31 tmp23 [V31,T47] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +; V32 tmp24 [V32,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V33 tmp25 [V33,T42] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" +;* V34 tmp26 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V35 tmp27 [V35,T09] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" +; V36 tmp28 [V36,T32] ( 3, 12 ) int -> x3 "Inlining Arg" +; V37 tmp29 [V37,T05] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" +; V38 tmp30 [V38,T39] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V39 tmp31 [V39,T56] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp32 [V40,T25] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V41 tmp33 [V41,T26] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V42 tmp34 [V42,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V43 tmp35 [V43,T33] ( 3, 12 ) int -> x1 "Inlining Arg" +; V44 tmp36 [V44,T49] ( 2, 8 ) long -> x1 "Inlining Arg" +; V45 tmp37 [V45,T12] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V46 tmp38 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V47 tmp39 [V47,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V48 tmp40 [V48,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V50 tmp42 [V50,T10] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" +; V51 tmp43 [V51,T34] ( 3, 12 ) int -> x2 "Inlining Arg" +; V52 tmp44 [V52,T06] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" +; V53 tmp45 [V53,T40] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V54 tmp46 [V54,T57] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V55 tmp47 [V55,T27] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V56 tmp48 [V56,T28] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V57 tmp49 [V57,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V58 tmp50 [V58,T35] ( 3, 12 ) int -> x1 "Inlining Arg" +; V59 tmp51 [V59,T50] ( 2, 8 ) long -> x1 "Inlining Arg" +; V60 tmp52 [V60,T13] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V61 tmp53 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V62 tmp54 [V62,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V63 tmp55 [V63,T44] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V64 tmp56 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V65 tmp57 [V65,T11] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" +; V66 tmp58 [V66,T36] ( 3, 12 ) int -> x2 "Inlining Arg" +; V67 tmp59 [V67,T07] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" +; V68 tmp60 [V68,T41] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V69 tmp61 [V69,T58] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V70 tmp62 [V70,T29] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V71 tmp63 [V71,T30] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V72 tmp64 [V72,T65] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V73 tmp65 [V73,T37] ( 3, 12 ) int -> x1 "Inlining Arg" +; V74 tmp66 [V74,T51] ( 2, 8 ) long -> x1 "Inlining Arg" +; V75 tmp67 [V75,T14] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V78 tmp70 [V78 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
;* V79 tmp71 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V80 tmp72 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -;* V81 tmp73 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V82 tmp74 [V82,T78] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V83 tmp75 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V84 tmp76 [V84,T66] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V85 tmp77 [V85,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V86 tmp78 [V86,T73] ( 4, 2 ) ref -> x1 -; V87 tmp79 [V87,T67] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V88 tmp80 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V89 tmp81 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V90 tmp82 [V90,T68] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> -; V91 tmp83 [V91,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V92 tmp84 [V92,T74] ( 4, 2 ) ref -> x1 -; V93 tmp85 [V93,T69] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V94 tmp86 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V95 tmp87 [V95 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> -; V96 tmp88 [V96,T77] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V97 tmp89 [V97,T53] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -; V98 tmp90 [V98,T44] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V99 tmp91 [V99,T51] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V100 tmp92 [V100 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP -; V101 tmp93 [V101 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP -; V102 tmp94 [V102 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP -; V103 tmp95 [V103 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP -;* V104 tmp96 [V104 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP -;* V105 tmp97 [V105 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP -; V106 tmp98 [V106,T47] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP -; V107 tmp99 [V107,T52] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP -;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP -; V109 tmp101 [V109,T70] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP -; V110 tmp102 [V110,T45] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP -;* V111 tmp103 [V111 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP -;* V112 tmp104 [V112 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP -; V113 tmp105 [V113,T71] ( 2, 4 ) ref -> x2 "field V30._value (fldOffset=0x0)" P-INDEP -;* V114 tmp106 [V114 ] ( 0, 0 ) ref -> zero-ref "field V80._value (fldOffset=0x0)" P-INDEP -; V115 tmp107 [V115,T79] ( 3, 1.50) ref -> x0 single-def "field V95._dictionary (fldOffset=0x0)" P-INDEP -;* V116 tmp108 [V116,T83] ( 0, 0 ) int -> zero-ref single-def "field V95._index (fldOffset=0x8)" P-INDEP -; V117 tmp109 [V117,T81] ( 2, 1 ) int -> x1 single-def "field V95._version (fldOffset=0xc)" P-INDEP -;* V118 tmp110 [V118,T84] ( 0, 0 ) short -> zero-ref single-def "field V95._currentKey (fldOffset=0x10)" P-INDEP -; V119 PSPSym [V119,T82] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" -; V120 cse0 [V120,T58] ( 3, 6 ) ref -> x0 "CSE - moderate" -; V121 cse1 [V121,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V122 cse2 [V122,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V123 cse3 [V123,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V124 cse4 [V124,T80] ( 3, 1.50) ref -> x22 "CSE - conservative" -; V125 cse5 [V125,T18] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" -; V126 cse6 [V126,T04] ( 12, 24 ) ref -> x1 multi-def "CSE - aggressive"
+; V80 tmp72 [V80,T79] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V81 tmp73 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V82 tmp74 [V82,T67] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V83 tmp75 [V83,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V84 tmp76 [V84,T74] ( 4, 2 ) ref -> x1 +; V85 tmp77 [V85,T68] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V86 tmp78 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V87 tmp79 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V88 tmp80 [V88,T69] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> +; V89 tmp81 [V89,T77] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V90 tmp82 [V90,T75] ( 4, 2 ) ref -> x1 +; V91 tmp83 [V91,T70] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V92 tmp84 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V93 tmp85 [V93 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> +; V94 tmp86 [V94,T78] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V95 tmp87 [V95,T54] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +; V96 tmp88 [V96,T45] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V97 tmp89 [V97,T52] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V98 tmp90 [V98 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP +; V99 tmp91 [V99 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP +; V100 tmp92 [V100 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP +; V101 tmp93 [V101 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP +;* V102 tmp94 [V102 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP +;* V103 tmp95 [V103 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP +; V104 tmp96 [V104,T48] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP +; V105 tmp97 [V105,T53] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP +;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP +; V107 tmp99 [V107,T71] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP +; V108 tmp100 [V108,T46] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP +;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP +;* V110 tmp102 [V110 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP +; V111 tmp103 [V111,T72] ( 2, 4 ) ref -> x2 "field V28._value (fldOffset=0x0)" P-INDEP +;* V112 tmp104 [V112 ] ( 0, 0 ) ref -> zero-ref "field V78._value (fldOffset=0x0)" P-INDEP +; V113 tmp105 [V113,T80] ( 3, 1.50) ref -> x0 single-def "field V93._dictionary (fldOffset=0x0)" P-INDEP +;* V114 tmp106 [V114,T84] ( 0, 0 ) int -> zero-ref single-def "field V93._index (fldOffset=0x8)" P-INDEP +; V115 tmp107 [V115,T82] ( 2, 1 ) int -> x1 single-def "field V93._version (fldOffset=0xc)" P-INDEP +;* V116 tmp108 [V116,T85] ( 0, 0 ) short -> zero-ref single-def "field V93._currentKey (fldOffset=0x10)" P-INDEP +; V117 PSPSym [V117,T83] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" +; V118 cse0 [V118,T59] ( 3, 6 ) ref -> x0 "CSE - moderate" +; V119 cse1 [V119,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V120 cse2 [V120,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V121 cse3 [V121,T62] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V122 cse4 [V122,T81] ( 3, 1.50) ref -> x22 "CSE - conservative" +; V123 cse5 [V123,T19] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" +; V124 cse6 [V124,T04] ( 12, 24 ) ref -> x1 multi-def "CSE - aggressive" +; V125 rat0 [V125,T16] ( 5, 15 ) ref -> x27 "replacement local"
; ; Lcl frame size = 128 @@ -149,7 +148,7 @@ G_M58756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [fp, #0x70] // [V06 loc3], [V06 loc3+0x08] str xzr, [fp, #0x80] // [V06 loc3+0x10] add x3, sp, #224
- str x3, [fp, #0x88] // [V119 PSPSym]
+ str x3, [fp, #0x88] // [V117 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 ...

+4 (+0.40%) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)

@@ -13,8 +13,8 @@ ; V02 arg2 [V02,T02] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Type[]> ; V03 arg3 [V03,T03] ( 6, 4.50) ref -> x21 class-hnd single-def <System.Type[]> ;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.MetadataToken>
-; V05 loc1 [V05,T11] ( 3, 2.50) ref -> x23 class-hnd <System.RuntimeTypeHandle[]> -; V06 loc2 [V06,T12] ( 3, 2.50) ref -> x25 class-hnd <System.RuntimeTypeHandle[]>
+; V05 loc1 [V05,T12] ( 3, 2.50) ref -> x23 class-hnd <System.RuntimeTypeHandle[]> +; V06 loc2 [V06,T13] ( 3, 2.50) ref -> x25 class-hnd <System.RuntimeTypeHandle[]>
; V07 loc3 [V07 ] ( 2, 2 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ModuleHandle> ;* V08 loc4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.IRuntimeMethodInfo> ; V09 loc5 [V09,T05] ( 6, 5 ) ref -> x25 class-hnd <System.Type> @@ -25,67 +25,69 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodBase> ;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T00] ( 6, 7.50) ref -> x25 class-hnd "spilling QMark2" <System.RuntimeType> -; V18 tmp2 [V18,T22] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> -; V19 tmp3 [V19,T27] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> -; V20 tmp4 [V20,T23] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp5 [V21,T24] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> -; V22 tmp6 [V22,T28] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> -; V23 tmp7 [V23,T25] ( 3, 0 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V24 tmp8 [V24,T29] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp9 [V25,T26] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V26 tmp10 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V27 tmp11 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V28 tmp12 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V29 tmp13 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V30 tmp14 [V30 ] ( 2, 1 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.ConstArray> -;* V31 tmp15 [V31 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V32 tmp16 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> -; V33 tmp17 [V33,T13] ( 2, 2 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> -;* V34 tmp18 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V35 tmp19 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V36 tmp20 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V37 tmp21 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V38 tmp22 [V38 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V39 tmp23 [V39,T09] ( 3, 3 ) int -> x25 "Inlining Arg" -;* V40 tmp24 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> -;* V41 tmp25 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V42 tmp26 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V43 tmp27 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V44 tmp28 [V44 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V45 tmp29 [V45,T15] ( 2, 2 ) int -> x1 "Inlining Arg" -;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> -;* V47 tmp31 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.MethodBase> -; V48 tmp32 [V48,T14] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Reflection.MethodBase> -; V49 tmp33 [V49,T10] ( 5, 2.50) int -> x23 "field V04.Value (fldOffset=0x0)" P-INDEP
+; V17 tmp1 [V17,T23] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> +; V18 tmp2 [V18,T28] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> +; V19 tmp3 [V19,T24] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp4 [V20,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Reflection.MetadataToken> +; V21 tmp5 [V21,T29] ( 2, 0 ) ref -> x21 class-hnd exact single-def "impImportAndPushBox" <<unknown class>> +; V22 tmp6 [V22,T26] ( 3, 0 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V23 tmp7 [V23,T30] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V24 tmp8 [V24,T27] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V25 tmp9 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V26 tmp10 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V27 tmp11 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V28 tmp12 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V29 tmp13 [V29 ] ( 2, 1 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Reflection.ConstArray> +;* V30 tmp14 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V31 tmp15 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> +; V32 tmp16 [V32,T14] ( 2, 2 ) ref -> x25 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +;* V33 tmp17 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V34 tmp18 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V35 tmp19 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V36 tmp20 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V37 tmp21 [V37 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V38 tmp22 [V38,T10] ( 3, 3 ) int -> x25 "Inlining Arg" +;* V39 tmp23 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.MetadataImport> +;* V40 tmp24 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V41 tmp25 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V42 tmp26 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V43 tmp27 [V43 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V44 tmp28 [V44,T16] ( 2, 2 ) int -> x1 "Inlining Arg" +;* V45 tmp29 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.MetadataToken> +;* V46 tmp30 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.MethodBase> +;* V47 tmp31 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> +; V48 tmp32 [V48,T15] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Reflection.MethodBase> +; V49 tmp33 [V49,T11] ( 5, 2.50) int -> x23 "field V04.Value (fldOffset=0x0)" P-INDEP
; V50 tmp34 [V50 ] ( 2, 2 ) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V07.m_ptr (fldOffset=0x0)" P-DEP ;* V51 tmp35 [V51 ] ( 0, 0 ) int -> zero-ref "field V10.m_length (fldOffset=0x0)" P-INDEP
-; V52 tmp36 [V52,T17] ( 2, 1 ) long -> x0 "field V10.m_constArray (fldOffset=0x8)" P-INDEP
+; V52 tmp36 [V52,T18] ( 2, 1 ) long -> x0 "field V10.m_constArray (fldOffset=0x8)" P-INDEP
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref "field V11.m_keepalive (fldOffset=0x0)" P-INDEP ;* V54 tmp38 [V54 ] ( 0, 0 ) long -> zero-ref "field V11.m_metadataImport2 (fldOffset=0x8)" P-INDEP ; V55 tmp39 [V55,T06] ( 5, 5 ) ref -> x23 "field V12.m_value (fldOffset=0x0)" P-INDEP
-; V56 tmp40 [V56,T16] ( 3, 1.50) int -> x1 "field V13.Value (fldOffset=0x0)" P-INDEP -;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "field V26.m_keepalive (fldOffset=0x0)" P-INDEP -; V58 tmp42 [V58,T18] ( 2, 1 ) long -> x0 "field V26.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref "field V28.Value (fldOffset=0x0)" P-INDEP -; V60 tmp44 [V60 ] ( 1, 0.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V30.m_length (fldOffset=0x0)" P-DEP -; V61 tmp45 [V61 ] ( 2, 1 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V30.m_constArray (fldOffset=0x8)" P-DEP -;* V62 tmp46 [V62 ] ( 0, 0 ) int -> zero-ref "field V31.Value (fldOffset=0x0)" P-INDEP -;* V63 tmp47 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V34.m_keepalive (fldOffset=0x0)" P-INDEP -; V64 tmp48 [V64,T19] ( 2, 1 ) long -> x0 "field V34.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V65 tmp49 [V65 ] ( 0, 0 ) int -> zero-ref "field V36.Value (fldOffset=0x0)" P-INDEP -;* V66 tmp50 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V40.m_keepalive (fldOffset=0x0)" P-INDEP -; V67 tmp51 [V67,T20] ( 2, 1 ) long -> x0 "field V40.m_metadataImport2 (fldOffset=0x8)" P-INDEP -;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V42.Value (fldOffset=0x0)" P-INDEP -;* V69 tmp53 [V69 ] ( 0, 0 ) int -> zero-ref "field V46.Value (fldOffset=0x0)" P-INDEP -; V70 tmp54 [V70,T07] ( 2, 4 ) long -> x1 "argument with side effect" -; V71 tmp55 [V71,T30] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V72 tmp56 [V72,T31] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V73 tmp57 [V73,T32] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V74 tmp58 [V74,T33] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V75 tmp59 [V75,T34] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V76 PSPSym [V76,T21] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" -; V77 cse0 [V77,T08] ( 5, 3.50) int -> x24 "CSE - aggressive"
+; V56 tmp40 [V56,T17] ( 3, 1.50) int -> x1 "field V13.Value (fldOffset=0x0)" P-INDEP +;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.m_keepalive (fldOffset=0x0)" P-INDEP +; V58 tmp42 [V58,T19] ( 2, 1 ) long -> x0 "field V25.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V59 tmp43 [V59 ] ( 0, 0 ) int -> zero-ref "field V27.Value (fldOffset=0x0)" P-INDEP +; V60 tmp44 [V60 ] ( 1, 0.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V29.m_length (fldOffset=0x0)" P-DEP +; V61 tmp45 [V61 ] ( 2, 1 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V29.m_constArray (fldOffset=0x8)" P-DEP +;* V62 tmp46 [V62 ] ( 0, 0 ) int -> zero-ref "field V30.Value (fldOffset=0x0)" P-INDEP +;* V63 tmp47 [V63 ] ( 0, 0 ) ref -> zero-ref single-def "field V33.m_keepalive (fldOffset=0x0)" P-INDEP +; V64 tmp48 [V64,T20] ( 2, 1 ) long -> x0 "field V33.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V65 tmp49 [V65 ] ( 0, 0 ) int -> zero-ref "field V35.Value (fldOffset=0x0)" P-INDEP +;* V66 tmp50 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V39.m_keepalive (fldOffset=0x0)" P-INDEP +; V67 tmp51 [V67,T21] ( 2, 1 ) long -> x0 "field V39.m_metadataImport2 (fldOffset=0x8)" P-INDEP +;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "field V41.Value (fldOffset=0x0)" P-INDEP +;* V69 tmp53 [V69 ] ( 0, 0 ) int -> zero-ref "field V45.Value (fldOffset=0x0)" P-INDEP +; V70 tmp54 [V70,T07] ( 2, 4 ) ref -> x25 single-def "argument with side effect" +; V71 tmp55 [V71,T08] ( 2, 4 ) long -> x1 "argument with side effect" +; V72 tmp56 [V72,T31] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V73 tmp57 [V73,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V74 tmp58 [V74,T33] ( 2, 0 ) ref -> x19 single-def "argument with side effect" +; V75 tmp59 [V75,T34] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V76 tmp60 [V76,T35] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V77 PSPSym [V77,T22] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V78 cse0 [V78,T09] ( 5, 3.50) int -> x24 "CSE - aggressive" +; V79 rat0 [V79,T00] ( 5, 7.50) ref -> x25 "replacement local"
; ; Lcl frame size = 56 @@ -98,7 +100,7 @@ G_M12563_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str xzr, [fp, #0x38] // [V07 loc3] add x4, sp, #128
- str x4, [fp, #0x40] // [V76 PSPSym]
+ str x4, [fp, #0x40] // [V77 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w22, w1 @@ -126,7 +128,7 @@ G_M12563_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #40 // [V30 tmp14]
+ add x2, fp, #40 // [V29 tmp13]
mov w1, w23 bl <unknown method> ; gcr arg pop 0 @@ -378,11 +380,11 @@ G_M12563_IG12: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #32 // [V38 tmp22]
+ add x2, fp, #32 // [V37 tmp21]
mov w1, w22 bl <unknown method> ; gcr arg pop 0
- ldr w25, [fp, #0x20] // [V38 tmp22]
+ ldr w25, [fp, #0x20] // [V37 tmp21]
sxtw w1, w25 mov w0, #0xD1FFAB1E cmp w24, w0 @@ -392,11 +394,11 @@ G_M12563_IG12: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0
- add x2, fp, #24 // [V44 tmp28]
+ add x2, fp, #24 // [V43 tmp27]
mov w1, w25 bl <unknown method> ; gcr arg pop 0
- ldr w1, [fp, #0x18] // [V44 tmp28]
+ ldr w1, [fp, #0x18] // [V43 tmp27]
;; size=64 bbWeight=0.50 PerfScore 6.75 G_M12563_IG13: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref mov x0, x19 @@ -418,17 +420,22 @@ G_M12563_IG13: ; bbWeight=0.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byref ;; size=40 bbWeight=0.50 PerfScore 5.25 G_M12563_IG14: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0]
- cbz x25, G_M12563_IG16
+ cbz x25, G_M12563_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M12563_IG15: ; bbWeight=0.25, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
+G_M12563_IG15: ; bbWeight=0.50, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25] movz x11, #0xD1FFAB1E movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32 cmp x0, x11
- csel x25, x25, xzr, eq - ;; size=24 bbWeight=0.25 PerfScore 1.38 -G_M12563_IG16: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
+ beq G_M12563_IG17 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M12563_IG16: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + ; gcrRegs -[x25] + mov x25, xzr + ; gcrRegs +[x25] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M12563_IG17: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 {}, byref
mov x0, x23 ; gcrRegs +[x0] movz x11, #0xD1FFAB1E // code for <unknown method> @@ -449,7 +456,7 @@ G_M12563_IG16: ; bbWeight=1, gcrefRegs=2800000 {x23 x25}, byrefRegs=0000 ; gcrRegs -[x25] ; gcr arg pop 0 ;; size=52 bbWeight=1 PerfScore 12.50
-G_M12563_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M12563_IG18: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x23] ldr x25, [sp, #0x78] ldp x23, x24, [sp, #0x68] @@ -458,7 +465,7 @@ G_M12563_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x80 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M12563_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M12563_IG19: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -467,7 +474,7 @@ G_M12563_IG18: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre add x3, fp, #128 str x3, [sp, #0x10] ;; size=28 bbWeight=0 PerfScore 0.00
-G_M12563_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M12563_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
mov x19, x0 ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -507,7 +514,7 @@ G_M12563_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 { brk_unix #0 ;; size=88 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1008, prolog size 52, PerfScore 100.88, instruction count 252, allocated bytes for code 1008 (MethodHash=7965ceec) for method System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
+; Total bytes of code 1012, prolog size 52, PerfScore 102.62, instruction count 253, allocated bytes for code 1012 (MethodHash=7965ceec) for method System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
; ============================================================ Unwind Info: @@ -518,7 +525,7 @@ Unwind Info: E bit : 0 X bit : 0 ...

+40 (+4.26%) : 14618.dasm - System.Collections.PerfFrozenDictionaryString:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

@@ -8,60 +8,60 @@ ; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V02 tmp1 [V02,T02] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> +; V03 tmp2 [V03,T20] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V05 tmp4 [V05,T16] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V06 tmp5 [V06,T11] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> +; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp7 [V08,T29] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>> -; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> -; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg" -;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def -; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15 -;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15 -;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg" -; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP -;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP -;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP -;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP -; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP -; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP -; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP -; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive" -; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" -; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate" -; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate" -; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate" -; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"
+; V15 tmp14 [V15,T25] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>> +; V16 tmp15 [V16,T21] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> +; V18 tmp17 [V18,T23] ( 2, 2 ) int -> x20 "Inlining Arg" +;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +; V20 tmp19 [V20,T30] ( 2, 1 ) ref -> x15 +;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def +; V23 tmp22 [V23,T17] ( 4, 2 ) ref -> x15 +;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V32 tmp31 [V32,T13] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V33 tmp32 [V33,T24] ( 2, 2 ) int -> x20 "Inlining Arg" +; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V35 tmp34 [V35,T26] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V36 tmp35 [V36,T12] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP +;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP +;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP +;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP +; V41 tmp40 [V41,T09] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP +; V42 tmp41 [V42,T33] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP +; V43 tmp42 [V43,T31] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP +; V44 tmp43 [V44,T32] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP +; V45 tmp44 [V45,T22] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V46 cse0 [V46,T27] ( 3, 1.50) ref -> x3 "CSE - moderate" +; V47 cse1 [V47,T14] ( 5, 2.50) ref -> x21 "CSE - aggressive" +; V48 cse2 [V48,T15] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" +; V49 cse3 [V49,T18] ( 4, 2 ) ref -> x1 "CSE - moderate" +; V50 cse4 [V50,T28] ( 3, 1.50) int -> x0 "CSE - moderate" +; V51 cse5 [V51,T19] ( 4, 2 ) long -> x19 "CSE - moderate" +; V52 cse6 [V52,T10] ( 7, 3.50) long -> registers multi-def "CSE - moderate" +; V53 rat0 [V53,T01] ( 5, 7.50) ref -> x20 "replacement local"
; ; Lcl frame size = 0 @@ -76,39 +76,53 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] ldr x19, [x0, #0x18] ; gcrRegs +[x19]
- cbz x19, G_M57422_IG15 - ldr x1, [x19] - movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #1 LSL #32 - cmp x1, x20 - bne G_M57422_IG13 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M57422_IG18 + mov x20, x19 + ; gcrRegs +[x20] + cbz x20, G_M57422_IG05 + ;; size=16 bbWeight=1 PerfScore 5.50 +G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #2 LSL #32 - ldr x22, [x21] - ; gcrRegs +[x22] - mov x2, x22
+ ldr x1, [x20] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M57422_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M57422_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57422_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M57422_IG16 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #2 LSL #32 + ldr x21, [x19] + ; gcrRegs +[x21] + mov x2, x21
; gcrRegs +[x2]
- mov x0, x22
+ mov x0, x21
; gcrRegs +[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1] ldr x3, [x1, #0x08] ; gcrRegs +[x3] cmp x3, x0
- bne G_M57422_IG05
+ bne G_M57422_IG08
ldr x2, [x1, #0x10] cmp x2, x0
- bne G_M57422_IG04 - mov x0, x19 - b G_M57422_IG12
+ bne G_M57422_IG07 + mov x0, x20 + b G_M57422_IG15
;; size=60 bbWeight=0.50 PerfScore 9.50
-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2 x22]
+G_M57422_IG07: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2 x21]
ldrsb wzr, [x1] mov x1, x3 mov x2, x0 @@ -124,42 +138,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
- mov x22, x0 - ; gcrRegs +[x22] - mov x0, x20
+ mov x21, x0 + ; gcrRegs +[x21] + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #1 LSL #32 + mov x0, x22
; gcrRegs -[x0] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x23, x0
+ mov x22, x0 + ; gcrRegs +[x22] + ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - ldr w19, [x19, #0x18] - ; gcrRegs -[x19] - cbz x22, G_M57422_IG17 - mov x15, x22
+ ldr w20, [x20, #0x18] + ; gcrRegs -[x20] + cbz x21, G_M57422_IG20 + mov x15, x21
; gcrRegs +[x15]
- add x14, x23, #16
+ add x14, x22, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14]
- ldr x2, [x21, #0xD1FFAB1E]
+ ldr x2, [x19, #0xD1FFAB1E]
; gcrRegs +[x2]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14]
- cbz x20, G_M57422_IG16
+ cbz x23, G_M57422_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x23
; gcrRegs +[x0] ...

benchmarks.run_pgo.osx.arm64.checked.mch

-28 (-28.00%) : 30334.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-17.14%) : 56925.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x1, x0 ; gcrRegs +[x1] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M44215_IG08 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-14.63%) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.Canon]:get_Item(int):System.Canon:this (Tier1)

@@ -10,22 +10,17 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 4, 3.29) byref -> x0 this single-def
-; V01 TypeCtx [V01,T00] ( 5, 3.86) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def
; V02 arg1 [V02,T01] ( 5, 3.29) int -> x2 single-def
-; V03 loc0 [V03,T03] ( 10, 5 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V03 loc0 [V03,T03] ( 8, 4.29) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V07 tmp3 [V07,T09] ( 3, 0.71) long -> x3 "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T07] ( 5, 2.14) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V09 tmp5 [V09,T05] ( 3, 3.57) long -> x1 "fgMakeTemp is creating a new local variable" -; V10 tmp6 [V10,T06] ( 3, 2.86) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V12 tmp8 [V12,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V13 tmp9 [V13,T08] ( 3, 1.14) int -> x1 "Inlining Arg" -; V14 tmp10 [V14,T10] ( 4, 0.64) ref -> x1 "guarded devirt return temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren> -; V16 tmp12 [V16,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+; V05 tmp1 [V05,T07] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V07 tmp3 [V07,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V08 tmp4 [V08,T05] ( 3, 1.14) int -> x1 "Inlining Arg" +; V09 tmp5 [V09,T06] ( 3, 0.57) ref -> x1 "guarded devirt return temp" +;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren> +; V11 tmp7 [V11,T08] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -40,57 +35,44 @@ G_M13118_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre ; byrRegs +[x0] ldr x20, [x0, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M13118_IG12
+ cbz x20, G_M13118_IG08
ldr x1, [x20, #0x18] ; gcrRegs +[x1] ldrh w1, [x1, #0x0C] ; gcrRegs -[x1] cmp w1, #1
- beq G_M13118_IG07
+ beq G_M13118_IG05
;; size=24 bbWeight=1 PerfScore 11.50 G_M13118_IG03: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x0]
- cbnz w2, G_M13118_IG12 - ldr x0, [x20] - ldr x1, [x19, #0x38] - ldr x1, [x1] - ldr x1, [x1] - cmp x0, x1 - beq G_M13118_IG05 - ;; size=28 bbWeight=0.71 PerfScore 10.36 -G_M13118_IG04: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x0, x1
+ cbnz w2, G_M13118_IG08 + ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1 x20] +[x0]
- b G_M13118_IG06 - ;; size=16 bbWeight=0.36 PerfScore 1.07 -G_M13118_IG05: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x20] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.36 PerfScore 0.18 -G_M13118_IG06: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x20]
+ ;; size=24 bbWeight=0.71 PerfScore 8.21 +G_M13118_IG04: ; bbWeight=0.71, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.71 PerfScore 2.14
-G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M13118_IG05: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
; gcrRegs -[x0] +[x20] ; byrRegs +[x0] ldr w0, [x0] ; byrRegs -[x0] cmp w2, w0
- bhs G_M13118_IG12
+ bhs G_M13118_IG08
lsl w1, w2, #1 ldr x0, [x20] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x0, x2
- bne G_M13118_IG13
+ bne G_M13118_IG09
mov x0, x20 ; gcrRegs +[x0] movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.SyntaxList+WithThreeChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this @@ -102,32 +84,20 @@ G_M13118_IG07: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=100 mov x1, x0 ; gcrRegs +[x1] ;; size=68 bbWeight=0.29 PerfScore 5.14
-G_M13118_IG08: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M13118_IG06: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M13118_IG11 - ;; size=8 bbWeight=0.29 PerfScore 0.43 -G_M13118_IG09: ; bbWeight=0.14, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M13118_IG11 - ;; size=24 bbWeight=0.14 PerfScore 1.93 -G_M13118_IG10: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.07 PerfScore 0.11 -G_M13118_IG11: ; bbWeight=0.29, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=0.29 PerfScore 2.86 +G_M13118_IG07: ; bbWeight=0.29, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.29 PerfScore 0.86
-G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13118_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -157,7 +127,7 @@ G_M13118_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x19] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13118_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x20 ; gcrRegs +[x0] @@ -168,10 +138,10 @@ G_M13118_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x20] mov x1, x0 ; gcrRegs +[x1]
- b G_M13118_IG08
+ b G_M13118_IG06
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 16, PerfScore 37.71, instruction count 82, allocated bytes for code 328 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
+; Total bytes of code 280, prolog size 16, PerfScore 34.71, instruction count 70, allocated bytes for code 280 (MethodHash=6436ccc1) for method Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -182,7 +152,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 70 (0x00046) Actual length = 280 (0x000118)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.53%) : 34857.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7148.433
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7148.433
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.71) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,101.06) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.70) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.74) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.74) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,7 +51,7 @@ G_M28111_IG02: ; bbWeight=0.35, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG22
+ bge G_M28111_IG20
;; size=16 bbWeight=0.35 PerfScore 1.94 G_M28111_IG03: ; bbWeight=0.35, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M28111_IG13 @@ -66,135 +66,137 @@ G_M28111_IG04: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=00 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG11
+ cbz x0, G_M28111_IG10
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG05: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG27
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG28
cmp x0, x19
- beq G_M28111_IG24
+ beq G_M28111_IG25
;; size=32 bbWeight=98.90 PerfScore 741.74 G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG11
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG11
;; size=8 bbWeight=98.90 PerfScore 148.35
-G_M28111_IG07: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG11 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG10
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG11 - ;; size=16 bbWeight=98.90 PerfScore 741.74 -G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+ bne G_M28111_IG10 + ;; size=20 bbWeight=98.90 PerfScore 840.64 +G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0 ;; size=36 bbWeight=98.90 PerfScore 791.19
-G_M28111_IG10: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG24
+G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG25
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG11: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22
- blt G_M28111_IG04 - ;; size=12 bbWeight=99.00 PerfScore 197.99 -G_M28111_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - b G_M28111_IG22 - ;; size=4 bbWeight=0.00 PerfScore 0.00
+ bge G_M28111_IG20 + b G_M28111_IG04 + ;; size=16 bbWeight=99.00 PerfScore 296.99 +G_M28111_IG11: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG07 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG12: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG07 + ;; size=8 bbWeight=24.72 PerfScore 37.09
G_M28111_IG13: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.01 G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG26
+ bhs G_M28111_IG27
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG21
+ cbz x0, G_M28111_IG19
;; size=24 bbWeight=1.00 PerfScore 9.00 G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG28
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19
- beq G_M28111_IG24 - ;; size=32 bbWeight=1.00 PerfScore 7.49 -G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG21 - ;; size=8 bbWeight=1.00 PerfScore 1.50 -G_M28111_IG17: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG21 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+ beq G_M28111_IG25 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG22 + ;; size=40 bbWeight=1.00 PerfScore 8.99 +G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG19 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG21
+ bne G_M28111_IG19
;; size=16 bbWeight=1.00 PerfScore 7.49
-G_M28111_IG19: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=36 bbWeight=1.00 PerfScore 7.99 -G_M28111_IG20: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG24 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG21: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M28111_IG25 + ;; size=40 bbWeight=1.00 PerfScore 8.99 +G_M28111_IG19: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG14 ;; size=12 bbWeight=1.00 PerfScore 2.00 ...

+48 (+10.53%) : 69402.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7147.148
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7147.148
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.81) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,101.22) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.80) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.74) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.74) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,144 +51,153 @@ G_M28111_IG02: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG19
+ bge G_M28111_IG20
;; size=16 bbWeight=0.41 PerfScore 2.24 G_M28111_IG03: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG12
+ cbz x20, G_M28111_IG13
;; size=4 bbWeight=0.41 PerfScore 0.41 G_M28111_IG04: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG12
+ tbnz w2, #31, G_M28111_IG13
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG12
+ blt G_M28111_IG13
;; size=20 bbWeight=0.41 PerfScore 2.44 G_M28111_IG05: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG10
+ cbz x0, G_M28111_IG09
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG24
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG28
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG10
+ beq G_M28111_IG25 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG11
;; size=40 bbWeight=98.90 PerfScore 890.09
-G_M28111_IG07: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG10 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG09
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG10
+ bne G_M28111_IG09
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.90 PerfScore 1532.93 -G_M28111_IG09: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21
+ ;; size=56 bbWeight=98.90 PerfScore 1631.83 +G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG25
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG10: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG09: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG05 ;; size=12 bbWeight=99.00 PerfScore 197.99
-G_M28111_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- b G_M28111_IG19
+ b G_M28111_IG20
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG12: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20]
+G_M28111_IG11: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x19-x20 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG07 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG12: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG07 + ;; size=8 bbWeight=24.72 PerfScore 37.09 +G_M28111_IG13: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.01
-G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG23
+ bhs G_M28111_IG27
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG18
+ cbz x0, G_M28111_IG19
;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG25
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19
- beq G_M28111_IG21 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG18 - ;; size=40 bbWeight=1.00 PerfScore 8.99 -G_M28111_IG15: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG18 - ;; size=12 bbWeight=0.50 PerfScore 2.25
+ beq G_M28111_IG25 + ;; size=32 bbWeight=1.00 PerfScore 7.49
G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x3]
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG22 + ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG19 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG18
+ bne G_M28111_IG19
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.48 -G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG21 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG18: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M28111_IG25 + ;; size=56 bbWeight=1.00 PerfScore 16.48
...

+48 (+10.53%) : 80079.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,35 +6,35 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7061.277
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7061.277
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,104.55) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.59) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,102.32) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,402.53) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 7,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.39) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.59) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.75) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.59) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.59) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.59) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.75) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.89) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.74) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8 @@ -51,7 +51,7 @@ G_M28111_IG02: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w21, [fp, #0x6C] // [V07 loc2] ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22
- bge G_M28111_IG18
+ bge G_M28111_IG17
;; size=16 bbWeight=0.77 PerfScore 4.25 G_M28111_IG03: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M28111_IG11 @@ -66,127 +66,131 @@ G_M28111_IG04: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=00 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
;; size=12 bbWeight=99.00 PerfScore 445.49 G_M28111_IG05: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG25
cmp x0, x19
- beq G_M28111_IG20 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG09
+ beq G_M28111_IG22 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG09
;; size=40 bbWeight=98.90 PerfScore 890.09
-G_M28111_IG06: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG09 - ;; size=12 bbWeight=49.45 PerfScore 222.52 -G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG08
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG09
+ bne G_M28111_IG08
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.90 PerfScore 1532.94 -G_M28111_IG08: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG20
+ ;; size=56 bbWeight=98.90 PerfScore 1631.84 +G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG22
;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG09: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22
- blt G_M28111_IG04 - ;; size=12 bbWeight=99.00 PerfScore 197.99 -G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - b G_M28111_IG18 - ;; size=4 bbWeight=0.00 PerfScore 0.00
+ bge G_M28111_IG17 + b G_M28111_IG04 + ;; size=16 bbWeight=99.00 PerfScore 296.99 +G_M28111_IG09: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + beq G_M28111_IG06 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG10: ; bbWeight=24.72, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG06 + ;; size=8 bbWeight=24.72 PerfScore 37.09
G_M28111_IG11: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19-x20]
+ ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.01 PerfScore 0.02 G_M28111_IG12: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG22
+ bhs G_M28111_IG24
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG17
+ cbz x0, G_M28111_IG16
;; size=24 bbWeight=1.00 PerfScore 9.00 G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #1 LSL #32 - cmp x2, x23 - bne G_M28111_IG24
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + cmp x2, x1 + bne G_M28111_IG21
cmp x0, x19
- beq G_M28111_IG20 - mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG17
+ beq G_M28111_IG22 + mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG19
;; size=40 bbWeight=1.00 PerfScore 8.99
-G_M28111_IG14: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG17 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG16 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG17
+ bne G_M28111_IG16
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.48
+ cbnz w0, G_M28111_IG22 + ;; size=56 bbWeight=1.00 PerfScore 16.48
G_M28111_IG16: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz w0, G_M28111_IG20 - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M28111_IG17: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 blt G_M28111_IG12 ;; size=12 bbWeight=1.00 PerfScore 2.00
-G_M28111_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] movn w0, #0 ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG19: ; bbWeight=0.00, epilog, nogc, extend
+G_M28111_IG18: ; bbWeight=0.00, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -194,10 +198,38 @@ G_M28111_IG19: ; bbWeight=0.00, epilog, nogc, extend add sp, sp, #96 ...

benchmarks.run_tiered.osx.arm64.checked.mch

-28 (-28.00%) : 4800.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 6298.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-17.14%) : 39318.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> x0 this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3 ) int -> x2 "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3 ) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> x1 single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> x2 "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x1, x0 ; gcrRegs +[x1] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M44215_IG08 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M3904_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M3904_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M3904_IG07
+ bge G_M3904_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #2 LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M3904_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M3904_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M3904_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - beq G_M3904_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -65,19 +48,31 @@ G_M3904_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M3904_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #32
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M3904_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #32
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M3904_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M3904_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M3904_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=4cdef0bf) for method PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M896_IG07
+ bge G_M896_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M896_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M896_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M896_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - beq G_M896_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M896_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -65,19 +48,31 @@ G_M896_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 { blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M896_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #8
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M896_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M896_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, e ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M40467_IG07
+ bge G_M40467_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #2 LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M40467_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M40467_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - beq G_M40467_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -65,19 +48,31 @@ G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M40467_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + add x14, x21, #8
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M40467_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M40467_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-24 (-40.00%) : 249536.dasm - CastExpansionTests:CastToGenericSystem.__Canon:System.Object:this (Tier1)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M64337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M64337_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M64337_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M64337_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M64337_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M64337_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M64337_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-28.57%) : 582539.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Program+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,40 +21,30 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x1, [fp, #0x10]
- mov x19, x1 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M51557_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ldr x0, [x1, #0x38] + ldr x19, [x0] + mov x0, x19
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1-x2] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M51557_IG05 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M51557_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M51557_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=32 bbWeight=1 PerfScore 10.00 +G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 19.81, instruction count 21, allocated bytes for code 84 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 17.50, instruction count 15, allocated bytes for code 60 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 1989.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 374915.dasm - ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)

@@ -5,20 +5,19 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 29608
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 29608
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> -; V01 arg1 [V01,T00] ( 6, 4 ) ref -> x1 class-hnd single-def <Internal.TypeSystem.TypeDesc> -; V02 loc0 [V02,T04] ( 4, 3.50) ref -> x1 class-hnd exact <Internal.TypeSystem.Ecma.EcmaType>
+; V00 this [V00,T03] ( 3, 3 ) ref -> x19 this class-hnd single-def <ILCompiler.ReadyToRunCompilationModuleGroupBase> +; V01 arg1 [V01,T01] ( 6, 4 ) ref -> x1 class-hnd single-def <Internal.TypeSystem.TypeDesc> +; V02 loc0 [V02,T05] ( 5, 3 ) ref -> x1 class-hnd exact single-def <Internal.TypeSystem.Ecma.EcmaType>
;# 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 "CASTCLASS eval op1" -;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.Ecma.EcmaType> -; V06 tmp3 [V06,T05] ( 3, 2 ) ref -> x1 "guarded devirt return temp" -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> -; V08 tmp5 [V08,T03] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> -; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp1 [V04,T06] ( 3, 2 ) ref -> x1 "guarded devirt return temp" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType> +; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaModule> +; V07 tmp4 [V07,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V08 rat0 [V08,T00] ( 6, 7.50) ref -> x1 "replacement local"
; ; Lcl frame size = 8 @@ -36,19 +35,14 @@ G_M4376_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x0, x2
- bne G_M4376_IG09
+ bne G_M4376_IG11
;; size=24 bbWeight=1 PerfScore 6.00 G_M4376_IG03: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M4376_IG07
+ cbnz x1, G_M4376_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4376_IG04: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - bne G_M4376_IG07 - ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M4376_IG04: ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M4376_IG09 + ;; size=4 bbWeight=0.75 PerfScore 0.75
G_M4376_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref ldr x1, [x1, #0x58] ldr x0, [x19, #0x08] @@ -68,15 +62,31 @@ G_M4376_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-G_M4376_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M4376_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1 x19] + ldr x0, [x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x0, x2 + beq G_M4376_IG04 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M4376_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + cbnz x1, G_M4376_IG05 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M4376_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1 x19]
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M4376_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M4376_IG10: ; bbWeight=0, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M4376_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M4376_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1 x19] mov x0, x1 ; gcrRegs +[x0] @@ -90,7 +100,7 @@ G_M4376_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80002 { b G_M4376_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 32.50, instruction count 41, allocated bytes for code 164 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 33.62, instruction count 44, allocated bytes for code 176 (MethodHash=cc74eee7) for method ILCompiler.ReadyToRunCompilationModuleGroupBase:ContainsType(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -101,7 +111,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+7.52%) : 260351.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -10,127 +10,131 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T08] ( 9, 8.72) ref -> x20 class-hnd single-def <System.__Canon[]> -; V02 arg2 [V02,T02] ( 13, 20.34) ref -> x19 class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T11] ( 5, 4 ) int -> x3 single-def -; V04 arg4 [V04,T12] ( 3, 3 ) int -> x4 single-def -; V05 loc0 [V05,T10] ( 7, 8.70) int -> x21 -; V06 loc1 [V06,T14] ( 7, 0 ) int -> x0 -; V07 loc2 [V07,T01] ( 13, 22.85) int -> x22
+; V01 arg1 [V01,T09] ( 9, 8.72) ref -> x20 class-hnd single-def <System.__Canon[]> +; V02 arg2 [V02,T07] ( 9, 11.90) ref -> x19 class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T12] ( 5, 4 ) int -> x3 single-def +; V04 arg4 [V04,T13] ( 3, 3 ) int -> x4 single-def +; V05 loc0 [V05,T11] ( 7, 8.70) int -> x21 +; V06 loc1 [V06,T16] ( 7, 0 ) int -> x0 +; V07 loc2 [V07,T02] ( 13, 22.85) int -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T06] ( 6, 9.37) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10, 29.06) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T10] ( 6, 9.37) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10, 29.06) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 9, 16.91) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T09] ( 4, 8.44) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4, 16.87) byref -> registers "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8, 16.87) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4, 16.87) byref -> registers "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T13] ( 3, 0.14) ref -> x0 "CSE - conservative" -; V21 cse1 [V21,T05] ( 3, 13.92) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3, 12.53) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T15] ( 3, 0.14) ref -> x0 "CSE - conservative" +; V20 cse1 [V20,T06] ( 3, 13.92) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T08] ( 3, 12.53) int -> x2 "CSE - aggressive" +; V22 rat0 [V22,T00] ( 5, 31.32) ref -> x23 "replacement local" +; V23 rat1 [V23,T14] ( 5, 0.32) ref -> x23 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x10] - stp x21, x22, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp mov x20, x1 ; gcrRegs +[x20] mov x19, x2 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add w21, w3, w4
- cbz x19, G_M28111_IG24
+ cbz x19, G_M28111_IG30
sxtw w22, w3 cmp w22, w21
- bge G_M28111_IG20
+ bge G_M28111_IG26
;; size=20 bbWeight=1 PerfScore 3.50 G_M28111_IG03: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG14
+ cbz x20, G_M28111_IG17
orr w2, w22, w21
- tbnz w2, #31, G_M28111_IG14
+ tbnz w2, #31, G_M28111_IG17
ldr w2, [x20, #0x08] cmp w2, w21
- blt G_M28111_IG14
+ blt G_M28111_IG17
;; size=24 bbWeight=0.99 PerfScore 6.96 G_M28111_IG04: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w22, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG12
ldr x2, [x0] ; byrRegs -[x2] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG13
+ bne G_M28111_IG14
;; size=36 bbWeight=4.64 PerfScore 48.72 G_M28111_IG05: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz cmp x0, x19
- beq G_M28111_IG11
+ beq G_M28111_IG15
;; size=8 bbWeight=4.18 PerfScore 6.26 G_M28111_IG06: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x3, x19 - ; gcrRegs +[x3] - ldr x2, [x3]
+ mov x23, x19 + ; gcrRegs +[x23] + cbz x23, G_M28111_IG09 + ;; size=8 bbWeight=4.18 PerfScore 6.26 +G_M28111_IG07: ; bbWeight=2.09, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ldr x2, [x23]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG09
+ beq G_M28111_IG09 + ;; size=24 bbWeight=2.09 PerfScore 12.53 +G_M28111_IG08: ; bbWeight=1.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + ;; size=4 bbWeight=1.04 PerfScore 0.52 +G_M28111_IG09: ; bbWeight=4.18, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG12
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG09 - ;; size=44 bbWeight=4.18 PerfScore 58.46 -G_M28111_IG07: ; bbWeight=4.18, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x3]
+ bne G_M28111_IG12 + ;; size=20 bbWeight=4.18 PerfScore 35.50 +G_M28111_IG10: ; bbWeight=4.18, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0 ;; size=36 bbWeight=4.18 PerfScore 33.41
-G_M28111_IG08: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M28111_IG11
+G_M28111_IG11: ; bbWeight=4.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M28111_IG15
;; size=4 bbWeight=4.64 PerfScore 4.64
-G_M28111_IG09: ; bbWeight=4.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=4.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 cmp w22, w21 blt G_M28111_IG04 ;; size=12 bbWeight=4.67 PerfScore 9.34
-G_M28111_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- b G_M28111_IG20
+ b G_M28111_IG26
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M28111_IG11: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, w22 - ;; size=4 bbWeight=0.97 PerfScore 0.49 -G_M28111_IG12: ; bbWeight=0.97, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.97 PerfScore 3.89 -G_M28111_IG13: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG14: ; bbWeight=0.46, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x19-x20] mov x1, x19 ; gcrRegs +[x1] @@ -140,45 +144,67 @@ G_M28111_IG13: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- b G_M28111_IG08
+ b G_M28111_IG11
;; size=24 bbWeight=0.46 PerfScore 5.34
-G_M28111_IG14: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG15: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + mov w0, w22 + ;; size=4 bbWeight=0.97 PerfScore 0.49 +G_M28111_IG16: ; bbWeight=0.97, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40 + ret lr + ;; size=20 bbWeight=0.97 PerfScore 5.83 +G_M28111_IG17: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19-x20]
ldr w2, [x20, #0x08] cmp w22, w2
- bhs G_M28111_IG23
+ bhs G_M28111_IG29
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w22, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG19
+ cbz x0, G_M28111_IG25
ldr x2, [x0] ; byrRegs -[x2] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG22
+ bne G_M28111_IG28
;; size=48 bbWeight=0.05 PerfScore 0.70
-G_M28111_IG15: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG18: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x19
- beq G_M28111_IG11
+ beq G_M28111_IG15
;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M28111_IG16: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - mov x3, x19 - ; gcrRegs +[x3] - ldr x2, [x3]
+G_M28111_IG19: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + mov x23, x19 + ; gcrRegs +[x23] + cbz x23, G_M28111_IG22 + ;; size=8 bbWeight=0.04 PerfScore 0.06 +G_M28111_IG20: ; bbWeight=0.02, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ldr x2, [x23]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M28111_IG19
+ beq G_M28111_IG22 + ;; size=24 bbWeight=0.02 PerfScore 0.13
...

+48 (+8.63%) : 480205.dasm - Testinstanceassignment_struct01:TestEntryPoint():int (FullOpts)

@@ -14,9 +14,9 @@ ;* V03 loc3 [V03 ] ( 0, 0 ) double -> zero-ref ld-addr-op ;* V04 loc4 [V04,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String> ;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.String>
-; V06 loc6 [V06,T02] ( 4, 4.00) ref -> x19 class-hnd exact single-def <System.Int32>
+; V06 loc6 [V06,T03] ( 5, 4.50) ref -> x19 class-hnd exact single-def <System.Int32>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.Object>
-; V08 loc8 [V08,T00] ( 13, 13.00) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
+; V08 loc8 [V08,T00] ( 13, 13 ) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
;* V09 loc9 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Guid> ;* V10 loc10 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[int]> ;* V11 loc11 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[double]> @@ -24,7 +24,7 @@ ;* V13 loc13 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Object]> ;* V14 loc14 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Guid]> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T01] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V16 tmp1 [V16,T02] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -53,24 +53,24 @@ ;* V42 tmp27 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V43 tmp28 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp29 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V45 tmp30 [V45,T08] ( 2, 2.00) ubyte -> x0 "Inline return value spill temp"
+; V45 tmp30 [V45,T10] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
;* V46 tmp31 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-;* V47 tmp32 [V47,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Int32> -; V48 tmp33 [V48,T03] ( 2, 4.00) byref -> x0 single-def "Inlining Arg" -; V49 tmp34 [V49,T04] ( 2, 4.00) int -> x0 "impAppendStmt" -;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V51 tmp36 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V52 tmp37 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V54 tmp39 [V54 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V55 tmp40 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V51.[000..016)" -;* V57 tmp42 [V57 ] ( 0, 0 ) simd16 -> zero-ref "V54.[000..016)" -; V58 cse0 [V58,T06] ( 3, 3.00) int -> x19 "CSE - aggressive" -; V59 cse1 [V59,T07] ( 3, 3.00) long -> x19 "CSE - aggressive" -; V60 cse2 [V60,T05] ( 3, 3.00) byref -> x20 "CSE - aggressive" -; V61 rat0 [V61,T09] ( 2, 2.00) long -> x0 "Spilling to split statement for tree" -; V62 rat1 [V62,T17] ( 3, 6.00) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V47 tmp32 [V47,T07] ( 2, 3.00) byref -> x0 single-def "Inlining Arg" +; V48 tmp33 [V48,T08] ( 2, 2.00) int -> x0 "impAppendStmt" +;* V49 tmp34 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V51 tmp36 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V52 tmp37 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V54 tmp39 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V55 tmp40 [V55 ] ( 0, 0 ) simd16 -> zero-ref "V50.[000..016)" +;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V53.[000..016)" +; V57 cse0 [V57,T05] ( 3, 3 ) int -> x19 "CSE - aggressive" +; V58 cse1 [V58,T06] ( 3, 3 ) long -> x19 "CSE - aggressive" +; V59 cse2 [V59,T04] ( 3, 3.00) byref -> x20 "CSE - aggressive" +; V60 rat0 [V60,T09] ( 2, 2 ) long -> x0 "Spilling to split statement for tree" +; V61 rat1 [V61,T01] ( 5, 7.50) ref -> x1 "replacement local" +; V62 rat2 [V62,T17] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 16 @@ -131,11 +131,35 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[x20] mov x0, x20 ; byrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1] + cbz x1, G_M11907_IG05 + ;; size=188 bbWeight=1.00 PerfScore 43.00 +G_M11907_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M11907_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M11907_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.13 +G_M11907_IG05: ; bbWeight=1.00, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + cbz x1, G_M11907_IG13 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M11907_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1]
ldr w0, [x0] ; byrRegs -[x0] ldr w1, [x19, #0x08] cmp w0, w1 cset x0, eq
+ ;; size=16 bbWeight=0.50 PerfScore 3.50 +G_M11907_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
movz x1, #0xD1FFAB1E // code for Test_instance_assignment_struct01:Eval(ubyte) movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -196,13 +220,13 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr w1, [x1]
- tbz w1, #0, G_M11907_IG08 - ;; size=424 bbWeight=1.00 PerfScore 105.00 -G_M11907_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w1, #0, G_M11907_IG14 + ;; size=228 bbWeight=1 PerfScore 56.50 +G_M11907_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x48]
- cbz w0, G_M11907_IG06 - ;; size=8 bbWeight=1.00 PerfScore 4.00 -G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbz w0, G_M11907_IG11 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M11907_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #164 LSL #16 movk x0, #1 LSL #32 @@ -213,12 +237,12 @@ G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x1 mov w0, #100 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #164 LSL #16 movk x0, #1 LSL #32 @@ -229,18 +253,26 @@ G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 mov w0, #1 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref + ; gcrRegs +[x19] + ; byrRegs +[x20] + mov w0, wzr + b G_M11907_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M11907_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20]
mov w1, #18 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M11907_IG03
+ b G_M11907_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 556, prolog size 16, PerfScore 123.00, instruction count 139, allocated bytes for code 556 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
+; Total bytes of code 604, prolog size 16, PerfScore 125.12, instruction count 151, allocated bytes for code 604 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info: @@ -251,7 +283,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 139 (0x0008b) Actual length = 556 (0x00022c)
+ Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.crossgen2.osx.arm64.checked.mch

-40 (-35.71%) : 135236.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)

@@ -8,65 +8,41 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x20 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov x21, x20 - ; gcrRegs +[x21] - cbz x21, G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x22, [x21]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x22, x0 - beq G_M12636_IG05 - ;; size=32 bbWeight=0.25 PerfScore 3.12 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - mov x1, x20
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x20] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ; gcrRegs -[x1] +[x0] + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 112, prolog size 20, PerfScore 17.88, instruction count 28, allocated bytes for code 112 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.00, instruction count 18, allocated bytes for code 72 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,9 +61,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-36 (-34.62%) : 79603.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -8,39 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M7606_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M7606_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -48,22 +35,14 @@ G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -82,9 +61,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-36 (-34.62%) : 183931.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -8,41 +8,28 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon> -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M8451_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -76,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -84,9 +63,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.09%) : 34694.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 179259.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 191095.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

libraries.pmi.osx.arm64.checked.mch

-28 (-46.67%) : 179614.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 109095.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M7606_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-33.33%) : 271829.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,48 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> -; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M51997_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x2] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x0, x3 - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - beq G_M51997_IG05 - ;; size=32 bbWeight=0.25 PerfScore 4.38 -G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; GC ptr vars -{V04} - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - ;; size=12 bbWeight=0.12 PerfScore 0.31 -G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ldp x0, x2, [x19, #0x08] - ; gcrRegs +[x0 x2] - ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08] + ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3] ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50 -G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00 +G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x3 ; gcr arg pop 0 ;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - ; GC ptr vars -{V04} - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - b G_M51997_IG05 - ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,8 +68,8 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end E4 end E4 end

+44 (+10.09%) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> -; V03 arg3 [V03,T07] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T08] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T05] ( 4, 3.50) int -> x21 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T07] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> +; V03 arg3 [V03,T08] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T09] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T06] ( 4, 3.50) int -> x21 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 12, 22 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl> -;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 12 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T13] ( 3, 2.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T10] ( 4, 3 ) int -> x15 "Inline stloc first use temp" -; V22 cse0 [V22,T11] ( 3, 3 ) ref -> x25 "CSE - aggressive"
+; V08 tmp1 [V08,T00] ( 12, 22 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl> +;* V09 tmp2 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T01] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 12 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T14] ( 3, 2.50) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T12] ( 4, 3 ) int -> x15 "Inline stloc first use temp" +; V20 cse0 [V20,T13] ( 3, 3 ) ref -> x25 "CSE - aggressive" +; V21 rat0 [V21,T11] ( 3, 2.50) ref -> x1 "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> x14 "replacement local"
; ; Lcl frame size = 8 @@ -64,7 +64,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ; gcrRegs -[x0] ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbnz x0, G_M54407_IG08
+ cbnz x0, G_M54407_IG11
;; size=32 bbWeight=1 PerfScore 10.00 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -74,27 +74,48 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, movk x25, #0xD1FFAB1E LSL #16 movk x25, #1 LSL #32 cmp x0, x25
- bne G_M54407_IG05 - b G_M54407_IG08 - ;; size=28 bbWeight=0.50 PerfScore 2.25 -G_M54407_IG04: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG11 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M54407_IG08 + ;; size=32 bbWeight=0.50 PerfScore 2.50 +G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=3D80003 {x0 x1 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M54407_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + b G_M54407_IG08 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
cmp x0, x25
- beq G_M54407_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG10 + mov x14, x0 + ; gcrRegs +[x14] + cbz x14, G_M54407_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=3D84001 {x0 x14 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + ldr x14, [x14] + ; gcrRegs -[x14] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M54407_IG04
+ cbnz x0, G_M54407_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x25]
- b G_M54407_IG08
+ b G_M54407_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - tbnz w21, #4, G_M54407_IG08
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz + tbnz w21, #4, G_M54407_IG11
add x14, x19, #64 ; byrRegs +[x14] mov x15, x20 @@ -103,7 +124,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -115,9 +136,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr movk x14, #0xD1FFAB1E LSL #16 movk x14, #1 LSL #32 ldr w14, [x14]
- tbz w14, #0, G_M54407_IG14
+ tbz w14, #0, G_M54407_IG17
;; size=40 bbWeight=1 PerfScore 8.50
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x14, #0xD1FFAB1E LSL #16 @@ -178,9 +199,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M54407_IG11
+ bls G_M54407_IG14
;; size=136 bbWeight=1 PerfScore 34.50
-G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG13: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] add w12, w15, #1 str w12, [x0, #0x10] @@ -193,9 +214,9 @@ G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M54407_IG12
+ b G_M54407_IG15
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M54407_IG11: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov x1, x25 ; gcrRegs +[x1] @@ -206,11 +227,11 @@ G_M54407_IG11: ; bbWeight=0.50, gcrefRegs=2000001 {x0 x25}, byrefRegs=000 blr x2 ; gcrRegs -[x0-x1] ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -218,17 +239,17 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x20 x22-x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #212 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M54407_IG09
+ b G_M54407_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 24, PerfScore 126.00, instruction count 109, allocated bytes for code 436 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 480, prolog size 24, PerfScore 134.25, instruction count 120, allocated bytes for code 480 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+12.79%) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> x0 "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> x20 "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> x1 "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -66,37 +66,58 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x0] ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- cbnz w0, G_M47746_IG11
+ cbnz w0, G_M47746_IG14
ldr w0, [x19, #0x88]
- tbnz w0, #5, G_M47746_IG11
+ tbnz w0, #5, G_M47746_IG14
mov x0, x19 ; gcrRegs +[x0] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32 cmp x0, x20
- bne G_M47746_IG09 - b G_M47746_IG10 - ;; size=48 bbWeight=0.50 PerfScore 7.75 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG13 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=52 bbWeight=0.50 PerfScore 8.00 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M47746_IG12 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M47746_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M47746_IG11 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG14 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M47746_IG08
+ cbnz x0, G_M47746_IG10
;; size=20 bbWeight=4 PerfScore 44.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20] ldr w0, [x19, #0x88] and w1, w0, #0xD1FFAB1E cmp w1, #0xD1FFAB1E
- beq G_M47746_IG11 - tbnz w0, #5, G_M47746_IG12
+ beq G_M47746_IG14 + tbnz w0, #5, G_M47746_IG15
mov x0, x19 ; gcrRegs +[x0] mov w1, #6 @@ -106,7 +127,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ;; size=48 bbWeight=0.50 PerfScore 6.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -130,7 +151,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] b G_M47746_IG03 ;; size=68 bbWeight=0.50 PerfScore 9.25
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -162,7 +183,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 344, prolog size 12, PerfScore 83.50, instruction count 86, allocated bytes for code 344 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 388, prolog size 12, PerfScore 91.75, instruction count 97, allocated bytes for code 388 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info: @@ -173,7 +194,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 344 (0x000158)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+22.45%) : 262610.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> x0 "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> x20 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> x20 "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> x1 "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -42,49 +42,69 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x20, #0xD1FFAB1E LSL #16 movk x20, #1 LSL #32 cmp x0, x20
- bne G_M32453_IG05
+ beq G_M32453_IG12
;; size=28 bbWeight=1 PerfScore 6.50
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20] + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x1, x2 + beq G_M32453_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M32453_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x20]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M32453_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M32453_IG10 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M32453_IG04
+ cbnz x0, G_M32453_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
- b G_M32453_IG09
+ b G_M32453_IG12
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbz x0, G_M32453_IG11
+ cbz x0, G_M32453_IG14
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -116,7 +136,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 62.75, instruction count 49, allocated bytes for code 196 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 240, prolog size 12, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info: @@ -127,7 +147,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.osx.arm64.Release.mch

-28 (-46.67%) : 541740.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 364 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.50 PerfScore 5.25 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 569340.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4446 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.50 PerfScore 5.25 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-35.29%) : 62225.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.Canon,System.Canon]:Single():System.__Canon:this (Tier1)

@@ -7,12 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def -; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x2 this single-def +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x2 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,38 +17,25 @@ G_M64707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x20]! mov fp, sp str x1, [fp, #0x18]
- ;; size=12 bbWeight=1 PerfScore 2.50 -G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz - ; byrRegs +[x0] - ldr x2, [x0] - ; gcrRegs +[x2] - mov x0, x2 - ; gcrRegs +[x0] - ; byrRegs -[x0] - cbz x0, G_M64707_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M64707_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - ldr x1, [x1, #0x08] - cmp x3, x1 - beq G_M64707_IG05 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M64707_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1 - mov x1, x2
+ mov x2, x0 + ; byrRegs +[x2] + ;; size=16 bbWeight=1 PerfScore 3.00 +G_M64707_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref + ldr x0, [x1, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08] + ldr x1, [x2]
; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1-x2] +[x0] - ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M64707_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1] +[x0] + ; byrRegs -[x2] + ;; size=20 bbWeight=1 PerfScore 13.00 +G_M64707_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 12, PerfScore 12.62, instruction count 17, allocated bytes for code 68 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
+; Total bytes of code 44, prolog size 12, PerfScore 18.00, instruction count 11, allocated bytes for code 44 (MethodHash=fac0033c) for method Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -62,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 48175.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.26) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.22) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.20) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T03] ( 2, 0.10) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T02] ( 3, 0.11) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.10) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.18) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -56,34 +56,48 @@ G_M12969_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M12969_IG11
+ bne G_M12969_IG12
;; size=24 bbWeight=0.04 PerfScore 0.24
-G_M12969_IG09: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG09: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG14 + ;; size=4 bbWeight=0.02 PerfScore 0.02 +G_M12969_IG10: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.02 PerfScore 0.21 -G_M12969_IG10: ; bbWeight=0.02, epilog, nogc, extend
+ ;; size=16 bbWeight=0.02 PerfScore 0.11 +G_M12969_IG11: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.05
-G_M12969_IG11: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.15
-G_M12969_IG12: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.03
+G_M12969_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M12969_IG10 + ;; size=24 bbWeight=0.01 PerfScore 0.07 +G_M12969_IG15: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG10 + ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 6.39, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.40, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 49939.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.13) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
-; V01 arg1 [V01,T01] ( 7, 3.11) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
+; V01 arg1 [V01,T01] ( 6, 3.10) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0.98) ubyte -> x0 "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V07 cse0 [V07,T03] ( 3, 0.05) long -> x3 "CSE - conservative"
+; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 single-def "argument with side effect" +; V07 rat0 [V07,T03] ( 5, 0.09) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -31,7 +31,7 @@ G_M530_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byr G_M530_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, #1
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.42 PerfScore 0.63 G_M530_IG04: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -41,7 +41,7 @@ G_M530_IG04: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, G_M530_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, wzr
- b G_M530_IG09
+ b G_M530_IG10
;; size=8 bbWeight=0.06 PerfScore 0.09 G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -50,40 +50,54 @@ G_M530_IG06: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M530_IG10
+ bne G_M530_IG13
;; size=24 bbWeight=0.02 PerfScore 0.12
-G_M530_IG07: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M530_IG07: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M530_IG11 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M530_IG08: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.01 PerfScore 0.10 -G_M530_IG08: ; bbWeight=0.01, epilog, nogc, extend
+ ;; size=16 bbWeight=0.01 PerfScore 0.05 +G_M530_IG09: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M530_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M530_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M530_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M530_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M530_IG08 + ;; size=24 bbWeight=0.01 PerfScore 0.04 +G_M530_IG12: ; bbWeight=0.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M530_IG08 + ;; size=8 bbWeight=0.00 PerfScore 0.00 +G_M530_IG13: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.01 PerfScore 0.07
-G_M530_IG11: ; bbWeight=0.01, epilog, nogc, extend
+G_M530_IG14: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 128, prolog size 8, PerfScore 5.22, instruction count 32, allocated bytes for code 128 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 5.22, instruction count 38, allocated bytes for code 152 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -94,7 +108,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 82583.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.25) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.20) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.18) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T03] ( 2, 0.11) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T02] ( 3, 0.13) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.11) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.21) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -58,34 +58,48 @@ G_M12969_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x2, x3
- bne G_M12969_IG12
+ bne G_M12969_IG13
;; size=24 bbWeight=0.05 PerfScore 0.30
-G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG10: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG15 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M12969_IG11: ; bbWeight=0.03, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.03 PerfScore 0.24 -G_M12969_IG11: ; bbWeight=0.03, epilog, nogc, extend
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M12969_IG12: ; bbWeight=0.03, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.03 PerfScore 0.06
-G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG13: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.19
-G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG14: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.04
+G_M12969_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + cmp x2, x3 + beq G_M12969_IG11 + ;; size=24 bbWeight=0.01 PerfScore 0.09 +G_M12969_IG16: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG11 + ;; size=8 bbWeight=0.01 PerfScore 0.01
-; Total bytes of code 128, prolog size 8, PerfScore 6.47, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.48, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-28 (-46.67%) : 35961.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M24927_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M24927_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 139841.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-40.00%) : 30326.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M29555_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M29555_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+43.48%) : 94559.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_unix #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+40 (+43.48%) : 92588.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_unix #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+48 (+92.31%) : 94325.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 2 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- brk_unix #0 - ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + mov w1, wzr + movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr x3, [x3] + ;; size=76 bbWeight=1 PerfScore 20.00 +G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x3 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1 - Epilog Count : 0
+ Code Words : 2 + Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ---- + D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

realworld.run.osx.arm64.checked.mch

-24 (-31.58%) : 29640.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M56342_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M56342_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 404.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 17016.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.37%) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

@@ -8,17 +8,17 @@ ; 0 inlinees with PGO data; 26 single block inlinees; 28 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T18] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
+; V00 this [V00,T19] ( 4, 10 ) ref -> x19 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle>
-; V02 arg2 [V02,T64] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
+; V02 arg2 [V02,T65] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]>
; V03 loc0 [V03,T00] ( 13, 29 ) ref -> x21 class-hnd <<unknown class>>
-; V04 loc1 [V04,T36] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc1 [V04,T37] ( 7, 10 ) ref -> [fp+0x58] class-hnd EH-live spill-single-def <<unknown class>>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <Microsoft.Cci.SecurityAttribute> ; V06 loc3 [V06 ] ( 7, 10.50) struct (24) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]>
-; V07 loc4 [V07,T29] ( 3, 12 ) short -> x22
+; V07 loc4 [V07,T30] ( 3, 12 ) short -> x22
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.Cci.SecurityAttribute>
-; V10 tmp2 [V10,T16] ( 4, 14 ) ref -> x21
+; V10 tmp2 [V10,T17] ( 4, 14 ) ref -> x21
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V12 tmp4 [V12,T14] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Reflection.Metadata.Ecma335.MetadataBuilder> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomAttribute]> @@ -27,110 +27,109 @@ ; V16 tmp8 [V16,T07] ( 4, 20 ) short -> x24 "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Cci.ICustomAttribute> ;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V19 tmp11 [V19,T19] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V19 tmp11 [V19,T20] ( 3, 12 ) ref -> x0 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-; V21 tmp13 [V21,T20] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
+; V21 tmp13 [V21,T21] ( 3, 12 ) ref -> x26 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V23 tmp15 [V23,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V24 tmp16 [V24,T21] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V25 tmp17 [V25,T53] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
+;* V23 tmp15 [V23,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V25 tmp17 [V25,T54] ( 3, 6 ) byref -> x0 "Inline stloc first use temp"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
-;* V27 tmp19 [V27 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" -;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V29 tmp21 [V29,T15] ( 8, 15 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -; V31 tmp23 [V31,T22] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> -;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V33 tmp25 [V33,T45] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -; V34 tmp26 [V34,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V35 tmp27 [V35,T40] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" -;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V37 tmp29 [V37,T08] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" -; V38 tmp30 [V38,T30] ( 3, 12 ) int -> x3 "Inlining Arg" -; V39 tmp31 [V39,T04] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" -; V40 tmp32 [V40,T37] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V41 tmp33 [V41,T54] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V42 tmp34 [V42,T23] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V43 tmp35 [V43,T24] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V44 tmp36 [V44,T61] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V45 tmp37 [V45,T31] ( 3, 12 ) int -> x1 "Inlining Arg" -; V46 tmp38 [V46,T47] ( 2, 8 ) long -> x1 "Inlining Arg" -; V47 tmp39 [V47,T11] ( 4, 16 ) long -> x2 "Inlining Arg" -; V48 tmp40 [V48,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V49 tmp41 [V49,T41] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V51 tmp43 [V51,T09] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" -; V52 tmp44 [V52,T32] ( 3, 12 ) int -> x2 "Inlining Arg" -; V53 tmp45 [V53,T05] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" -; V54 tmp46 [V54,T38] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V55 tmp47 [V55,T55] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V56 tmp48 [V56,T25] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V57 tmp49 [V57,T26] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V58 tmp50 [V58,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V59 tmp51 [V59,T33] ( 3, 12 ) int -> x1 "Inlining Arg" -; V60 tmp52 [V60,T48] ( 2, 8 ) long -> x1 "Inlining Arg" -; V61 tmp53 [V61,T12] ( 4, 16 ) long -> x2 "Inlining Arg" -; V62 tmp54 [V62,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V63 tmp55 [V63,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" -;* V64 tmp56 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V65 tmp57 [V65,T10] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" -; V66 tmp58 [V66,T34] ( 3, 12 ) int -> x2 "Inlining Arg" -; V67 tmp59 [V67,T06] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" -; V68 tmp60 [V68,T39] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> -; V69 tmp61 [V69,T56] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V70 tmp62 [V70,T27] ( 3, 12 ) byref -> x0 "impAppendStmt" -; V71 tmp63 [V71,T28] ( 3, 12 ) byref -> x4 "impAppendStmt" -; V72 tmp64 [V72,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" -; V73 tmp65 [V73,T35] ( 3, 12 ) int -> x1 "Inlining Arg" -; V74 tmp66 [V74,T49] ( 2, 8 ) long -> x1 "Inlining Arg" -; V75 tmp67 [V75,T13] ( 4, 16 ) long -> x2 "Inlining Arg"
+; V27 tmp19 [V27,T16] ( 7, 14 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>> +;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> +; V29 tmp21 [V29,T23] ( 3, 12 ) ref -> x27 class-hnd exact "dup spill" <<unknown class>> +;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V31 tmp23 [V31,T46] ( 2, 8 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +; V32 tmp24 [V32,T01] ( 7, 28 ) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V33 tmp25 [V33,T41] ( 5, 10 ) int -> [fp+0x6C] spill-single-def "Inline stloc first use temp" +;* V34 tmp26 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V35 tmp27 [V35,T08] ( 8, 16 ) int -> [fp+0x68] "Inline return value spill temp" +; V36 tmp28 [V36,T31] ( 3, 12 ) int -> x3 "Inlining Arg" +; V37 tmp29 [V37,T04] ( 5, 20 ) byref -> [fp+0x50] spill-single-def "Inlining Arg" +; V38 tmp30 [V38,T38] ( 5, 10 ) ref -> [fp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V39 tmp31 [V39,T55] ( 3, 6 ) ref -> [fp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp32 [V40,T24] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V41 tmp33 [V41,T25] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V42 tmp34 [V42,T62] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V43 tmp35 [V43,T32] ( 3, 12 ) int -> x1 "Inlining Arg" +; V44 tmp36 [V44,T48] ( 2, 8 ) long -> x1 "Inlining Arg" +; V45 tmp37 [V45,T11] ( 4, 16 ) long -> x2 "Inlining Arg" +; V46 tmp38 [V46,T02] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V47 tmp39 [V47,T42] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V48 tmp40 [V48 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V49 tmp41 [V49,T09] ( 8, 16 ) int -> [fp+0x64] "Inline return value spill temp" +; V50 tmp42 [V50,T33] ( 3, 12 ) int -> x2 "Inlining Arg" +; V51 tmp43 [V51,T05] ( 5, 20 ) byref -> [fp+0x38] spill-single-def "Inlining Arg" +; V52 tmp44 [V52,T39] ( 5, 10 ) ref -> [fp+0x30] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V53 tmp45 [V53,T56] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V54 tmp46 [V54,T26] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V55 tmp47 [V55,T27] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V56 tmp48 [V56,T63] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V57 tmp49 [V57,T34] ( 3, 12 ) int -> x1 "Inlining Arg" +; V58 tmp50 [V58,T49] ( 2, 8 ) long -> x1 "Inlining Arg" +; V59 tmp51 [V59,T12] ( 4, 16 ) long -> x2 "Inlining Arg" +; V60 tmp52 [V60,T03] ( 7, 28 ) ref -> x25 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V61 tmp53 [V61,T43] ( 5, 10 ) int -> x28 "Inline stloc first use temp" +;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V63 tmp55 [V63,T10] ( 8, 16 ) int -> [fp+0x60] "Inline return value spill temp" +; V64 tmp56 [V64,T35] ( 3, 12 ) int -> x2 "Inlining Arg" +; V65 tmp57 [V65,T06] ( 5, 20 ) byref -> [fp+0x20] spill-single-def "Inlining Arg" +; V66 tmp58 [V66,T40] ( 5, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>> +; V67 tmp59 [V67,T57] ( 3, 6 ) ref -> [fp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V68 tmp60 [V68,T28] ( 3, 12 ) byref -> x0 "impAppendStmt" +; V69 tmp61 [V69,T29] ( 3, 12 ) byref -> x4 "impAppendStmt" +; V70 tmp62 [V70,T64] ( 3, 6 ) int -> x1 "Inline return value spill temp" +; V71 tmp63 [V71,T36] ( 3, 12 ) int -> x1 "Inlining Arg" +; V72 tmp64 [V72,T50] ( 2, 8 ) long -> x1 "Inlining Arg" +; V73 tmp65 [V73,T13] ( 4, 16 ) long -> x2 "Inlining Arg" +;* V74 tmp66 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V75 tmp67 [V75 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]>
;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V77 tmp69 [V77 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]> -;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V79 tmp71 [V79,T77] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> -;* V80 tmp72 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V81 tmp73 [V81,T65] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V82 tmp74 [V82,T74] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V83 tmp75 [V83,T72] ( 4, 2 ) ref -> x1 -; V84 tmp76 [V84,T66] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V85 tmp77 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V86 tmp78 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> -; V87 tmp79 [V87,T67] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> -; V88 tmp80 [V88,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V89 tmp81 [V89,T73] ( 4, 2 ) ref -> x1 -; V90 tmp82 [V90,T68] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V91 tmp83 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -;* V92 tmp84 [V92 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> -; V93 tmp85 [V93,T76] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> -; V94 tmp86 [V94,T52] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP -; V95 tmp87 [V95,T43] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP -; V96 tmp88 [V96,T50] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP -; V97 tmp89 [V97 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP -; V98 tmp90 [V98 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP -; V99 tmp91 [V99 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP -; V100 tmp92 [V100 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP -;* V101 tmp93 [V101 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP -;* V102 tmp94 [V102 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP -; V103 tmp95 [V103,T46] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP -; V104 tmp96 [V104,T51] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP -;* V105 tmp97 [V105 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP -; V106 tmp98 [V106,T69] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP -; V107 tmp99 [V107,T44] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP -;* V108 tmp100 [V108 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP -;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP -; V110 tmp102 [V110,T70] ( 2, 4 ) ref -> x2 "field V30._value (fldOffset=0x0)" P-INDEP -;* V111 tmp103 [V111 ] ( 0, 0 ) ref -> zero-ref "field V77._value (fldOffset=0x0)" P-INDEP -; V112 tmp104 [V112,T78] ( 3, 1.50) ref -> x0 single-def "field V92._dictionary (fldOffset=0x0)" P-INDEP -;* V113 tmp105 [V113,T82] ( 0, 0 ) int -> zero-ref single-def "field V92._index (fldOffset=0x8)" P-INDEP -; V114 tmp106 [V114,T80] ( 2, 1 ) int -> x1 single-def "field V92._version (fldOffset=0xc)" P-INDEP -;* V115 tmp107 [V115,T83] ( 0, 0 ) short -> zero-ref single-def "field V92._currentKey (fldOffset=0x10)" P-INDEP -; V116 PSPSym [V116,T81] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" -; V117 cse0 [V117,T57] ( 3, 6 ) ref -> x0 "CSE - moderate" -; V118 cse1 [V118,T58] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V119 cse2 [V119,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V120 cse3 [V120,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" -; V121 cse4 [V121,T79] ( 3, 1.50) ref -> x22 "CSE - conservative" -; V122 cse5 [V122,T17] ( 8, 12 ) long -> x22 multi-def "CSE - moderate"
+; V77 tmp69 [V77,T78] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <<unknown class>> +;* V78 tmp70 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V79 tmp71 [V79,T66] ( 4, 4 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V80 tmp72 [V80,T75] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V81 tmp73 [V81,T73] ( 4, 2 ) ref -> x1 +; V82 tmp74 [V82,T67] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V83 tmp75 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V84 tmp76 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> +; V85 tmp77 [V85,T68] ( 4, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <<unknown class>> +; V86 tmp78 [V86,T76] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V87 tmp79 [V87,T74] ( 4, 2 ) ref -> x1 +; V88 tmp80 [V88,T69] ( 4, 4 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V89 tmp81 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +;* V90 tmp82 [V90 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,Microsoft.Cci.ICustomAttribute]]> +; V91 tmp83 [V91,T77] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[short,Microsoft.CodeAnalysis.Collections.OrderPreservingMultiDictionary`2+ValueSet[short,System.__Canon]]> +; V92 tmp84 [V92,T53] ( 2, 5 ) int -> x20 single-def "field V01._vToken (fldOffset=0x0)" P-INDEP +; V93 tmp85 [V93,T44] ( 4, 10 ) ref -> x23 "field V05.<Attribute>k__BackingField (fldOffset=0x0)" P-INDEP +; V94 tmp86 [V94,T51] ( 2, 8 ) short -> x24 "field V05.<Action>k__BackingField (fldOffset=0x8)" P-INDEP +; V95 tmp87 [V95 ] ( 3, 5 ) ref -> [fp+0x70] do-not-enreg[X] addr-exposed "field V06._dictionary (fldOffset=0x0)" P-DEP +; V96 tmp88 [V96 ] ( 3, 5 ) int -> [fp+0x78] do-not-enreg[X] addr-exposed "field V06._index (fldOffset=0x8)" P-DEP +; V97 tmp89 [V97 ] ( 3, 5 ) int -> [fp+0x7C] do-not-enreg[X] addr-exposed "field V06._version (fldOffset=0xc)" P-DEP +; V98 tmp90 [V98 ] ( 4, 9 ) short -> [fp+0x80] do-not-enreg[X] addr-exposed "field V06._currentKey (fldOffset=0x10)" P-DEP +;* V99 tmp91 [V99 ] ( 0, 0 ) ref -> zero-ref "field V09.<Attribute>k__BackingField (fldOffset=0x0)" P-DEP +;* V100 tmp92 [V100 ] ( 0, 0 ) short -> zero-ref "field V09.<Action>k__BackingField (fldOffset=0x8)" P-DEP +; V101 tmp93 [V101,T47] ( 2, 8 ) ref -> x1 "field V13.array (fldOffset=0x0)" P-INDEP +; V102 tmp94 [V102,T52] ( 2, 8 ) int -> x3 "field V14._value (fldOffset=0x0)" P-INDEP +;* V103 tmp95 [V103 ] ( 0, 0 ) int -> zero-ref "field V15._rowId (fldOffset=0x0)" P-INDEP +; V104 tmp96 [V104,T70] ( 2, 4 ) ref -> x2 "field V18._value (fldOffset=0x0)" P-INDEP +; V105 tmp97 [V105,T45] ( 3, 6 ) ref -> x25 "field V20._value (fldOffset=0x0)" P-INDEP +;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP +;* V107 tmp99 [V107 ] ( 0, 0 ) ref -> zero-ref "field V26._value (fldOffset=0x0)" P-INDEP +; V108 tmp100 [V108,T71] ( 2, 4 ) ref -> x2 "field V28._value (fldOffset=0x0)" P-INDEP +;* V109 tmp101 [V109 ] ( 0, 0 ) ref -> zero-ref "field V75._value (fldOffset=0x0)" P-INDEP +; V110 tmp102 [V110,T79] ( 3, 1.50) ref -> x0 single-def "field V90._dictionary (fldOffset=0x0)" P-INDEP +;* V111 tmp103 [V111,T83] ( 0, 0 ) int -> zero-ref single-def "field V90._index (fldOffset=0x8)" P-INDEP +; V112 tmp104 [V112,T81] ( 2, 1 ) int -> x1 single-def "field V90._version (fldOffset=0xc)" P-INDEP +;* V113 tmp105 [V113,T84] ( 0, 0 ) short -> zero-ref single-def "field V90._currentKey (fldOffset=0x10)" P-INDEP +; V114 PSPSym [V114,T82] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym" +; V115 cse0 [V115,T58] ( 3, 6 ) ref -> x0 "CSE - moderate" +; V116 cse1 [V116,T59] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V117 cse2 [V117,T60] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V118 cse3 [V118,T61] ( 3, 6 ) ref -> x1 "CSE - moderate" +; V119 cse4 [V119,T80] ( 3, 1.50) ref -> x22 "CSE - conservative" +; V120 cse5 [V120,T18] ( 8, 12 ) long -> x22 multi-def "CSE - moderate" +; V121 rat0 [V121,T15] ( 5, 15 ) ref -> x27 "replacement local"
; ; Lcl frame size = 128 @@ -145,7 +144,7 @@ G_M58756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, xzr, [fp, #0x70] // [V06 loc3], [V06 loc3+0x08] str xzr, [fp, #0x80] // [V06 loc3+0x10] add x3, sp, #224
- str x3, [fp, #0x88] // [V116 PSPSym]
+ str x3, [fp, #0x88] // [V114 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov w20, w1 @@ -167,13 +166,13 @@ G_M58756_IG02: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, str x0, [fp, #0x58] // [V04 loc1] ; GC ptr vars +{V04} ;; size=36 bbWeight=1 PerfScore 8.00
-G_M58756_IG03: ; bbWeight=1, gcVars=00000000000000000000001000000000 {V04}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58756_IG03: ; bbWeight=1, gcVars=00000000000000000000002000000000 {V04}, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, gcvars, byref, isz
add x11, x22, #8 ldr x1, [x11] ...

+36 (+0.81%) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)

@@ -9,29 +9,29 @@ ; Final local variable assignments ; ; V00 this [V00,T31] ( 21, 25.50) ref -> x19 this class-hnd single-def <Microsoft.ML.Data.TextLoader+Bindings>
-; V01 arg1 [V01,T73] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> -; V02 arg2 [V02,T52] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> -; V03 arg3 [V03,T84] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V04 arg4 [V04,T91] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V05 loc0 [V05,T97] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
+; V01 arg1 [V01,T74] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> +; V02 arg2 [V02,T53] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> +; V03 arg3 [V03,T85] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V04 arg4 [V04,T93] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V05 loc0 [V05,T98] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
; V06 loc1 [V06,T36] ( 8, 20.50) ref -> x24 class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V07 loc2 [V07,T72] ( 5, 9 ) ubyte -> x25
+; V07 loc2 [V07,T73] ( 5, 9 ) ubyte -> x25
; V08 loc3 [V08,T42] ( 7, 18.50) int -> x26 ; V09 loc4 [V09 ] ( 8, 4.50) ref -> [fp+0xE0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> ; V10 loc5 [V10,T30] ( 10, 28 ) int -> x23
-; V11 loc6 [V11,T71] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
+; V11 loc6 [V11,T72] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
; V12 loc7 [V12,T35] ( 10, 22.50) ref -> registers class-hnd <Microsoft.ML.Data.TextLoader+Segment[]> ; V13 loc8 [V13,T51] ( 5, 15 ) ref -> [fp+0x50] class-hnd exact spill-single-def <<unknown class>>
-;* V14 loc9 [V14,T119] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
+;* V14 loc9 [V14,T121] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
; V15 loc10 [V15,T44] ( 5, 17 ) int -> x26
-; V16 loc11 [V16,T70] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
+; V16 loc11 [V16,T71] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
; V17 loc12 [V17 ] ( 4, 2 ) int -> [fp+0xD8] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V18 loc13 [V18 ] ( 4, 2 ) int -> [fp+0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V19 loc14 [V19,T21] ( 12, 45 ) int -> [fp+0xCC] ; V20 loc15 [V20,T22] ( 10, 44 ) ref -> [fp+0x48] class-hnd exact spill-single-def <Microsoft.ML.Data.TextLoader+Column>
-; V21 loc16 [V21,T61] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> -; V22 loc17 [V22,T54] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> -; V23 loc18 [V23,T89] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
+; V21 loc16 [V21,T62] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> +; V22 loc17 [V22,T55] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> +; V23 loc18 [V23,T91] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
; V24 loc19 [V24,T23] ( 5, 34 ) ref -> x2 class-hnd exact <Microsoft.ML.Data.TextLoader+Segment[]> ; V25 loc20 [V25,T04] ( 8,108 ) int -> x0 ; V26 loc21 [V26,T00] ( 9,160 ) ref -> x4 class-hnd exact <<unknown class>> @@ -45,55 +45,55 @@ ;* V34 loc29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]> ; V35 loc30 [V35,T43] ( 6, 18.50) int -> [fp+0xBC] ; V36 loc31 [V36,T20] ( 8, 60 ) int -> [fp+0xB8]
-;* V37 loc32 [V37,T113] ( 0, 0 ) int -> zero-ref
+;* V37 loc32 [V37,T114] ( 0, 0 ) int -> zero-ref
;* V38 loc33 [V38 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> ;* V39 loc34 [V39 ] ( 0, 0 ) struct (16) zero-ref <Microsoft.ML.Data.TextLoader+Segment> ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V42 tmp2 [V42,T78] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> -; V43 tmp3 [V43,T79] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
+; V42 tmp2 [V42,T79] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> +; V43 tmp3 [V43,T80] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
;* V44 tmp4 [V44 ] ( 0, 0 ) ref -> zero-ref
-; V45 tmp5 [V45,T74] ( 4, 8 ) ref -> x2
+; V45 tmp5 [V45,T75] ( 4, 8 ) ref -> x2
; V46 tmp6 [V46,T38] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V47 tmp7 [V47,T85] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V48 tmp8 [V48,T90] ( 3, 6 ) int -> x0 -; V49 tmp9 [V49,T62] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
+; V47 tmp7 [V47,T86] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V48 tmp8 [V48,T92] ( 3, 6 ) int -> x0 +; V49 tmp9 [V49,T63] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
;* V50 tmp10 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impImportAndPushBox" <<unknown class>> ;* V51 tmp11 [V51 ] ( 0, 0 ) ref -> zero-ref ;* V52 tmp12 [V52 ] ( 0, 0 ) ref -> zero-ref ; V53 tmp13 [V53,T47] ( 2, 16 ) int -> x6
-; V54 tmp14 [V54,T122] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> -; V55 tmp15 [V55,T123] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> -; V56 tmp16 [V56,T124] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
+; V54 tmp14 [V54,T124] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> +; V55 tmp15 [V55,T125] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> +; V56 tmp16 [V56,T126] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
;* V57 tmp17 [V57 ] ( 0, 0 ) ref -> zero-ref ;* V58 tmp18 [V58 ] ( 0, 0 ) ref -> zero-ref ; V59 tmp19 [V59,T48] ( 2, 16 ) int -> x7
-; V60 tmp20 [V60,T63] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> -; V61 tmp21 [V61,T80] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V60 tmp20 [V60,T64] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> +; V61 tmp21 [V61,T81] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V62 tmp22 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V63 tmp23 [V63,T98] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V64 tmp24 [V64,T81] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
+; V63 tmp23 [V63,T99] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V64 tmp24 [V64,T82] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
;* V65 tmp25 [V65 ] ( 0, 0 ) ref -> zero-ref ;* V66 tmp26 [V66 ] ( 0, 0 ) ref -> zero-ref
-; V67 tmp27 [V67,T69] ( 5, 10 ) ref -> [fp+0x18]
+; V67 tmp27 [V67,T70] ( 5, 10 ) ref -> [fp+0x18]
; V68 tmp28 [V68,T39] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
-; V69 tmp29 [V69,T99] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V70 tmp30 [V70,T82] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
+; V69 tmp29 [V69,T100] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V70 tmp30 [V70,T83] ( 2, 8 ) ref -> x0 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
;* V71 tmp31 [V71 ] ( 0, 0 ) ref -> zero-ref
-; V72 tmp32 [V72,T75] ( 4, 8 ) ref -> x2
+; V72 tmp32 [V72,T76] ( 4, 8 ) ref -> x2
; V73 tmp33 [V73 ] ( 6, 24 ) struct (16) [fp+0xA8] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V74 tmp34 [V74 ] ( 6, 96 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V75 tmp35 [V75,T40] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
-; V76 tmp36 [V76,T100] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V76 tmp36 [V76,T101] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V77 tmp37 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V78 tmp38 [V78,T108] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> -; V79 tmp39 [V79,T92] ( 2, 4 ) int -> x1 "Inline return value spill temp"
+; V78 tmp38 [V78,T109] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> +; V79 tmp39 [V79,T94] ( 2, 4 ) int -> x1 "Inline return value spill temp"
; V80 tmp40 [V80,T41] ( 3, 20 ) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
-; V81 tmp41 [V81,T64] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -; V82 tmp42 [V82,T115] ( 2, 1 ) int -> x2 "Inline return value spill temp" -; V83 tmp43 [V83,T101] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V84 tmp44 [V84,T118] ( 2, 1 ) int -> x26 "Inline return value spill temp" -; V85 tmp45 [V85,T105] ( 3, 3 ) int -> x1 "Inlining Arg"
+; V81 tmp41 [V81,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +; V82 tmp42 [V82,T117] ( 2, 1 ) int -> x2 "Inline return value spill temp" +; V83 tmp43 [V83,T102] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> +; V84 tmp44 [V84,T120] ( 2, 1 ) int -> x26 "Inline return value spill temp" +; V85 tmp45 [V85,T106] ( 3, 3 ) int -> x1 "Inlining Arg"
;* V86 tmp46 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V87 tmp47 [V87,T49] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V88 tmp48 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -109,107 +109,107 @@ ;* V98 tmp58 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V99 tmp59 [V99,T28] ( 2, 32 ) ubyte -> x7 "Inlining Arg" ;* V100 tmp60 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V101 tmp61 [V101,T86] ( 3, 6 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> -;* V102 tmp62 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V103 tmp63 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.ML.Data.TextLoader+Segment[]> -; V104 tmp64 [V104,T93] ( 2, 4 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V105 tmp65 [V105,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> -; V106 tmp66 [V106,T87] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V107 tmp67 [V107,T76] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -; V108 tmp68 [V108 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -; V109 tmp69 [V109,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -;* V110 tmp70 [V110 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> -;* V111 tmp71 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V112 tmp72 [V112,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V113 tmp73 [V113,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" -;* V114 tmp74 [V114 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V115 tmp75 [V115,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V116 tmp76 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V117 tmp77 [V117,T88] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V118 tmp78 [V118,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -;* V119 tmp79 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V120 tmp80 [V120 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V121 tmp81 [V121,T116] ( 2, 1 ) int -> x14 "Inline return value spill temp" -; V122 tmp82 [V122,T102] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V123 tmp83 [V123,T109] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -;* V124 tmp84 [V124 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V125 tmp85 [V125,T03] ( 6,112 ) int -> x5 "field V28.Min (fldOffset=0x0)" P-INDEP -; V126 tmp86 [V126,T05] ( 5,104 ) int -> x6 "field V28.Lim (fldOffset=0x4)" P-INDEP -; V127 tmp87 [V127,T12] ( 4, 64 ) ubyte -> x7 "field V28.ForceVector (fldOffset=0x8)" P-INDEP -; V128 tmp88 [V128,T107] ( 2, 2.50) int -> [fp+0x84] spill-single-def "field V32.Min (fldOffset=0x0)" P-INDEP -; V129 tmp89 [V129,T53] ( 4, 26.50) int -> [fp+0x80] spill-single-def "field V32.Lim (fldOffset=0x4)" P-INDEP -;* V130 tmp90 [V130 ] ( 0, 0 ) ubyte -> zero-ref "field V32.ForceVector (fldOffset=0x8)" P-INDEP -;* V131 tmp91 [V131 ] ( 0, 0 ) int -> zero-ref "field V39.Min (fldOffset=0x0)" P-INDEP -;* V132 tmp92 [V132 ] ( 0, 0 ) int -> zero-ref "field V39.Lim (fldOffset=0x4)" P-INDEP -;* V133 tmp93 [V133 ] ( 0, 0 ) ubyte -> zero-ref "field V39.ForceVector (fldOffset=0x8)" P-INDEP -;* V134 tmp94 [V134,T114] ( 0, 0 ) ubyte -> zero-ref "field V62.hasValue (fldOffset=0x0)" P-INDEP -; V135 tmp95 [V135,T94] ( 2, 4 ) ubyte -> x0 "field V62.value (fldOffset=0x1)" P-INDEP -; V136 tmp96 [V136,T55] ( 4, 14 ) int -> [fp+0xA8] do-not-enreg[] "field V73.Min (fldOffset=0x0)" P-DEP -; V137 tmp97 [V137,T56] ( 4, 14 ) int -> [fp+0xAC] do-not-enreg[] "field V73.Lim (fldOffset=0x4)" P-DEP -; V138 tmp98 [V138,T57] ( 4, 14 ) ubyte -> [fp+0xB0] do-not-enreg[] "field V73.ForceVector (fldOffset=0x8)" P-DEP -; V139 tmp99 [V139,T13] ( 4, 56 ) int -> [fp+0x98] do-not-enreg[] "field V74.Min (fldOffset=0x0)" P-DEP -; V140 tmp100 [V140,T14] ( 4, 56 ) int -> [fp+0x9C] do-not-enreg[] "field V74.Lim (fldOffset=0x4)" P-DEP -; V141 tmp101 [V141,T15] ( 4, 56 ) ubyte -> [fp+0xA0] do-not-enreg[] "field V74.ForceVector (fldOffset=0x8)" P-DEP -; V142 tmp102 [V142,T58] ( 4, 14 ) int -> [fp+0x88] do-not-enreg[] "field V108.Min (fldOffset=0x0)" P-DEP -; V143 tmp103 [V143,T59] ( 4, 14 ) int -> [fp+0x8C] do-not-enreg[] "field V108.Lim (fldOffset=0x4)" P-DEP -; V144 tmp104 [V144,T60] ( 4, 14 ) ubyte -> [fp+0x90] do-not-enreg[] "field V108.ForceVector (fldOffset=0x8)" P-DEP -;* V145 tmp105 [V145 ] ( 0, 0 ) int -> zero-ref "field V114.Min (fldOffset=0x0)" P-INDEP -;* V146 tmp106 [V146 ] ( 0, 0 ) int -> zero-ref "field V114.Lim (fldOffset=0x4)" P-INDEP -;* V147 tmp107 [V147 ] ( 0, 0 ) ubyte -> zero-ref "field V114.ForceVector (fldOffset=0x8)" P-INDEP -;* V148 tmp108 [V148 ] ( 0, 0 ) int -> zero-ref "field V119.Min (fldOffset=0x0)" P-INDEP -;* V149 tmp109 [V149 ] ( 0, 0 ) int -> zero-ref "field V119.Lim (fldOffset=0x4)" P-INDEP -;* V150 tmp110 [V150 ] ( 0, 0 ) ubyte -> zero-ref "field V119.ForceVector (fldOffset=0x8)" P-INDEP -;* V151 tmp111 [V151,T112] ( 0, 0 ) ref -> zero-ref "V38.[000..008)" -; V152 tmp112 [V152,T06] ( 6, 82 ) int -> [fp+0x7C] "V38.[008..012)" -; V153 tmp113 [V153,T24] ( 3, 34 ) int -> [fp+0x78] spill-single-def "V38.[012..016)" -; V154 tmp114 [V154,T16] ( 3, 32 ) int -> x2 "V38.[016..020)" -; V155 tmp115 [V155,T17] ( 3, 32 ) int -> [fp+0x74] spill-single-def "V38.[020..024)" -;* V156 tmp116 [V156 ] ( 0, 0 ) ubyte -> zero-ref "V38.[024..025)" -;* V157 tmp117 [V157 ] ( 0, 0 ) ref -> zero-ref "V110.[000..008)" -;* V158 tmp118 [V158 ] ( 0, 0 ) int -> zero-ref "V110.[008..012)" -; V159 tmp119 [V159,T95] ( 2, 4 ) int -> x5 "V110.[012..016)" -;* V160 tmp120 [V160 ] ( 0, 0 ) int -> zero-ref "V110.[016..020)" -;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref "V110.[020..024)" -;* V162 tmp122 [V162 ] ( 0, 0 ) ubyte -> zero-ref "V110.[024..025)" -; V163 tmp123 [V163,T07] ( 3, 96 ) byref -> x1 "Spilling address for field-by-field copy" -; V164 tmp124 [V164,T125] ( 2, 0 ) ref -> x19 "argument with side effect" -; V165 tmp125 [V165,T126] ( 2, 0 ) ref -> x2 "argument with side effect" -; V166 tmp126 [V166,T127] ( 2, 0 ) ref -> x19 "argument with side effect" -; V167 tmp127 [V167,T128] ( 2, 0 ) ref -> x2 "argument with side effect" -; V168 tmp128 [V168,T67] ( 3, 12 ) struct ( 8) [fp+0x68] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V169 tmp129 [V169,T08] ( 3, 96 ) ref -> x4 "arr expr" -; V170 tmp130 [V170,T129] ( 2, 0 ) ref -> x20 "argument with side effect" -; V171 tmp131 [V171,T130] ( 2, 0 ) ref -> x2 "argument with side effect" -; V172 tmp132 [V172,T02] ( 4,128 ) byref -> x4 "BlockOp address local" -; V173 tmp133 [V173,T131] ( 2, 0 ) ref -> x1 "argument with side effect" -; V174 tmp134 [V174,T132] ( 2, 0 ) ref -> x1 "argument with side effect" -; V175 tmp135 [V175,T133] ( 2, 0 ) ref -> x19 "argument with side effect" -; V176 tmp136 [V176,T134] ( 2, 0 ) ref -> x2 "argument with side effect" -; V177 tmp137 [V177,T135] ( 2, 0 ) ref -> x1 "argument with side effect" -; V178 tmp138 [V178,T66] ( 3, 12 ) ref -> x0 "arr expr" -; V179 tmp139 [V179,T83] ( 2, 8 ) ref -> x0 "argument with side effect" -; V180 tmp140 [V180,T106] ( 3, 3 ) int -> x1 "index expr" -; V181 tmp141 [V181,T103] ( 3, 3 ) byref -> x1 single-def "BlockOp address local" -; V182 tmp142 [V182,T09] ( 3, 96 ) ref -> x1 "arr expr" -; V183 tmp143 [V183,T46] ( 4, 16 ) byref -> x1 "BlockOp address local" -; V184 tmp144 [V184,T110] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V185 tmp145 [V185,T111] ( 2, 2 ) ref -> x2 single-def "argument with side effect" -; V186 tmp146 [V186,T104] ( 3, 3 ) ref -> x13 single-def "arr expr" -; V187 tmp147 [V187,T136] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V188 tmp148 [V188,T137] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V189 tmp149 [V189,T138] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V190 tmp150 [V190,T139] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V191 tmp151 [V191,T140] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V192 tmp152 [V192,T141] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V193 PSPSym [V193,T120] ( 1, 1 ) long -> [fp+0xE8] do-not-enreg[V] "PSPSym" -;* V194 cse0 [V194,T96] ( 0, 0 ) long -> zero-ref multi-def "CSE - moderate" -;* V195 cse1 [V195,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative" -; V196 cse2 [V196,T19] ( 3, 48 ) int -> x7 "CSE - moderate" -; V197 cse3 [V197,T117] ( 3, 1.50) int -> x13 "CSE - conservative" -; V198 cse4 [V198,T34] ( 3, 24 ) int -> x1 "CSE - moderate" -; V199 cse5 [V199,T68] ( 6, 11.50) int -> x27 "CSE - moderate" -; V200 cse6 [V200,T45] ( 8, 16 ) long -> [fp+0x60] multi-def "CSE - moderate" -; V201 cse7 [V201,T50] ( 2, 16 ) int -> x0 "CSE - moderate"
+; V101 tmp61 [V101,T87] ( 3, 6 ) ref -> x1 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> +;* V102 tmp62 [V102,T115] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V103 tmp63 [V103,T88] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V104 tmp64 [V104,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> +; V105 tmp65 [V105,T89] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V106 tmp66 [V106,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +; V107 tmp67 [V107 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +; V108 tmp68 [V108,T66] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +;* V109 tmp69 [V109 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> +;* V110 tmp70 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V111 tmp71 [V111,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V112 tmp72 [V112,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" +;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V114 tmp74 [V114,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V115 tmp75 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V116 tmp76 [V116,T90] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V117 tmp77 [V117,T78] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +;* V118 tmp78 [V118 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V119 tmp79 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V120 tmp80 [V120,T118] ( 2, 1 ) int -> x14 "Inline return value spill temp" +; V121 tmp81 [V121,T103] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]>
...

+16 (+4.35%) : 4741.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo> @@ -16,27 +16,27 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall" -;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall" -;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect" -; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect" -; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive" -; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" -; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" -; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect" +; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect" +; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect" +; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect" +; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect" +; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive" +; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup" +; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" +; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" +; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" +; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup" +; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" +; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" +; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG13 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08] + ;; size=28 bbWeight=1 PerfScore 9.00 +G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16 - b G_M31693_IG17
+ cbz x0, G_M31693_IG14 + b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x1 ; gcrRegs -[x0] brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00 +G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20 - b G_M31693_IG21
+ cbz x0, G_M31693_IG17 + b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS @@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_unix #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +200,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 111 86 20 5 -1,964 +1,400
benchmarks.run_pgo.osx.arm64.checked.mch 1,433 633 661 139 -9,576 +25,000
benchmarks.run_tiered.osx.arm64.checked.mch 25 18 7 0 -512 +208
coreclr_tests.run.osx.arm64.checked.mch 881 377 241 263 -6,000 +180,144
libraries.crossgen2.osx.arm64.checked.mch 1,105 1,095 3 7 -38,612 +12
libraries.pmi.osx.arm64.checked.mch 667 608 39 20 -19,860 +2,276
libraries_tests.run.osx.arm64.Release.mch 5,090 2,283 1,695 1,112 -35,012 +52,624
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 879 725 128 26 -25,020 +11,064
realworld.run.osx.arm64.checked.mch 124 113 5 6 -3,404 +116
10,315 5,938 2,799 1,578 -139,960 +272,844

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 23,181 4 23,177 0 (0.00%) 1,679 (6.75%)
benchmarks.run_pgo.osx.arm64.checked.mch 82,121 48,088 34,033 0 (0.00%) 1,696 (2.02%)
benchmarks.run_tiered.osx.arm64.checked.mch 47,701 37,350 10,351 0 (0.00%) 423 (0.88%)
coreclr_tests.run.osx.arm64.checked.mch 577,406 356,765 220,641 2 (0.00%) 8,482 (1.45%)
libraries.crossgen2.osx.arm64.checked.mch 234,098 15 234,083 0 (0.00%) 7 (0.00%)
libraries.pmi.osx.arm64.checked.mch 287,318 18 287,300 0 (0.00%) 29,030 (9.18%)
libraries_tests.run.osx.arm64.Release.mch 618,153 468,829 149,324 0 (0.00%) 25,732 (4.00%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 261,919 21,597 240,322 0 (0.00%) 40,382 (13.36%)
realworld.run.osx.arm64.checked.mch 27,258 3 27,255 0 (0.00%) 4,284 (13.58%)
2,159,155 932,669 1,226,486 2 (0.00%) 111,715 (4.92%)

jit-analyze output

benchmarks.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9448856 (overridden on cmd)
Total bytes of diff: 9448292 (overridden on cmd)
Total bytes of delta: -564 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 22351.dasm (7.71 % of base)
         136 : 17227.dasm (35.79 % of base)
         120 : 1676.dasm (4.84 % of base)
          80 : 9472.dasm (3.05 % of base)
          68 : 22381.dasm (15.18 % of base)
          68 : 23002.dasm (14.53 % of base)
          68 : 23153.dasm (14.29 % of base)
          68 : 23263.dasm (10.83 % of base)
          68 : 23598.dasm (7.20 % of base)
          68 : 9352.dasm (11.18 % of base)
          68 : 12392.dasm (10.37 % of base)
          68 : 20631.dasm (7.69 % of base)
          68 : 22165.dasm (17.17 % of base)
          68 : 22634.dasm (14.91 % of base)
          68 : 22753.dasm (16.35 % of base)
          64 : 7109.dasm (2.52 % of base)
          64 : 9256.dasm (2.28 % of base)
          40 : 14618.dasm (4.26 % of base)
           8 : 20113.dasm (0.36 % of base)
           4 : 2694.dasm (0.40 % of base)

Top file improvements (bytes):
         -80 : 5490.dasm (-1.73 % of base)
         -72 : 9445.dasm (-2.13 % of base)
         -48 : 9542.dasm (-10.53 % of base)
         -44 : 20968.dasm (-16.18 % of base)
         -44 : 9511.dasm (-4.60 % of base)
         -40 : 19737.dasm (-8.06 % of base)
         -40 : 2456.dasm (-9.26 % of base)
         -40 : 17331.dasm (-4.81 % of base)
         -40 : 18550.dasm (-12.50 % of base)
         -36 : 20831.dasm (-15.00 % of base)
         -28 : 3029.dasm (-12.28 % of base)
         -28 : 3277.dasm (-25.93 % of base)
         -28 : 420.dasm (-28.00 % of base)
         -28 : 14024.dasm (-2.13 % of base)
         -28 : 16476.dasm (-21.88 % of base)
         -28 : 14045.dasm (-6.48 % of base)
         -28 : 10702.dasm (-20.59 % of base)
         -28 : 19073.dasm (-15.91 % of base)
         -28 : 2058.dasm (-46.67 % of base)
         -28 : 2224.dasm (-3.59 % of base)

61 total files with Code Size differences (41 improved, 20 regressed), 5 unchanged.

Top method regressions (bytes):
         136 (7.71 % of base) : 22351.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
         136 (35.79 % of base) : 17227.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
         120 (4.84 % of base) : 1676.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          80 (3.05 % of base) : 9472.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (17.17 % of base) : 22165.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (15.18 % of base) : 22381.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (14.91 % of base) : 22634.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (16.35 % of base) : 22753.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (14.53 % of base) : 23002.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.29 % of base) : 23153.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (7.69 % of base) : 20631.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 23598.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          68 (10.83 % of base) : 23263.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (11.18 % of base) : 9352.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.37 % of base) : 12392.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          64 (2.28 % of base) : 9256.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 7109.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          40 (4.26 % of base) : 14618.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
           8 (0.36 % of base) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.40 % of base) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (bytes):
         -80 (-1.73 % of base) : 5490.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -72 (-2.13 % of base) : 9445.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -48 (-10.53 % of base) : 9542.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -44 (-16.18 % of base) : 20968.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-4.60 % of base) : 9511.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -40 (-4.81 % of base) : 17331.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 18550.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 19737.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-9.26 % of base) : 2456.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -36 (-15.00 % of base) : 20831.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 19073.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -28 (-12.28 % of base) : 3029.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
         -28 (-21.88 % of base) : 16476.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-2.13 % of base) : 14024.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
         -28 (-20.59 % of base) : 10702.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 420.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-6.48 % of base) : 14045.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -28 (-25.93 % of base) : 3277.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -28 (-46.67 % of base) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-3.59 % of base) : 2224.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)

Top method regressions (percentages):
         136 (35.79 % of base) : 17227.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          68 (17.17 % of base) : 22165.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (16.35 % of base) : 22753.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (15.18 % of base) : 22381.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (14.91 % of base) : 22634.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (14.53 % of base) : 23002.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.29 % of base) : 23153.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (11.18 % of base) : 9352.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.83 % of base) : 23263.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (10.37 % of base) : 12392.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
         136 (7.71 % of base) : 22351.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
          68 (7.69 % of base) : 20631.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 23598.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
         120 (4.84 % of base) : 1676.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          40 (4.26 % of base) : 14618.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          80 (3.05 % of base) : 9472.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 7109.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          64 (2.28 % of base) : 9256.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
           4 (0.40 % of base) : 2694.dasm - System.Reflection.RuntimeModule:ResolveMethod(int,System.Type[],System.Type[]):System.Reflection.MethodBase:this (FullOpts)
           8 (0.36 % of base) : 20113.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 2058.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 1480.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 420.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 3277.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -24 (-22.22 % of base) : 16894.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -28 (-21.88 % of base) : 16476.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-20.59 % of base) : 10702.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -20 (-20.00 % of base) : 13571.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -20 (-17.86 % of base) : 17541.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -24 (-16.67 % of base) : 23332.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
         -24 (-16.22 % of base) : 7873.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
         -44 (-16.18 % of base) : 20968.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 5727.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 19073.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -36 (-15.00 % of base) : 20831.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -24 (-14.63 % of base) : 12925.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-14.29 % of base) : 5536.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -24 (-13.33 % of base) : 17115.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (FullOpts)
         -24 (-13.04 % of base) : 13306.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-13.04 % of base) : 9449.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)


benchmarks.run_pgo.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 32165908 (overridden on cmd)
Total bytes of diff: 32181332 (overridden on cmd)
Total bytes of delta: 15424 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         136 : 68537.dasm (7.93 % of base)
          76 : 39949.dasm (3.34 % of base)
          76 : 44185.dasm (3.34 % of base)
          60 : 34362.dasm (7.43 % of base)
          60 : 38062.dasm (9.55 % of base)
          60 : 41059.dasm (7.43 % of base)
          60 : 43117.dasm (7.43 % of base)
          60 : 46200.dasm (9.55 % of base)
          60 : 60587.dasm (7.58 % of base)
          60 : 68365.dasm (7.43 % of base)
          60 : 74042.dasm (13.16 % of base)
          60 : 75774.dasm (7.43 % of base)
          60 : 75793.dasm (9.55 % of base)
          60 : 17923.dasm (7.58 % of base)
          60 : 72641.dasm (7.58 % of base)
          60 : 26364.dasm (7.58 % of base)
          60 : 79908.dasm (7.43 % of base)
          60 : 81347.dasm (7.43 % of base)
          56 : 33312.dasm (9.40 % of base)
          56 : 36258.dasm (9.40 % of base)

Top file improvements (bytes):
        -396 : 57563.dasm (-8.60 % of base)
         -72 : 58646.dasm (-1.72 % of base)
         -56 : 63164.dasm (-5.32 % of base)
         -48 : 64459.dasm (-14.63 % of base)
         -48 : 64518.dasm (-8.45 % of base)
         -44 : 14784.dasm (-9.57 % of base)
         -44 : 24078.dasm (-9.57 % of base)
         -28 : 30334.dasm (-28.00 % of base)
         -28 : 35161.dasm (-4.02 % of base)
         -28 : 39461.dasm (-4.02 % of base)
         -28 : 40865.dasm (-4.02 % of base)
         -28 : 42282.dasm (-3.30 % of base)
         -28 : 43569.dasm (-3.30 % of base)
         -28 : 45986.dasm (-3.27 % of base)
         -28 : 58385.dasm (-9.46 % of base)
         -28 : 63097.dasm (-5.69 % of base)
         -28 : 68917.dasm (-4.02 % of base)
         -28 : 69913.dasm (-4.02 % of base)
         -28 : 82309.dasm (-4.02 % of base)
         -28 : 24402.dasm (-4.02 % of base)

78 total files with Code Size differences (33 improved, 45 regressed), 20 unchanged.

Top method regressions (bytes):
         136 (7.93 % of base) : 68537.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          76 (3.34 % of base) : 39949.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.34 % of base) : 44185.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          60 (9.55 % of base) : 38062.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 46200.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (13.16 % of base) : 74042.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 75793.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (7.43 % of base) : 34362.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 41059.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 43117.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 60587.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 68365.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 75774.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 17923.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 72641.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.58 % of base) : 26364.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 79908.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          60 (7.43 % of base) : 81347.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          56 (9.40 % of base) : 33312.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 36258.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (bytes):
        -396 (-8.60 % of base) : 57563.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -72 (-1.72 % of base) : 58646.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -56 (-5.32 % of base) : 63164.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -48 (-14.63 % of base) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -48 (-8.45 % of base) : 64518.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.57 % of base) : 14784.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.57 % of base) : 24078.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-9.46 % of base) : 58385.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 30334.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-5.69 % of base) : 63097.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -28 (-3.30 % of base) : 42282.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 43569.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.27 % of base) : 45986.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-4.02 % of base) : 35161.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 39461.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 40865.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 68917.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 69913.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 82309.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -28 (-4.02 % of base) : 24402.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)

Top method regressions (percentages):
          60 (13.16 % of base) : 74042.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 34857.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 69402.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.53 % of base) : 80079.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 38062.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 46200.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          60 (9.55 % of base) : 75793.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 61128.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 78809.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.46 % of base) : 80289.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 33312.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 36258.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 42832.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 46167.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 65670.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 68334.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 75139.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 79683.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 70086.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 72140.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 30334.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -24 (-17.14 % of base) : 56925.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -48 (-14.63 % of base) : 64459.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.64 % of base) : 63252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-10.71 % of base) : 63873.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.57 % of base) : 14784.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -44 (-9.57 % of base) : 24078.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-9.46 % of base) : 58385.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-9.09 % of base) : 71644.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsDescendantOfIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 69220.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 69665.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
        -396 (-8.60 % of base) : 57563.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -48 (-8.45 % of base) : 64518.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-6.76 % of base) : 63462.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
         -20 (-6.10 % of base) : 13660.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -28 (-5.69 % of base) : 63097.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -16 (-5.41 % of base) : 63372.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -56 (-5.32 % of base) : 63164.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -24 (-5.22 % of base) : 44997.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -24 (-5.22 % of base) : 58854.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)


benchmarks.run_tiered.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15054540 (overridden on cmd)
Total bytes of diff: 15054236 (overridden on cmd)
Total bytes of delta: -304 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 44298.dasm (7.93 % of base)
          12 : 28559.dasm (7.32 % of base)
          12 : 47139.dasm (7.32 % of base)
          12 : 24694.dasm (7.32 % of base)
          12 : 46627.dasm (7.32 % of base)
          12 : 30834.dasm (7.32 % of base)
          12 : 46874.dasm (7.32 % of base)

Top file improvements (bytes):
         -52 : 4618.dasm (-12.87 % of base)
         -44 : 42276.dasm (-16.18 % of base)
         -40 : 42382.dasm (-12.50 % of base)
         -36 : 41182.dasm (-15.00 % of base)
         -28 : 6298.dasm (-25.93 % of base)
         -28 : 39220.dasm (-12.73 % of base)
         -28 : 41232.dasm (-15.91 % of base)
         -28 : 4800.dasm (-28.00 % of base)
         -28 : 39123.dasm (-4.27 % of base)
         -24 : 39318.dasm (-17.14 % of base)
         -24 : 41482.dasm (-13.95 % of base)
         -24 : 41978.dasm (-6.45 % of base)
         -24 : 3382.dasm (-4.51 % of base)
         -24 : 39897.dasm (-11.11 % of base)
         -24 : 41341.dasm (-5.56 % of base)
         -20 : 4622.dasm (-5.95 % of base)
         -20 : 19564.dasm (-6.10 % of base)
         -16 : 41385.dasm (-7.84 % of base)

25 total files with Code Size differences (18 improved, 7 regressed), 0 unchanged.

Top method regressions (bytes):
         136 (7.93 % of base) : 44298.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 46874.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          12 (7.32 % of base) : 24694.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          12 (7.32 % of base) : 30834.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          12 (7.32 % of base) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (bytes):
         -52 (-12.87 % of base) : 4618.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -44 (-16.18 % of base) : 42276.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 42382.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41182.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-4.27 % of base) : 39123.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -28 (-12.73 % of base) : 39220.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 41232.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 4800.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 6298.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 41482.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 39318.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -24 (-11.11 % of base) : 39897.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -24 (-6.45 % of base) : 41978.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-5.56 % of base) : 41341.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-6.10 % of base) : 19564.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -20 (-5.95 % of base) : 4622.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -16 (-7.84 % of base) : 41385.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)

Top method regressions (percentages):
         136 (7.93 % of base) : 44298.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 46874.dasm - PerfLabTests.CastingPerf:FooObjIsFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 47139.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
          12 (7.32 % of base) : 24694.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
          12 (7.32 % of base) : 28559.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
          12 (7.32 % of base) : 30834.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
          12 (7.32 % of base) : 46627.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 4800.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 6298.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-17.14 % of base) : 39318.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -44 (-16.18 % of base) : 42276.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 41232.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41182.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 41482.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -52 (-12.87 % of base) : 4618.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -28 (-12.73 % of base) : 39220.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 42382.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-11.11 % of base) : 39897.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -16 (-7.84 % of base) : 41385.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -24 (-6.45 % of base) : 41978.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -20 (-6.10 % of base) : 19564.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -20 (-5.95 % of base) : 4622.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -24 (-5.56 % of base) : 41341.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-4.27 % of base) : 39123.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)

25 total methods with Code Size differences (18 improved, 7 regressed).


coreclr_tests.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 456586300 (overridden on cmd)
Total bytes of diff: 456760444 (overridden on cmd)
Total bytes of delta: 174144 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        8312 : 567959.dasm (38.73 % of base)
        8032 : 567334.dasm (39.29 % of base)
        8020 : 566029.dasm (36.95 % of base)
        8020 : 566933.dasm (38.23 % of base)
        8000 : 566269.dasm (36.23 % of base)
        7540 : 567303.dasm (34.38 % of base)
        7420 : 566236.dasm (35.37 % of base)
        7312 : 567563.dasm (34.34 % of base)
        7224 : 567409.dasm (32.19 % of base)
        7076 : 567601.dasm (30.24 % of base)
        6988 : 566204.dasm (31.14 % of base)
        6980 : 568154.dasm (30.87 % of base)
        6844 : 568031.dasm (28.14 % of base)
        6832 : 566901.dasm (29.83 % of base)
        6804 : 568122.dasm (29.00 % of base)
        6792 : 566303.dasm (28.66 % of base)
        6784 : 566172.dasm (28.86 % of base)
        6648 : 566138.dasm (29.69 % of base)
        6612 : 567791.dasm (26.56 % of base)
        6608 : 566105.dasm (27.78 % of base)

Top file improvements (bytes):
        -612 : 379106.dasm (-10.21 % of base)
         -80 : 387718.dasm (-5.81 % of base)
         -64 : 518181.dasm (-26.23 % of base)
         -64 : 524232.dasm (-38.10 % of base)
         -56 : 260353.dasm (-19.44 % of base)
         -52 : 387716.dasm (-4.30 % of base)
         -52 : 387968.dasm (-4.22 % of base)
         -52 : 491922.dasm (-5.06 % of base)
         -48 : 478448.dasm (-21.82 % of base)
         -48 : 491948.dasm (-10.53 % of base)
         -44 : 480009.dasm (-23.40 % of base)
         -44 : 480011.dasm (-13.41 % of base)
         -44 : 490937.dasm (-16.18 % of base)
         -44 : 479997.dasm (-23.40 % of base)
         -44 : 479998.dasm (-13.41 % of base)
         -40 : 487412.dasm (-4.81 % of base)
         -40 : 488878.dasm (-12.50 % of base)
         -40 : 490094.dasm (-8.06 % of base)
         -36 : 490789.dasm (-15.00 % of base)
         -36 : 381782.dasm (-0.48 % of base)

69 total files with Code Size differences (42 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
        8312 (38.73 % of base) : 567959.dasm - Generated957:CalliTest() (FullOpts)
        8032 (39.29 % of base) : 567334.dasm - Generated938:CalliTest() (FullOpts)
        8020 (36.95 % of base) : 566029.dasm - Generated900:CalliTest() (FullOpts)
        8020 (38.23 % of base) : 566933.dasm - Generated926:CalliTest() (FullOpts)
        8000 (36.23 % of base) : 566269.dasm - Generated907:CalliTest() (FullOpts)
        7540 (34.38 % of base) : 567303.dasm - Generated937:CalliTest() (FullOpts)
        7420 (35.37 % of base) : 566236.dasm - Generated906:CalliTest() (FullOpts)
        7312 (34.34 % of base) : 567563.dasm - Generated945:CalliTest() (FullOpts)
        7224 (32.19 % of base) : 567409.dasm - Generated940:CalliTest() (FullOpts)
        7076 (30.24 % of base) : 567601.dasm - Generated946:CalliTest() (FullOpts)
        6988 (31.14 % of base) : 566204.dasm - Generated905:CalliTest() (FullOpts)
        6980 (30.87 % of base) : 568154.dasm - Generated963:CalliTest() (FullOpts)
        6844 (28.14 % of base) : 568031.dasm - Generated959:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 566901.dasm - Generated925:CalliTest() (FullOpts)
        6804 (29.00 % of base) : 568122.dasm - Generated962:CalliTest() (FullOpts)
        6792 (28.66 % of base) : 566303.dasm - Generated908:CalliTest() (FullOpts)
        6784 (28.86 % of base) : 566172.dasm - Generated904:CalliTest() (FullOpts)
        6648 (29.69 % of base) : 566138.dasm - Generated903:CalliTest() (FullOpts)
        6612 (26.56 % of base) : 567791.dasm - Generated952:CalliTest() (FullOpts)
        6608 (27.78 % of base) : 566105.dasm - Generated902:CalliTest() (FullOpts)

Top method improvements (bytes):
        -612 (-10.21 % of base) : 379106.dasm - ILCompiler.NativeAotNameMangler:ComputeUnqualifiedMangledMethodName(Internal.TypeSystem.MethodDesc):Internal.Text.Utf8String:this (Tier1)
         -80 (-5.81 % of base) : 387718.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -64 (-26.23 % of base) : 518181.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -64 (-38.10 % of base) : 524232.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -56 (-19.44 % of base) : 260353.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -52 (-4.30 % of base) : 387716.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-4.22 % of base) : 387968.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-5.06 % of base) : 491922.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -48 (-10.53 % of base) : 491948.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -48 (-21.82 % of base) : 478448.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -44 (-16.18 % of base) : 490937.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-23.40 % of base) : 480009.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 480011.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-23.40 % of base) : 479997.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 479998.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -40 (-4.81 % of base) : 487412.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 488878.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 490094.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -36 (-0.48 % of base) : 381782.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
         -36 (-15.00 % of base) : 490789.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)

Top method regressions (percentages):
          60 (300.00 % of base) : 485762.dasm - T:TestEntryPoint():int (FullOpts)
        8032 (39.29 % of base) : 567334.dasm - Generated938:CalliTest() (FullOpts)
        8312 (38.73 % of base) : 567959.dasm - Generated957:CalliTest() (FullOpts)
        8020 (38.23 % of base) : 566933.dasm - Generated926:CalliTest() (FullOpts)
        8020 (36.95 % of base) : 566029.dasm - Generated900:CalliTest() (FullOpts)
         280 (36.84 % of base) : 344706.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
        8000 (36.23 % of base) : 566269.dasm - Generated907:CalliTest() (FullOpts)
         136 (35.79 % of base) : 476806.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](long):ComWrappersTests.Common.VtblPtr (FullOpts)
        7420 (35.37 % of base) : 566236.dasm - Generated906:CalliTest() (FullOpts)
        7540 (34.38 % of base) : 567303.dasm - Generated937:CalliTest() (FullOpts)
        7312 (34.34 % of base) : 567563.dasm - Generated945:CalliTest() (FullOpts)
        7224 (32.19 % of base) : 567409.dasm - Generated940:CalliTest() (FullOpts)
        6988 (31.14 % of base) : 566204.dasm - Generated905:CalliTest() (FullOpts)
        6980 (30.87 % of base) : 568154.dasm - Generated963:CalliTest() (FullOpts)
        7076 (30.24 % of base) : 567601.dasm - Generated946:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 566901.dasm - Generated925:CalliTest() (FullOpts)
        6648 (29.69 % of base) : 566138.dasm - Generated903:CalliTest() (FullOpts)
        6584 (29.28 % of base) : 567365.dasm - Generated939:CalliTest() (FullOpts)
        6804 (29.00 % of base) : 568122.dasm - Generated962:CalliTest() (FullOpts)
        6784 (28.86 % of base) : 566172.dasm - Generated904:CalliTest() (FullOpts)

Top method improvements (percentages):
         -24 (-40.00 % of base) : 249536.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -64 (-38.10 % of base) : 524232.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -24 (-28.57 % of base) : 582539.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 581569.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 1989.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -64 (-26.23 % of base) : 518181.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -44 (-23.40 % of base) : 480009.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-23.40 % of base) : 479997.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -48 (-21.82 % of base) : 478448.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-21.21 % of base) : 582688.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -24 (-20.00 % of base) : 570534.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -20 (-20.00 % of base) : 529429.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -28 (-20.00 % of base) : 370158.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -20 (-20.00 % of base) : 260260.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -56 (-19.44 % of base) : 260353.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -28 (-18.92 % of base) : 506837.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -28 (-18.92 % of base) : 299664.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -20 (-17.86 % of base) : 487623.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -32 (-17.78 % of base) : 260306.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-17.50 % of base) : 249530.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)


libraries.crossgen2.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55720964 (overridden on cmd)
Total bytes of diff: 55682364 (overridden on cmd)
Total bytes of delta: -38600 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 179259.dasm (1.09 % of base)
           4 : 191095.dasm (1.09 % of base)
           4 : 34694.dasm (1.09 % of base)

Top file improvements (bytes):
        -384 : 135764.dasm (-15.76 % of base)
        -360 : 135763.dasm (-15.68 % of base)
        -336 : 135761.dasm (-15.58 % of base)
        -320 : 140894.dasm (-20.36 % of base)
        -320 : 109249.dasm (-13.91 % of base)
        -312 : 135759.dasm (-15.48 % of base)
        -288 : 135757.dasm (-15.35 % of base)
        -264 : 135755.dasm (-15.21 % of base)
        -240 : 135753.dasm (-15.04 % of base)
        -216 : 135751.dasm (-14.84 % of base)
        -216 : 79634.dasm (-17.14 % of base)
        -216 : 79635.dasm (-16.77 % of base)
        -192 : 135749.dasm (-14.59 % of base)
        -176 : 76076.dasm (-47.31 % of base)
        -168 : 135747.dasm (-14.29 % of base)
        -156 : 76091.dasm (-40.21 % of base)
        -144 : 135524.dasm (-9.00 % of base)
        -144 : 135745.dasm (-13.90 % of base)
        -140 : 78554.dasm (-14.71 % of base)
        -136 : 135721.dasm (-10.30 % of base)

68 total files with Code Size differences (65 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (1.09 % of base) : 179259.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 191095.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 34694.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (bytes):
        -384 (-15.76 % of base) : 135764.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -360 (-15.68 % of base) : 135763.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -336 (-15.58 % of base) : 135761.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -320 (-20.36 % of base) : 140894.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-13.91 % of base) : 109249.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -312 (-15.48 % of base) : 135759.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -288 (-15.35 % of base) : 135757.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -264 (-15.21 % of base) : 135755.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -240 (-15.04 % of base) : 135753.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-14.84 % of base) : 135751.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-17.14 % of base) : 79634.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -216 (-16.77 % of base) : 79635.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -192 (-14.59 % of base) : 135749.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -176 (-47.31 % of base) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -168 (-14.29 % of base) : 135747.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -156 (-40.21 % of base) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -144 (-13.90 % of base) : 135745.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -144 (-9.00 % of base) : 135524.dasm - RailwaySharp.ErrorHandling.Trial+<>c__13`2[System.__Canon,System.__Canon]:<Collect>b__13_0(RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon]:this (FullOpts)
        -140 (-14.71 % of base) : 78554.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
        -136 (-10.30 % of base) : 135721.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)

Top method regressions (percentages):
           4 (1.09 % of base) : 179259.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 191095.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 34694.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (percentages):
        -176 (-47.31 % of base) : 76076.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -156 (-40.21 % of base) : 76091.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -40 (-35.71 % of base) : 135236.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -36 (-34.62 % of base) : 80080.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 79603.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 183931.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-33.33 % of base) : 109313.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 180304.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 35761.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 145705.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -36 (-32.14 % of base) : 228724.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -36 (-32.14 % of base) : 208745.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
         -32 (-30.77 % of base) : 135695.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -32 (-30.77 % of base) : 183953.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -48 (-28.57 % of base) : 183255.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -36 (-28.12 % of base) : 230365.dasm - Microsoft.Extensions.Primitives.ChangeToken+ChangeTokenRegistration`1+<>c[System.__Canon]:<RegisterChangeTokenCallback>b__7_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 21378.dasm - System.Buffers.SharedArrayPool`1+<>c[System.__Canon]:<InitializeTlsBucketsAndTrimming>b__11_0(System.Object):ubyte:this (FullOpts)
         -36 (-28.12 % of base) : 231285.dasm - System.Threading.Channels.AsyncOperation`1+<>c[System.__Canon]:<SignalCompletion>b__35_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214041.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 214069.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_0(System.Object):this (FullOpts)


libraries.pmi.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60103176 (overridden on cmd)
Total bytes of diff: 60085592 (overridden on cmd)
Total bytes of delta: -17584 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         136 : 186600.dasm (17.62 % of base)
         136 : 299717.dasm (8.81 % of base)
         136 : 307138.dasm (19.54 % of base)
         132 : 24480.dasm (18.13 % of base)
         128 : 24629.dasm (30.48 % of base)
         128 : 24630.dasm (30.48 % of base)
         128 : 24631.dasm (30.48 % of base)
         128 : 24632.dasm (30.48 % of base)
         128 : 24633.dasm (30.48 % of base)
         128 : 24634.dasm (30.48 % of base)
         116 : 132000.dasm (4.86 % of base)
         112 : 24628.dasm (31.11 % of base)
          72 : 125161.dasm (2.65 % of base)
          64 : 244356.dasm (2.55 % of base)
          64 : 48077.dasm (2.55 % of base)
          56 : 202697.dasm (5.24 % of base)
          44 : 262575.dasm (12.79 % of base)
          44 : 262585.dasm (10.09 % of base)
          44 : 262610.dasm (22.45 % of base)
          44 : 262284.dasm (8.59 % of base)

Top file improvements (bytes):
        -600 : 312705.dasm (-25.17 % of base)
        -320 : 110143.dasm (-19.32 % of base)
        -316 : 188399.dasm (-17.14 % of base)
        -264 : 254522.dasm (-36.46 % of base)
        -240 : 80525.dasm (-8.61 % of base)
        -204 : 246589.dasm (-6.89 % of base)
        -204 : 50399.dasm (-6.89 % of base)
        -192 : 113835.dasm (-7.03 % of base)
        -180 : 109370.dasm (-21.84 % of base)
        -180 : 109363.dasm (-22.61 % of base)
        -172 : 208058.dasm (-8.57 % of base)
        -168 : 208702.dasm (-42.00 % of base)
        -132 : 208704.dasm (-5.91 % of base)
        -120 : 109533.dasm (-18.29 % of base)
        -120 : 109524.dasm (-18.99 % of base)
        -116 : 25435.dasm (-11.11 % of base)
        -112 : 253172.dasm (-1.83 % of base)
        -104 : 211675.dasm (-19.40 % of base)
         -96 : 212657.dasm (-10.67 % of base)
         -80 : 182301.dasm (-1.73 % of base)

75 total files with Code Size differences (52 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
         136 (19.54 % of base) : 307138.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         136 (8.81 % of base) : 299717.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         136 (17.62 % of base) : 186600.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         132 (18.13 % of base) : 24480.dasm - System.Runtime.InteropServices.DynamicInterfaceCastableHelpers:GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType):System.RuntimeType (FullOpts)
         128 (30.48 % of base) : 24632.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         128 (30.48 % of base) : 24631.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         128 (30.48 % of base) : 24634.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         128 (30.48 % of base) : 24630.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         128 (30.48 % of base) : 24633.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         128 (30.48 % of base) : 24629.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         116 (4.86 % of base) : 132000.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
         112 (31.11 % of base) : 24628.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.__Canon](long):System.__Canon (FullOpts)
          72 (2.65 % of base) : 125161.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          64 (2.55 % of base) : 244356.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          64 (2.55 % of base) : 48077.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          56 (5.24 % of base) : 202697.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
          44 (6.59 % of base) : 262316.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          44 (8.59 % of base) : 262284.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          44 (12.79 % of base) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 312705.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -320 (-19.32 % of base) : 110143.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -316 (-17.14 % of base) : 188399.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -264 (-36.46 % of base) : 254522.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -240 (-8.61 % of base) : 80525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -204 (-6.89 % of base) : 50399.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -204 (-6.89 % of base) : 246589.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -192 (-7.03 % of base) : 113835.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -180 (-22.61 % of base) : 109363.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -180 (-21.84 % of base) : 109370.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -172 (-8.57 % of base) : 208058.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -168 (-42.00 % of base) : 208702.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -132 (-5.91 % of base) : 208704.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
        -120 (-18.29 % of base) : 109533.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -120 (-18.99 % of base) : 109524.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -116 (-11.11 % of base) : 25435.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
        -112 (-1.83 % of base) : 253172.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
        -104 (-19.40 % of base) : 211675.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -96 (-10.67 % of base) : 212657.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
         -80 (-1.73 % of base) : 182301.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
         112 (31.11 % of base) : 24628.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.__Canon](long):System.__Canon (FullOpts)
         128 (30.48 % of base) : 24632.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         128 (30.48 % of base) : 24631.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         128 (30.48 % of base) : 24634.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         128 (30.48 % of base) : 24630.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         128 (30.48 % of base) : 24633.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         128 (30.48 % of base) : 24629.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          44 (22.45 % of base) : 262610.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         136 (19.54 % of base) : 307138.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         132 (18.13 % of base) : 24480.dasm - System.Runtime.InteropServices.DynamicInterfaceCastableHelpers:GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType):System.RuntimeType (FullOpts)
         136 (17.62 % of base) : 186600.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
          44 (12.79 % of base) : 262575.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 262585.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         136 (8.81 % of base) : 299717.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          44 (8.59 % of base) : 262284.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          40 (7.52 % of base) : 295520.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
          44 (6.59 % of base) : 262316.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          56 (5.24 % of base) : 202697.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
         116 (4.86 % of base) : 132000.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
          16 (4.35 % of base) : 96181.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 109095.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 179614.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
        -168 (-42.00 % of base) : 208702.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -264 (-36.46 % of base) : 254522.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
         -72 (-34.62 % of base) : 208623.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 271829.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -24 (-31.58 % of base) : 308365.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 275087.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 216537.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
         -32 (-28.57 % of base) : 26285.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 295323.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 295337.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 250965.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -28 (-28.00 % of base) : 410.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -32 (-27.59 % of base) : 287996.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 181710.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 181719.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
         -24 (-27.27 % of base) : 25953.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 169891.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 169765.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)


libraries_tests.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 290728984 (overridden on cmd)
Total bytes of diff: 290746596 (overridden on cmd)
Total bytes of delta: 17612 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         548 : 380680.dasm (15.87 % of base)
         360 : 316147.dasm (2.77 % of base)
         344 : 381252.dasm (13.17 % of base)
         340 : 380723.dasm (13.91 % of base)
         336 : 379792.dasm (9.14 % of base)
         336 : 64054.dasm (8.97 % of base)
         332 : 380236.dasm (14.43 % of base)
         332 : 380757.dasm (14.85 % of base)
         328 : 379509.dasm (11.28 % of base)
         320 : 171719.dasm (2.53 % of base)
         244 : 483363.dasm (1.88 % of base)
         240 : 631865.dasm (1.86 % of base)
         240 : 324245.dasm (1.86 % of base)
         232 : 179011.dasm (1.79 % of base)
         228 : 399320.dasm (30.00 % of base)
         216 : 323252.dasm (10.65 % of base)
         200 : 299182.dasm (2.05 % of base)
         184 : 500187.dasm (1.47 % of base)
         180 : 333611.dasm (1.26 % of base)
         180 : 445700.dasm (1.26 % of base)

Top file improvements (bytes):
        -356 : 158054.dasm (-7.69 % of base)
        -180 : 572549.dasm (-2.55 % of base)
        -124 : 429341.dasm (-1.05 % of base)
        -112 : 573247.dasm (-2.16 % of base)
        -108 : 478961.dasm (-6.04 % of base)
        -108 : 569561.dasm (-2.64 % of base)
        -104 : 394413.dasm (-4.77 % of base)
         -84 : 478960.dasm (-21.21 % of base)
         -84 : 541853.dasm (-0.91 % of base)
         -80 : 634826.dasm (-23.26 % of base)
         -80 : 489625.dasm (-7.07 % of base)
         -80 : 568573.dasm (-0.90 % of base)
         -76 : 66567.dasm (-5.15 % of base)
         -68 : 462512.dasm (-9.88 % of base)
         -64 : 301329.dasm (-19.05 % of base)
         -64 : 486570.dasm (-3.14 % of base)
         -64 : 62421.dasm (-1.34 % of base)
         -64 : 93927.dasm (-1.42 % of base)
         -60 : 541902.dasm (-14.29 % of base)
         -60 : 604958.dasm (-7.25 % of base)

88 total files with Code Size differences (43 improved, 45 regressed), 20 unchanged.

Top method regressions (bytes):
         548 (15.87 % of base) : 380680.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         360 (2.77 % of base) : 316147.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         344 (13.17 % of base) : 381252.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (Tier0-FullOpts)
         340 (13.91 % of base) : 380723.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         336 (8.97 % of base) : 64054.dasm - Microsoft.Interop.StatelessMarshallerShapeHelper+LinearCollection:AllocateContainerForUnmanagedElementsWithCallerAllocatedBuffer(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol):Microsoft.CodeAnalysis.IMethodSymbol (Tier1)
         336 (9.14 % of base) : 379792.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
         332 (14.43 % of base) : 380236.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         332 (14.85 % of base) : 380757.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         328 (11.28 % of base) : 379509.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         320 (2.53 % of base) : 171719.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         244 (1.88 % of base) : 483363.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         240 (1.86 % of base) : 631865.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         240 (1.86 % of base) : 324245.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         232 (1.79 % of base) : 179011.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         228 (30.00 % of base) : 399320.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         216 (10.65 % of base) : 323252.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
         200 (2.05 % of base) : 299182.dasm - Xunit.Sdk.TypeUtility:ResolveGenericTypes(Xunit.Abstractions.IMethodInfo,System.Object[]):Xunit.Abstractions.ITypeInfo[] (Tier1)
         184 (1.47 % of base) : 500187.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         180 (1.26 % of base) : 333611.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         180 (1.26 % of base) : 445700.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -356 (-7.69 % of base) : 158054.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -180 (-2.55 % of base) : 572549.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.GenericStructIDictionaryWrapper`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -124 (-1.05 % of base) : 429341.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
        -112 (-2.16 % of base) : 573247.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -108 (-6.04 % of base) : 478961.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
        -108 (-2.64 % of base) : 569561.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -104 (-4.77 % of base) : 394413.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
         -84 (-21.21 % of base) : 478960.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
         -84 (-0.91 % of base) : 541853.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -80 (-7.07 % of base) : 489625.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPublicKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
         -80 (-0.90 % of base) : 568573.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -80 (-23.26 % of base) : 634826.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -76 (-5.15 % of base) : 66567.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:<VisitBinaryOperatorChildren>g__learnFromOperator|207_3(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):ubyte:this (Tier1)
         -68 (-9.88 % of base) : 462512.dasm - System.Tuple`2[System.__Canon,System.__Canon]:Equals(System.Object,System.Collections.IEqualityComparer):ubyte:this (Tier1)
         -64 (-19.05 % of base) : 301329.dasm - (dynamicClass):lambda_method1246(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -64 (-1.34 % of base) : 62421.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -64 (-1.42 % of base) : 93927.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetCustomAttribute(System.Reflection.Metadata.CustomAttributeHandle,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,byref,byref):ubyte:this (Tier1)
         -64 (-3.14 % of base) : 486570.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
         -60 (-7.25 % of base) : 604958.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitReference(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.Emit.EmitContext) (Tier1)
         -60 (-14.29 % of base) : 541902.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (Tier1)

Top method regressions (percentages):
         228 (30.00 % of base) : 399320.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         136 (23.29 % of base) : 490540.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList[int](int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
         136 (19.10 % of base) : 490539.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (Tier1)
          24 (18.75 % of base) : 49939.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
          24 (18.75 % of base) : 48175.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          24 (18.75 % of base) : 82583.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
         116 (18.24 % of base) : 462901.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
          16 (18.18 % of base) : 613746.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_UnderlyingConversions():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]:this (Tier1)
          36 (18.00 % of base) : 569952.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
          60 (17.05 % of base) : 309087.dasm - System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
          24 (16.22 % of base) : 50187.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Inequality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
         100 (16.03 % of base) : 323253.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
         548 (15.87 % of base) : 380680.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
          20 (15.62 % of base) : 155000.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          36 (15.52 % of base) : 406265.dasm - System.Xml.Schema.XmlBaseConverter:IsDerivedFrom(System.Type,System.Type):ubyte (Tier1)
          88 (15.17 % of base) : 105380.dasm - System.Dynamic.Utils.TypeUtils:HasReferenceEquality(System.Type,System.Type):ubyte (Tier1)
         132 (15.07 % of base) : 490541.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Nullable`1[System.Formats.Asn1.Asn1Tag],System.Type,System.Enum):this (Tier1)
         332 (14.85 % of base) : 380757.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          92 (14.47 % of base) : 395482.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
         332 (14.43 % of base) : 380236.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 541740.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-46.67 % of base) : 569340.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -24 (-35.29 % of base) : 62225.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (Tier1)
         -48 (-30.77 % of base) : 500910.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -32 (-28.57 % of base) : 274772.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -32 (-28.57 % of base) : 125474.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-28.00 % of base) : 25883.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -24 (-24.00 % of base) : 287594.dasm - System.Net.Sockets.SocketAsyncContext+OperationQueue`1+<>c[System.__Canon]:<StartAsyncOperation>b__11_1(System.Object):this (Tier1)
         -40 (-23.26 % of base) : 60955.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -40 (-23.26 % of base) : 93058.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -80 (-23.26 % of base) : 634826.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -24 (-23.08 % of base) : 599826.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-22.73 % of base) : 60156.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitListElement[System.__Canon](System.__Canon):System.__Canon:this (Tier1)
         -24 (-22.22 % of base) : 542795.dasm - System.Text.Json.Serialization.Converters.QueueOfTConverter`2[System.__Canon,int]:Add(byref,byref):this (Tier1)
         -24 (-22.22 % of base) : 571199.dasm - System.Text.Json.Serialization.Converters.StackOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (Tier1)
         -28 (-21.88 % of base) : 49830.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -48 (-21.82 % of base) : 169219.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
         -84 (-21.21 % of base) : 478960.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2):System.__Canon (Tier1)
         -24 (-20.69 % of base) : 299257.dasm - (dynamicClass):lambda_method4(System.Runtime.CompilerServices.Closure):long (FullOpts)
         -32 (-20.51 % of base) : 55773.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 129078576 (overridden on cmd)
Total bytes of diff: 129064620 (overridden on cmd)
Total bytes of delta: -13956 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         664 : 163550.dasm (17.74 % of base)
         428 : 163498.dasm (12.27 % of base)
         364 : 164006.dasm (13.79 % of base)
         360 : 162617.dasm (12.06 % of base)
         356 : 162816.dasm (9.78 % of base)
         352 : 162607.dasm (14.59 % of base)
         352 : 163610.dasm (14.59 % of base)
         176 : 137110.dasm (12.61 % of base)
         164 : 162559.dasm (3.60 % of base)
         164 : 163247.dasm (3.60 % of base)
         164 : 162558.dasm (2.68 % of base)
         164 : 163246.dasm (2.68 % of base)
         160 : 163572.dasm (2.92 % of base)
         148 : 163422.dasm (3.78 % of base)
         140 : 113175.dasm (10.36 % of base)
         136 : 113114.dasm (23.13 % of base)
         136 : 113128.dasm (20.99 % of base)
         136 : 113236.dasm (21.79 % of base)
         136 : 163164.dasm (10.49 % of base)
         136 : 185720.dasm (39.08 % of base)

Top file improvements (bytes):
        -600 : 61322.dasm (-25.17 % of base)
        -384 : 163817.dasm (-15.79 % of base)
        -352 : 162701.dasm (-12.59 % of base)
        -304 : 163811.dasm (-12.38 % of base)
        -296 : 209724.dasm (-17.05 % of base)
        -244 : 14172.dasm (-17.04 % of base)
        -228 : 3243.dasm (-7.52 % of base)
        -224 : 163813.dasm (-12.25 % of base)
        -224 : 50712.dasm (-8.93 % of base)
        -204 : 12475.dasm (-7.21 % of base)
        -200 : 7274.dasm (-8.17 % of base)
        -196 : 22589.dasm (-7.69 % of base)
        -184 : 16213.dasm (-9.52 % of base)
        -184 : 44945.dasm (-7.76 % of base)
        -184 : 16158.dasm (-9.43 % of base)
        -176 : 163809.dasm (-6.89 % of base)
        -176 : 22613.dasm (-6.04 % of base)
        -160 : 163814.dasm (-8.97 % of base)
        -160 : 195629.dasm (-8.97 % of base)
        -160 : 192722.dasm (-7.53 % of base)

88 total files with Code Size differences (55 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         664 (17.74 % of base) : 163550.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         428 (12.27 % of base) : 163498.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         364 (13.79 % of base) : 164006.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         360 (12.06 % of base) : 162617.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (9.78 % of base) : 162816.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         352 (14.59 % of base) : 162607.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         352 (14.59 % of base) : 163610.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         176 (12.61 % of base) : 137110.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         164 (3.60 % of base) : 162559.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (3.60 % of base) : 163247.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (2.68 % of base) : 162558.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         164 (2.68 % of base) : 163246.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         160 (2.92 % of base) : 163572.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         148 (3.78 % of base) : 163422.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         140 (10.36 % of base) : 113175.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
         136 (10.49 % of base) : 163164.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderNookAppLocalState:Read2_Color(ubyte):System.Drawing.Color:this (FullOpts)
         136 (18.89 % of base) : 113142.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         136 (17.17 % of base) : 113208.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
         136 (23.13 % of base) : 113114.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         136 (21.38 % of base) : 113117.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 61322.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -384 (-15.79 % of base) : 163817.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
        -352 (-12.59 % of base) : 162701.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
        -304 (-12.38 % of base) : 163811.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
        -296 (-17.05 % of base) : 209724.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -244 (-17.04 % of base) : 14172.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
        -228 (-7.52 % of base) : 3243.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -224 (-8.93 % of base) : 50712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -224 (-12.25 % of base) : 163813.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
        -204 (-7.21 % of base) : 12475.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -200 (-8.17 % of base) : 7274.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -196 (-7.69 % of base) : 22589.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -184 (-7.76 % of base) : 44945.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -184 (-9.43 % of base) : 16158.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -184 (-9.52 % of base) : 16213.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -176 (-6.04 % of base) : 22613.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -176 (-6.89 % of base) : 163809.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
        -160 (-7.53 % of base) : 192722.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
        -160 (-8.97 % of base) : 163814.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)
        -160 (-8.97 % of base) : 195629.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write54_XmlSchemaChoice(System.String,System.String,System.Xml.Schema.XmlSchemaChoice,ubyte,ubyte):this (FullOpts)

Top method regressions (percentages):
          48 (92.31 % of base) : 94325.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          40 (43.48 % of base) : 92588.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          40 (43.48 % of base) : 94559.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         136 (39.08 % of base) : 185720.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point](long):System.Runtime.InteropServices.Tests.UnsafeAddrOfPinnedArrayElementTests+Point (FullOpts)
         136 (23.13 % of base) : 113114.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         136 (22.97 % of base) : 113121.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
          44 (22.45 % of base) : 176196.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         136 (22.22 % of base) : 113224.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
         136 (21.79 % of base) : 113236.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
         136 (21.38 % of base) : 113117.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         136 (20.99 % of base) : 113128.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
         136 (19.43 % of base) : 113016.dasm - System.Security.Cryptography.X509Certificates.ManagedX509ExtensionProcessor:EncodeX509KeyUsageExtension(int):ubyte[]:this (FullOpts)
         136 (18.89 % of base) : 113142.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         664 (17.74 % of base) : 163550.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         136 (17.17 % of base) : 113208.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
          60 (15.62 % of base) : 209650.dasm - System.Tests.ArrayTests+<>c:<CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException>b__93_0():System.Object:this (FullOpts)
          40 (14.71 % of base) : 137906.dasm - System.Linq.Tests.DistinctTests+<>c__DisplayClass26_0:<DistinctBy_SourceNull_ThrowsArgumentNullException>b__0():System.Object:this (FullOpts)
         352 (14.59 % of base) : 162607.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         352 (14.59 % of base) : 163610.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
          76 (14.07 % of base) : 139973.dasm - System.SpanTests.MemoryMarshalTests:CreateFromPinnedArrayString() (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 35961.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 139841.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-40.00 % of base) : 30326.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
         -56 (-35.00 % of base) : 161854.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
         -72 (-34.62 % of base) : 163197.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 67999.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 163846.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
         -24 (-31.58 % of base) : 86110.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-31.58 % of base) : 131379.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47917.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 42287.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 47909.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42280.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 47913.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42284.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -32 (-28.57 % of base) : 183314.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 72556.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 124490.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 91369.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)
         -60 (-27.78 % of base) : 236748.dasm - System.Text.Json.Serialization.Converters.StackOrQueueConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)


realworld.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10546316 (overridden on cmd)
Total bytes of diff: 10543028 (overridden on cmd)
Total bytes of delta: -3288 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 14414.dasm (3.07 % of base)
          36 : 12441.dasm (0.81 % of base)
          16 : 4741.dasm (4.35 % of base)
           8 : 27312.dasm (0.37 % of base)
           4 : 20618.dasm (0.07 % of base)

Top file improvements (bytes):
        -200 : 18166.dasm (-8.18 % of base)
        -120 : 31392.dasm (-28.30 % of base)
         -64 : 26129.dasm (-6.81 % of base)
         -64 : 31052.dasm (-25.81 % of base)
         -60 : 8700.dasm (-32.61 % of base)
         -60 : 29550.dasm (-20.55 % of base)
         -56 : 7622.dasm (-8.81 % of base)
         -56 : 31029.dasm (-2.52 % of base)
         -56 : 5637.dasm (-22.22 % of base)
         -56 : 5055.dasm (-4.09 % of base)
         -52 : 29861.dasm (-8.28 % of base)
         -44 : 16373.dasm (-16.18 % of base)
         -44 : 19336.dasm (-3.20 % of base)
         -44 : 28686.dasm (-2.68 % of base)
         -40 : 18442.dasm (-12.50 % of base)
         -40 : 26699.dasm (-8.06 % of base)
         -40 : 31025.dasm (-17.86 % of base)
         -40 : 31493.dasm (-13.89 % of base)
         -40 : 14555.dasm (-4.81 % of base)
         -40 : 8348.dasm (-12.50 % of base)

58 total files with Code Size differences (53 improved, 5 regressed), 6 unchanged.

Top method regressions (bytes):
          52 (3.07 % of base) : 14414.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (0.81 % of base) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          16 (4.35 % of base) : 4741.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
           8 (0.37 % of base) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 20618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (bytes):
        -200 (-8.18 % of base) : 18166.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -120 (-28.30 % of base) : 31392.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -64 (-6.81 % of base) : 26129.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
         -64 (-25.81 % of base) : 31052.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-32.61 % of base) : 8700.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -60 (-20.55 % of base) : 29550.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -56 (-8.81 % of base) : 7622.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
         -56 (-4.09 % of base) : 5055.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -56 (-2.52 % of base) : 31029.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
         -56 (-22.22 % of base) : 5637.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -52 (-8.28 % of base) : 29861.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
         -44 (-3.20 % of base) : 19336.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -44 (-16.18 % of base) : 16373.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-2.68 % of base) : 28686.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-12.50 % of base) : 8348.dasm - FSharp.Compiler.CheckExpressions:TcAdjustExprForTypeDirectedConversions(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -40 (-4.81 % of base) : 14555.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 18442.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 26699.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-13.89 % of base) : 31493.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -40 (-17.86 % of base) : 31025.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)

Top method regressions (percentages):
          16 (4.35 % of base) : 4741.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
          52 (3.07 % of base) : 14414.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (0.81 % of base) : 12441.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
           8 (0.37 % of base) : 27312.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 20618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
         -60 (-32.61 % of base) : 8700.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -24 (-31.58 % of base) : 29640.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
        -120 (-28.30 % of base) : 31392.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -28 (-28.00 % of base) : 404.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 17016.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -64 (-25.81 % of base) : 31052.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-23.33 % of base) : 9668.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -56 (-22.22 % of base) : 5637.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-21.21 % of base) : 4628.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
         -20 (-20.83 % of base) : 14855.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -60 (-20.55 % of base) : 29550.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -32 (-19.05 % of base) : 31419.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-18.42 % of base) : 9777.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -20 (-17.86 % of base) : 15102.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -40 (-17.86 % of base) : 31025.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-17.50 % of base) : 10668.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)
         -24 (-17.14 % of base) : 20742.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
         -44 (-16.18 % of base) : 16373.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 28860.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 10065.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+hasStaticBindings@2118-1:Invoke(FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassBindingGroup):ubyte:this (FullOpts)



windows arm64

Diffs are based on 2,218,505 contexts (938,449 MinOpts, 1,280,056 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 122,612 (5.24%)

Overall (+144,232 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 9,209,620 -672
benchmarks.run_pgo.windows.arm64.checked.mch 37,042,776 +13,900
benchmarks.run_tiered.windows.arm64.checked.mch 14,982,116 -740
coreclr_tests.run.windows.arm64.checked.mch 464,848,280 +175,144
libraries.crossgen2.windows.arm64.checked.mch 59,064,704 -39,068
libraries.pmi.windows.arm64.checked.mch 59,138,872 -15,932
libraries_tests.run.windows.arm64.Release.mch 294,230,544 +30,240
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 136,411,844 -14,072
realworld.run.windows.arm64.checked.mch 11,201,768 -4,048
smoke_tests.nativeaot.windows.arm64.checked.mch 3,425,620 -520

FullOpts (+144,232 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 9,209,084 -672
benchmarks.run_pgo.windows.arm64.checked.mch 21,031,380 +13,900
benchmarks.run_tiered.windows.arm64.checked.mch 3,804,928 -740
coreclr_tests.run.windows.arm64.checked.mch 126,159,176 +175,144
libraries.crossgen2.windows.arm64.checked.mch 59,063,068 -39,068
libraries.pmi.windows.arm64.checked.mch 59,018,888 -15,932
libraries_tests.run.windows.arm64.Release.mch 90,796,948 +30,240
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 123,258,096 -14,072
realworld.run.windows.arm64.checked.mch 10,637,788 -4,048
smoke_tests.nativeaot.windows.arm64.checked.mch 3,424,608 -520

Example diffs

benchmarks.run.windows.arm64.checked.mch

-28 (-46.67%) : 3049.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-31.58%) : 4731.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.Canon,System.Canon]:b10_1(System.Canon):System.__Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M11807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M11807_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M11807_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M11807_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3, #0x08] - cmp x2, x3 - beq G_M11807_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M11807_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0, #0x08]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M11807_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M11807_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=4ad6d1e0) for method System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 687.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.40%) : 1020.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)

@@ -12,53 +12,47 @@ ; V01 arg1 [V01,T07] ( 11, 7.50) ref -> x19 class-hnd single-def <System.Object> ; V02 loc0 [V02,T02] ( 19, 19 ) long -> [fp+0x18] do-not-enreg[Z] EH-live ; V03 loc1 [V03,T15] ( 5, 4 ) long -> x20
-; V04 loc2 [V04,T24] ( 2, 2 ) long -> x0 -; V05 loc3 [V05,T28] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 2, 2 ) long -> x0 +; V05 loc3 [V05,T26] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T03] ( 5, 16.50) int -> x2
-; V07 loc5 [V07,T25] ( 2, 2 ) long -> x0
+; V07 loc5 [V07,T23] ( 2, 2 ) long -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T16] ( 2, 4 ) byref -> x21 single-def "impAppendStmt" ; V10 tmp2 [V10,T13] ( 3, 6 ) byref -> x0 single-def "dup spill"
-; V11 tmp3 [V11,T22] ( 2, 2 ) byref -> x22 single-def "impAppendStmt" -; V12 tmp4 [V12,T19] ( 3, 3 ) byref -> x21 single-def "dup spill" -;* V13 tmp5 [V13,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> x19 class-hnd "spilling QMark2" <<unknown class>> -; V15 tmp7 [V15,T04] ( 2, 16 ) byref -> x24 "impAppendStmt" -; V16 tmp8 [V16,T01] ( 3, 24 ) byref -> x0 "dup spill" -;* V17 tmp9 [V17,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V18 tmp10 [V18,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V21 tmp13 [V21,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp" -;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V23 tmp15 [V23,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V25 tmp17 [V25 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V26 tmp18 [V26,T34] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> -;* V27 tmp19 [V27,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V28 tmp20 [V28,T09] ( 2, 8 ) byref -> x0 "Inlining Arg" -; V29 tmp21 [V29,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp" -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V32 tmp24 [V32,T35] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V33 tmp25 [V33,T21] ( 4, 2 ) long -> x0 "Inline stloc first use temp" -;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> -; V36 tmp28 [V36,T26] ( 2, 2 ) long -> x0 "field V19._handle (fldOffset=0x0)" P-INDEP -; V37 tmp29 [V37,T10] ( 2, 8 ) long -> x0 "field V24._handle (fldOffset=0x0)" P-INDEP -; V38 tmp30 [V38,T29] ( 2, 1 ) long -> x0 "field V30._handle (fldOffset=0x0)" P-INDEP -; V39 tmp31 [V39,T36] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V40 tmp32 [V40,T37] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V41 tmp33 [V41,T38] ( 2, 0 ) ref -> x20 "argument with side effect" -; V42 tmp34 [V42,T39] ( 2, 0 ) ref -> x2 "argument with side effect" -; V43 PSPSym [V43,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -;* V44 cse0 [V44 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative" -; V45 cse1 [V45,T20] ( 3, 2.50) ref -> x0 "CSE - moderate" -; V46 cse2 [V46,T12] ( 5, 6 ) int -> x22 multi-def "CSE - aggressive" -; V47 cse3 [V47,T11] ( 4, 6.50) long -> x21 "CSE - aggressive" -; V48 cse4 [V48,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate" -; V49 cse5 [V49,T06] ( 3, 12 ) int -> x23 "CSE - aggressive" -; V50 cse6 [V50,T18] ( 4, 2 ) long -> registers multi-def "CSE - moderate"
+; V11 tmp3 [V11,T21] ( 2, 2 ) byref -> x22 single-def "impAppendStmt" +; V12 tmp4 [V12,T18] ( 3, 3 ) byref -> x21 single-def "dup spill" +; V13 tmp5 [V13,T04] ( 2, 16 ) byref -> x24 "impAppendStmt" +; V14 tmp6 [V14,T01] ( 3, 24 ) byref -> x0 "dup spill" +;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V17 tmp9 [V17,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp" +;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +; V19 tmp11 [V19,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V22 tmp14 [V22,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> +;* V23 tmp15 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T09] ( 2, 8 ) byref -> x0 "Inlining Arg" +; V25 tmp17 [V25,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp" +;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V28 tmp20 [V28,T30] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V29 tmp21 [V29,T20] ( 4, 2 ) long -> x0 "Inline stloc first use temp" +;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> +; V32 tmp24 [V32,T24] ( 2, 2 ) long -> x0 "field V15._handle (fldOffset=0x0)" P-INDEP +; V33 tmp25 [V33,T10] ( 2, 8 ) long -> x0 "field V20._handle (fldOffset=0x0)" P-INDEP +; V34 tmp26 [V34,T27] ( 2, 1 ) long -> x0 "field V26._handle (fldOffset=0x0)" P-INDEP +; V35 tmp27 [V35,T31] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V36 tmp28 [V36,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V37 tmp29 [V37,T33] ( 2, 0 ) ref -> x20 "argument with side effect" +; V38 tmp30 [V38,T34] ( 2, 0 ) ref -> x2 "argument with side effect" +; V39 PSPSym [V39,T28] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V40 cse0 [V40,T12] ( 5, 6 ) int -> registers multi-def "CSE - aggressive" +; V41 cse1 [V41,T19] ( 3, 2.50) ref -> x0 "CSE - moderate" +; V42 cse2 [V42,T11] ( 4, 6.50) long -> x21 "CSE - aggressive" +; V43 cse3 [V43,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate" +; V44 cse4 [V44,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -70,7 +64,7 @@ G_M14417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x25, [sp, #0x58] mov fp, sp add x2, sp, #96
- str x2, [fp, #0x20] // [V43 PSPSym]
+ str x2, [fp, #0x20] // [V39 PSPSym]
str x0, [fp, #0x10] // [V00 this] ; GC ptr vars +{V00} mov x19, x1 @@ -85,13 +79,13 @@ G_M14417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ;; size=8 bbWeight=1 PerfScore 1.50 G_M14417_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x19]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - cmp x1, x21
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2
bne G_M14417_IG05
- ldr w22, [x19, #0x08] - mov w1, w22
+ ldr w21, [x19, #0x08] + mov w1, w21
add x20, x1, #1 b G_M14417_IG06 ;; size=40 bbWeight=0.50 PerfScore 5.50 @@ -167,13 +161,14 @@ G_M14417_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, cmp x0, x1 bne G_M14417_IG22 mov w2, wzr
- ldr w22, [x19, #0x08]
+ ldr w0, [x19, #0x08] + sxtw w22, w0
cmp w22, #0 ble G_M14417_IG15 add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19]
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M14417_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr x0, [fp, #0x18] // [V02 loc0] add w23, w2, #1 @@ -448,7 +443,7 @@ G_M14417_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 992, prolog size 40, PerfScore 236.00, instruction count 248, allocated bytes for code 992 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
+; Total bytes of code 996, prolog size 40, PerfScore 236.25, instruction count 249, allocated bytes for code 996 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
; ============================================================ Unwind Info: @@ -459,7 +454,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+4.26%) : 14041.dasm - System.Collections.PerfFrozenDictionaryString:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

@@ -8,60 +8,60 @@ ; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V02 tmp1 [V02,T02] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> +; V03 tmp2 [V03,T20] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V05 tmp4 [V05,T16] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V06 tmp5 [V06,T11] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> +; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp7 [V08,T29] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>> -; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> -; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg" -;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def -; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15 -;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15 -;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg" -; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP -;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP -;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP -;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP -; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP -; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP -; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP -; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive" -; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" -; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate" -; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate" -; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate" -; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"
+; V15 tmp14 [V15,T25] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>> +; V16 tmp15 [V16,T21] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> +; V18 tmp17 [V18,T23] ( 2, 2 ) int -> x20 "Inlining Arg" +;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +; V20 tmp19 [V20,T30] ( 2, 1 ) ref -> x15 +;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def +; V23 tmp22 [V23,T17] ( 4, 2 ) ref -> x15 +;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V32 tmp31 [V32,T13] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V33 tmp32 [V33,T24] ( 2, 2 ) int -> x20 "Inlining Arg" +; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V35 tmp34 [V35,T26] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V36 tmp35 [V36,T12] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP +;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP +;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP +;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP +; V41 tmp40 [V41,T09] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP +; V42 tmp41 [V42,T33] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP +; V43 tmp42 [V43,T31] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP +; V44 tmp43 [V44,T32] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP +; V45 tmp44 [V45,T22] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V46 cse0 [V46,T27] ( 3, 1.50) ref -> x3 "CSE - moderate" +; V47 cse1 [V47,T14] ( 5, 2.50) ref -> x21 "CSE - aggressive" +; V48 cse2 [V48,T15] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" +; V49 cse3 [V49,T18] ( 4, 2 ) ref -> x1 "CSE - moderate" +; V50 cse4 [V50,T28] ( 3, 1.50) int -> x0 "CSE - moderate" +; V51 cse5 [V51,T19] ( 4, 2 ) long -> x19 "CSE - moderate" +; V52 cse6 [V52,T10] ( 7, 3.50) long -> registers multi-def "CSE - moderate" +; V53 rat0 [V53,T01] ( 5, 7.50) ref -> x20 "replacement local"
; ; Lcl frame size = 0 @@ -76,39 +76,53 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] ldr x19, [x0, #0x18] ; gcrRegs +[x19]
- cbz x19, G_M57422_IG15 - ldr x1, [x19] - movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - cmp x1, x20 - bne G_M57422_IG13 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbz x19, G_M57422_IG18 + mov x20, x19 + ; gcrRegs +[x20] + cbz x20, G_M57422_IG05 + ;; size=16 bbWeight=1 PerfScore 5.50 +G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - ldr x22, [x21] - ; gcrRegs +[x22] - mov x2, x22
+ ldr x1, [x20] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M57422_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M57422_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57422_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M57422_IG16 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + ldr x21, [x19] + ; gcrRegs +[x21] + mov x2, x21
; gcrRegs +[x2]
- mov x0, x22
+ mov x0, x21
; gcrRegs +[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1] ldr x3, [x1, #0x08] ; gcrRegs +[x3] cmp x3, x0
- bne G_M57422_IG05
+ bne G_M57422_IG08
ldr x2, [x1, #0x10] cmp x2, x0
- bne G_M57422_IG04 - mov x0, x19 - b G_M57422_IG12
+ bne G_M57422_IG07 + mov x0, x20 + b G_M57422_IG15
;; size=60 bbWeight=0.50 PerfScore 9.50
-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2 x22]
+G_M57422_IG07: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2 x21]
ldrsb wzr, [x1] mov x1, x3 mov x2, x0 @@ -124,42 +138,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
- mov x22, x0 - ; gcrRegs +[x22] - mov x0, x20
+ mov x21, x0 + ; gcrRegs +[x21] + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + mov x0, x22
; gcrRegs -[x0] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0]
- mov x23, x0
+ mov x22, x0 + ; gcrRegs +[x22] + ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - ldr w19, [x19, #0x18] - ; gcrRegs -[x19] - cbz x22, G_M57422_IG17 - mov x15, x22
+ ldr w20, [x20, #0x18] + ; gcrRegs -[x20] + cbz x21, G_M57422_IG20 + mov x15, x21
; gcrRegs +[x15]
- add x14, x23, #16
+ add x14, x22, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14]
- ldr x2, [x21, #0xD1FFAB1E]
+ ldr x2, [x19, #0xD1FFAB1E]
; gcrRegs +[x2]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14]
- cbz x20, G_M57422_IG16
+ cbz x23, G_M57422_IG19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x23
; gcrRegs +[x0] ...

+44 (+8.59%) : 1615.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)

@@ -8,29 +8,28 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 3, 3 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> -; V01 arg1 [V01,T00] ( 8, 8 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task> -; V02 arg2 [V02,T02] ( 4, 4 ) ubyte -> [fp+0x1C] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> +; V01 arg1 [V01,T00] ( 8, 5 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task> +; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [fp+0x1C] EH-live single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T07] ( 4, 4 ) ubyte -> x1 "Inline return value spill temp" -; V06 tmp3 [V06,T06] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V07 tmp4 [V07,T12] ( 3, 3 ) ubyte -> x1 "Inline return value spill temp" -; V08 tmp5 [V08,T09] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V05 tmp2 [V05,T07] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp" +; V06 tmp3 [V06,T06] ( 4, 2 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V07 tmp4 [V07,T12] ( 3, 1.50) ubyte -> x1 "Inline return value spill temp" +; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T13] ( 2, 2 ) int -> x1 "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 2, 1 ) int -> x1 "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object> ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V16 tmp13 [V16,T10] ( 2, 4 ) byref -> x1 single-def "argument with side effect" -; V17 PSPSym [V17,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V18 cse0 [V18,T01] ( 7, 7 ) byref -> x20 "CSE - aggressive" -; V19 cse1 [V19,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive" -; V20 rat0 [V20,T08] ( 3, 4 ) byref -> x21 "TLS field access" -; V21 rat1 [V21,T03] ( 3, 6 ) long -> x1 "TLS access" -; V22 rat2 [V22,T04] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V15 tmp12 [V15,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect" +; V16 PSPSym [V16,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V17 cse0 [V17,T03] ( 7, 3.50) byref -> x20 "CSE - aggressive" +; V18 cse1 [V18,T11] ( 3, 1.50) ref -> x1 "CSE - moderate" +; V19 rat0 [V19,T08] ( 3, 2 ) byref -> x21 "TLS field access" +; V20 rat1 [V20,T04] ( 3, 3 ) long -> x1 "TLS access" +; V21 rat2 [V21,T05] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
; ; Lcl frame size = 24 @@ -40,16 +39,18 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x38] mov fp, sp add x3, sp, #64
- str x3, [fp, #0x20] // [V17 PSPSym]
+ str x3, [fp, #0x20] // [V16 PSPSym]
str x0, [fp, #0x10] // [V00 this] ; GC ptr vars +{V00} str w2, [fp, #0x1C] // [V02 arg2] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.50
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
tst w2, #255
- beq G_M14922_IG04
+ beq G_M14922_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp x19, #0 cset x0, ne movz x1, #0xD1FFAB1E // code for <unknown method> @@ -67,16 +68,16 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M14922_IG04
+ cbnz w0, G_M14922_IG05
mov w0, wzr
- ;; size=68 bbWeight=1 PerfScore 15.50 -G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0.50 PerfScore 7.00 +G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
add x20, x19, #52 ; byrRegs +[x20] ldapr w1, [x20] @@ -87,20 +88,20 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 ldapr x1, [x1] ; gcrRegs +[x1] ; byrRegs -[x1]
- cbz x1, G_M14922_IG08
+ cbz x1, G_M14922_IG09
add x3, x1, #56 ; byrRegs +[x3] ldapr w3, [x3] ; byrRegs -[x3] cmp w3, #1
- beq G_M14922_IG07
+ beq G_M14922_IG08
add x1, x1, #64 ; gcrRegs -[x1] ; byrRegs +[x1] ldr x1, [x1] ; gcrRegs +[x1] ; byrRegs -[x1]
- cbz x1, G_M14922_IG05
+ cbz x1, G_M14922_IG06
add x1, x1, #32 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -108,42 +109,42 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 ; byrRegs -[x1] cmp w1, #0 cset x1, ne
- b G_M14922_IG06 - ;; size=76 bbWeight=1 PerfScore 24.50 -G_M14922_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG07 + ;; size=76 bbWeight=0.50 PerfScore 12.25 +G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - b G_M14922_IG09 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M14922_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + b G_M14922_IG10 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #1
- b G_M14922_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M14922_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w3, [x20] and w3, w3, #0xD1FFAB1E mov w4, #0xD1FFAB1E cmp w1, #0 ccmp w3, w4, z, eq
- beq G_M14922_IG12
+ beq G_M14922_IG13
ldr x1, [xpr, #0x58] ldr x1, [x1, #0x10] ldr w3, [x1, #0xD0] cmp w3, #9
- blt G_M14922_IG11
+ blt G_M14922_IG12
ldr x1, [x1, #0xD8] ldr x1, [x1, #0x48]
- cbz x1, G_M14922_IG11
+ cbz x1, G_M14922_IG12
ldr x1, [x1] ; byrRegs +[x1] add x21, x1, #16 ; byrRegs +[x21]
- ;; size=64 bbWeight=1 PerfScore 27.00 -G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=64 bbWeight=0.50 PerfScore 13.50 +G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs -[x1 x20] add x1, x21, #104 ; byrRegs +[x1] @@ -158,9 +159,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x21] ; gcr arg pop 0
- b G_M14922_IG13 - ;; size=36 bbWeight=1 PerfScore 8.00 -G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M14922_IG14 + ;; size=36 bbWeight=0.50 PerfScore 4.00 +G_M14922_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19] mov w0, #9 bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED @@ -168,18 +169,18 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x21, x0 ; byrRegs +[x21]
- b G_M14922_IG10
+ b G_M14922_IG11
;; size=16 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0 x21] +[x20] ldapr w1, [x20] and w1, w1, #0xD1FFAB1E cmp w1, #0xD1FFAB1E, LSL #12
- beq G_M14922_IG13
+ beq G_M14922_IG14
ldapr w1, [x20] orr w1, w1, #0xD1FFAB1E swpal w1, w1, [x20]
- tbnz w1, #22, G_M14922_IG13
+ tbnz w1, #22, G_M14922_IG14
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -190,33 +191,47 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 ; gcrRegs -[x0 x19] ; byrRegs -[x20] ; gcr arg pop 0
- ;; size=56 bbWeight=1 PerfScore 18.50 -G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V17 PSPSym] - bl G_M14922_IG17 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M14922_IG14: ; bbWeight=1, nogc, extend - nop - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=0.50 PerfScore 9.25 +G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w2, [fp, #0x1C] // [V02 arg2] + tst w2, #255 + beq G_M14922_IG15 + ldr x0, [fp, #0x10] // [V00 this] + ; gcrRegs +[x0] + ldrsb wzr, [x0] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:NotifyWorkItemProgress():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1]
; GC ptr vars -{V00}
+ blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + ;; size=56 bbWeight=0.50 PerfScore 9.25 +G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ...

benchmarks.run_pgo.windows.arm64.checked.mch

-28 (-28.00%) : 7934.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-21.88%) : 84511.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)

@@ -8,14 +8,13 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> -; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo> +; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x28] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - mov x20, x1 - ; gcrRegs +[x20] - mov w21, w2 - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x1 + ; gcrRegs +[x19] + mov w20, w2 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x21, [x0, #0x38] + ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- uxtb w2, w21 - mov x0, x20
+ uxtb w2, w20 + mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M29548_IG05 - ;; size=52 bbWeight=1 PerfScore 15.50 -G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M29548_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50 +G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-17.14%) : 63039.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4.00) byref -> x0 this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4.00) byref -> x0 this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.13) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4.00) byref -> x1 single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5.00) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3.00) int -> x2 "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2.00) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3.00) ref -> x0 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3.00) ref -> x0 "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2.00) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4.00) byref -> x1 single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5.00) ref -> x1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3.00) int -> x2 "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2.00) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3.00) ref -> x0 single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3.00) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -67,33 +64,21 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x1, x0 ; gcrRegs +[x1] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M44215_IG08 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 16, PerfScore 31.06, instruction count 35, allocated bytes for code 140 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 116, prolog size 16, PerfScore 36.00, instruction count 29, allocated bytes for code 116 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -104,7 +89,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.43%) : 70946.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,39 +6,39 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8406.487
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8406.487
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.23) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.60) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.80) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,100.35) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.23) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.80) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.40) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6,199.80) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.40) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.60) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.75) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.60) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.60) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.60) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.90) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.70) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.75) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.90) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.70) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,741.76) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.49) ref -> x23 "replacement local"
; ; Lcl frame size = 8
-G_M28111_IG01: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28111_IG01: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -52,105 +52,112 @@ G_M28111_IG02: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22 bge G_M28111_IG19
- cbz x20, G_M28111_IG09
+ cbz x20, G_M28111_IG10
orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG09
+ tbnz w2, #31, G_M28111_IG10
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG09
+ blt G_M28111_IG10
;; size=40 bbWeight=0.12 PerfScore 1.44 G_M28111_IG03: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG08
+ cbz x0, G_M28111_IG07
;; size=12 bbWeight=99.00 PerfScore 445.50 G_M28111_IG04: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG17
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG08
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG08
;; size=40 bbWeight=98.90 PerfScore 890.11
-G_M28111_IG05: ; bbWeight=49.45, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG08 - ;; size=12 bbWeight=49.45 PerfScore 222.53 -G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG05: ; bbWeight=98.90, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG07
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG08
+ bne G_M28111_IG07
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.90 PerfScore 1532.97 -G_M28111_IG07: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=98.90 PerfScore 1631.87 +G_M28111_IG06: ; bbWeight=98.90, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=98.90 PerfScore 98.90
-G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19 b G_M28111_IG03 ;; size=16 bbWeight=99.00 PerfScore 297.00
-G_M28111_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=49.45, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + beq G_M28111_IG05 + ;; size=24 bbWeight=49.45 PerfScore 296.70 +G_M28111_IG09: ; bbWeight=24.73, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG05 + ;; size=8 bbWeight=24.73 PerfScore 37.09 +G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG16
+ bhs G_M28111_IG23
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0] cbz x0, G_M28111_IG15 ;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1
bne G_M28111_IG18 cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG15
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG16
;; size=40 bbWeight=1.00 PerfScore 8.99
-G_M28111_IG12: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG15 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG15
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1 bne G_M28111_IG15 add x0, x0, #12 @@ -158,16 +165,17 @@ G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.48
+ ;; size=56 bbWeight=1.00 PerfScore 16.48
G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=1.00 PerfScore 1.00 @@ -175,27 +183,25 @@ G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19
- b G_M28111_IG10
+ b G_M28111_IG11
;; size=16 bbWeight=1.00 PerfScore 3.00
-G_M28111_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M28111_IG17: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19-x20] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [x0] - ldr x2, [x2, #0x48] - ldr x2, [x2, #0x10]
...

+48 (+10.43%) : 84222.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1-OSR)

@@ -6,39 +6,39 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5145.61
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5145.61
; 5 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 8,103.00) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T01] ( 12,401.75) ref -> x19 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T08] ( 8,201.88) ref -> x19 class-hnd single-def <System.__Canon>
;* V03 arg3 [V03 ] ( 0, 0 ) int -> zero-ref single-def ;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def ; V05 loc0 [V05,T11] ( 5,100.00) int -> [fp+0x74] tier0-frame ;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref ; V07 loc2 [V07,T02] ( 12,401.00) int -> [fp+0x6C] tier0-frame ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6,199.88) int -> x0 "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,599.63) ref -> x0 "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6,199.88) int -> x0 "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,599.63) ref -> x0 "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8,399.75) ref -> x0 class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T08] ( 6,249.84) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4,399.75) byref -> x0 "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8,399.75) ref -> x23 class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4,399.75) byref -> x0 "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T12] ( 3, 3.00) ref -> x0 "CSE - aggressive" -; V21 cse1 [V21,T06] ( 3,296.94) ref -> x0 "CSE - aggressive" -; V22 cse2 [V22,T07] ( 3,296.81) int -> x2 "CSE - aggressive" -; V23 cse3 [V23,T09] ( 6,249.84) long -> x23 multi-def "CSE - aggressive" -; V24 cse4 [V24,T13] ( 3, 3.00) int -> x2 "CSE - aggressive"
+; V19 cse0 [V19,T13] ( 3, 3.00) ref -> x0 "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3,296.94) ref -> x0 "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3,296.81) int -> x2 "CSE - aggressive" +; V22 cse3 [V22,T14] ( 3, 3.00) int -> x2 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,742.04) ref -> x23 "replacement local" +; V24 rat1 [V24,T12] ( 5, 7.50) ref -> x23 "replacement local"
; ; Lcl frame size = 8
-G_M28111_IG01: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28111_IG01: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -52,105 +52,112 @@ G_M28111_IG02: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr w22, [fp, #0x74] // [V05 loc0] cmp w21, w22 bge G_M28111_IG19
- cbz x20, G_M28111_IG09
+ cbz x20, G_M28111_IG10
orr w2, w21, w22
- tbnz w2, #31, G_M28111_IG09
+ tbnz w2, #31, G_M28111_IG10
ldr w2, [x20, #0x08] cmp w2, w22
- blt G_M28111_IG09
+ blt G_M28111_IG10
;; size=40 bbWeight=0.00 PerfScore 0.00 G_M28111_IG03: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0]
- cbz x0, G_M28111_IG08
+ cbz x0, G_M28111_IG07
;; size=12 bbWeight=99.00 PerfScore 445.50 G_M28111_IG04: ; bbWeight=98.94, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23 - bne G_M28111_IG17
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + bne G_M28111_IG24
cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG08
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG08
;; size=40 bbWeight=98.94 PerfScore 890.44
-G_M28111_IG05: ; bbWeight=49.47, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG08 - ;; size=12 bbWeight=49.47 PerfScore 222.61 -G_M28111_IG06: ; bbWeight=98.94, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG05: ; bbWeight=98.94, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG07
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1
- bne G_M28111_IG08
+ bne G_M28111_IG07
add x0, x0, #12 ; gcrRegs -[x0] ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=98.94 PerfScore 1533.54 -G_M28111_IG07: ; bbWeight=98.94, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=98.94 PerfScore 1632.48 +G_M28111_IG06: ; bbWeight=98.94, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=98.94 PerfScore 98.94
-G_M28111_IG08: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=99.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19 b G_M28111_IG03 ;; size=16 bbWeight=99.00 PerfScore 297.00
-G_M28111_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=49.47, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23] + ldr x2, [x23] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1 + beq G_M28111_IG05 + ;; size=24 bbWeight=49.47 PerfScore 296.81 +G_M28111_IG09: ; bbWeight=24.73, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x23, xzr + ; gcrRegs +[x23] + b G_M28111_IG05 + ;; size=8 bbWeight=24.73 PerfScore 37.10 +G_M28111_IG10: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x23]
ldr wzr, [x20, #0x08] ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M28111_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x20, #0x08] cmp w21, w2
- bhs G_M28111_IG16
+ bhs G_M28111_IG23
add x2, x20, #16 ; byrRegs +[x2] ldr x0, [x2, w21, UXTW #3] ; gcrRegs +[x0] cbz x0, G_M28111_IG15 ;; size=24 bbWeight=1.00 PerfScore 9.00
-G_M28111_IG11: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG12: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2] ldr x2, [x0]
- movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - cmp x2, x23
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + cmp x2, x1
bne G_M28111_IG18 cmp x0, x19 beq G_M28111_IG21
- mov x3, x19 - ; gcrRegs +[x3] - cbz x3, G_M28111_IG15
+ mov x23, x19 + ; gcrRegs +[x23] + cbnz x23, G_M28111_IG16
;; size=40 bbWeight=1.00 PerfScore 8.99
-G_M28111_IG12: ; bbWeight=0.50, gcrefRegs=180009 {x0 x3 x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [x3] - cmp x2, x23 - bne G_M28111_IG15 - ;; size=12 bbWeight=0.50 PerfScore 2.25 -G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x3]
+G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M28111_IG15
ldr w2, [x0, #0x08]
- ldr w1, [x19, #0x08]
+ ldr w1, [x23, #0x08]
cmp w2, w1 bne G_M28111_IG15 add x0, x0, #12 @@ -158,16 +165,17 @@ G_M28111_IG13: ; bbWeight=1.00, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ; byrRegs +[x0] lsl w2, w2, #1 mov w2, w2
- add x1, x19, #12
+ add x1, x23, #12
; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
+ ; gcrRegs -[x23]
; byrRegs -[x0-x1] ; gcr arg pop 0
- ;; size=52 bbWeight=1.00 PerfScore 15.49
+ ;; size=56 bbWeight=1.00 PerfScore 16.49
G_M28111_IG14: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbnz w0, G_M28111_IG21 ;; size=4 bbWeight=1.00 PerfScore 1.00 @@ -175,27 +183,25 @@ G_M28111_IG15: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 add w21, w21, #1 cmp w21, w22 bge G_M28111_IG19
- b G_M28111_IG10
+ b G_M28111_IG11
;; size=16 bbWeight=1.00 PerfScore 3.00
-G_M28111_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M28111_IG17: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19-x20] - mov x1, x19 - ; gcrRegs +[x1] - ldr x2, [x0] - ldr x2, [x2, #0x48] - ldr x2, [x2, #0x10]
...

+20 (+19.23%) : 88866.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (Tier1)

@@ -10,77 +10,83 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V01 loc0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 4, 3 ) ref -> x1 "CSE - aggressive" -; V04 rat0 [V04,T00] ( 5, 7 ) ref -> x0 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 cse0 [V03,T02] ( 4, 3.50) ref -> x1 "CSE - aggressive" +; V04 rat0 [V04,T00] ( 5, 8 ) ref -> x19 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M2237_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M2237_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0] ldr x1, [x0, #0x08] ; gcrRegs +[x1]
- cbz x1, G_M2237_IG09 - mov x0, x1 - cbz x0, G_M2237_IG05
+ cbz x1, G_M2237_IG08 + mov x19, x1 + ; gcrRegs +[x19] + cbz x19, G_M2237_IG04
;; size=16 bbWeight=1 PerfScore 5.50
-G_M2237_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3 - beq G_M2237_IG05 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M2237_IG04: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M2237_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ ldr x0, [x19] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x0, x2 + beq G_M2237_IG04
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M2237_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbz x0, G_M2237_IG07 - ldr w0, [x0, #0x10]
+ ; gcrRegs -[x1 x19] +[x0] + mov x19, x0 + ; gcrRegs +[x19] + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M2237_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ cbz x19, G_M2237_IG06 + ldr w0, [x19, #0x10]
;; size=8 bbWeight=1 PerfScore 4.00
-G_M2237_IG06: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M2237_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M2237_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M2237_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x19]
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M2237_IG08: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M2237_IG07: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M2237_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M2237_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M2237_IG10: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M2237_IG09: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 104, prolog size 8, PerfScore 16.00, instruction count 26, allocated bytes for code 104 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (Tier1)
+; Total bytes of code 124, prolog size 12, PerfScore 20.50, instruction count 31, allocated bytes for code 124 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3 E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -94,7 +100,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

benchmarks.run_tiered.windows.arm64.checked.mch

-28 (-28.00%) : 8320.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 24535.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-21.88%) : 18850.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)

@@ -8,14 +8,13 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Reflection.MemberInfo> -; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MemberInfo> +; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> x20 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T06] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V06 cse0 [V06,T05] ( 3, 3 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -25,51 +24,40 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x28] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - mov x20, x1 - ; gcrRegs +[x20] - mov w21, w2 - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M29548_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x1 + ; gcrRegs +[x19] + mov w20, w2 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M29548_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x21, [x0, #0x38] + ldr x0, [x21]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- uxtb w2, w21 - mov x0, x20
+ uxtb w2, w20 + mov x0, x19
movz x3, #0xD1FFAB1E // code for System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M29548_IG05 - ;; size=52 bbWeight=1 PerfScore 15.50 -G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M29548_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x21]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M29548_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=56 bbWeight=1 PerfScore 18.50 +G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 20, PerfScore 29.31, instruction count 32, allocated bytes for code 128 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 100, prolog size 20, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -80,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 40672.dasm - ProtoBuf.Helpers:GetTypeCode(System.Type):int (Tier1)

@@ -9,27 +9,22 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 10, 6.50) ref -> x19 class-hnd single-def <System.Type>
-; V01 loc0 [V01,T02] ( 4, 3.50) int -> x0
+;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 2 ) int -> x20 "Inline return value spill temp" -;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType> -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1" -;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> -;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V16 tmp14 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V17 tmp15 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V18 tmp16 [V18,T01] ( 4, 4 ) int -> x0 "Single return block return value" -;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V20 tmp18 [V20 ] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V03 tmp1 [V03,T02] ( 5, 3.50) int -> x20 "Inline return value spill temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> +;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.RuntimeType> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> +;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType> +;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V13 tmp11 [V13,T01] ( 4, 4 ) int -> x20 "Single return block return value" +;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref "index expr"
; ; Lcl frame size = 0 @@ -58,14 +53,13 @@ G_M63268_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w20, w0 ;; size=24 bbWeight=0.50 PerfScore 5.50 G_M63268_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- sxtw w0, w20 - cmp w0, #18
+ cmp w20, #18
bhi G_M63268_IG07
- movz w1, #0xD1FFAB1E - movk w1, #5 LSL #16 - lsr w1, w1, w0 - tbz w1, #0, G_M63268_IG07 - ;; size=28 bbWeight=1 PerfScore 4.50
+ movz w0, #0xD1FFAB1E + movk w0, #5 LSL #16 + lsr w0, w0, w20 + tbz w0, #0, G_M63268_IG07 + ;; size=24 bbWeight=1 PerfScore 4.00
G_M63268_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] b G_M63268_IG15 @@ -116,7 +110,7 @@ G_M63268_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 movk x0, #0xD1FFAB1E LSL #32 cmp x19, x0 bne G_M63268_IG14
- mov w0, #101
+ mov w20, #101
b G_M63268_IG15 ;; size=28 bbWeight=0.50 PerfScore 2.25 G_M63268_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref @@ -126,16 +120,19 @@ G_M63268_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov w1, #1 mov w2, #104 cmp x19, x0
- csel w0, w1, w2, ne
+ csel w20, w1, w2, ne
;; size=28 bbWeight=0.50 PerfScore 1.75
-G_M63268_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M63268_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ mov w0, w20 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M63268_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 260, prolog size 12, PerfScore 30.50, instruction count 65, allocated bytes for code 260 (MethodHash=1b9308db) for method ProtoBuf.Helpers:GetTypeCode(System.Type):int (Tier1)
+; Total bytes of code 260, prolog size 12, PerfScore 30.25, instruction count 65, allocated bytes for code 260 (MethodHash=1b9308db) for method ProtoBuf.Helpers:GetTypeCode(System.Type):int (Tier1)
; ============================================================ Unwind Info:

+4 (+0.40%) : 14283.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)

@@ -12,53 +12,47 @@ ; V01 arg1 [V01,T07] ( 11, 7.50) ref -> x19 class-hnd single-def <System.Object> ; V02 loc0 [V02,T02] ( 19, 19 ) long -> [fp+0x18] do-not-enreg[Z] EH-live ; V03 loc1 [V03,T15] ( 5, 4 ) long -> x20
-; V04 loc2 [V04,T24] ( 2, 2 ) long -> x0 -; V05 loc3 [V05,T28] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 2, 2 ) long -> x0 +; V05 loc3 [V05,T26] ( 3, 1.50) ref -> x19 class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T03] ( 5, 16.50) int -> x2
-; V07 loc5 [V07,T25] ( 2, 2 ) long -> x0
+; V07 loc5 [V07,T23] ( 2, 2 ) long -> x0
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T16] ( 2, 4 ) byref -> x21 single-def "impAppendStmt" ; V10 tmp2 [V10,T13] ( 3, 6 ) byref -> x0 single-def "dup spill"
-; V11 tmp3 [V11,T22] ( 2, 2 ) byref -> x22 single-def "impAppendStmt" -; V12 tmp4 [V12,T19] ( 3, 3 ) byref -> x21 single-def "dup spill" -;* V13 tmp5 [V13,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -; V14 tmp6 [V14,T23] ( 2, 2 ) ref -> x19 class-hnd "spilling QMark2" <<unknown class>> -; V15 tmp7 [V15,T04] ( 2, 16 ) byref -> x24 "impAppendStmt" -; V16 tmp8 [V16,T01] ( 3, 24 ) byref -> x0 "dup spill" -;* V17 tmp9 [V17,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V18 tmp10 [V18,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V20 tmp12 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V21 tmp13 [V21,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp" -;* V22 tmp14 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V23 tmp15 [V23,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> -;* V24 tmp16 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V25 tmp17 [V25 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V26 tmp18 [V26,T34] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> -;* V27 tmp19 [V27,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V28 tmp20 [V28,T09] ( 2, 8 ) byref -> x0 "Inlining Arg" -; V29 tmp21 [V29,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp" -;* V30 tmp22 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> -;* V31 tmp23 [V31 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" -; V32 tmp24 [V32,T35] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V33 tmp25 [V33,T21] ( 4, 2 ) long -> x0 "Inline stloc first use temp" -;* V34 tmp26 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> -; V36 tmp28 [V36,T26] ( 2, 2 ) long -> x0 "field V19._handle (fldOffset=0x0)" P-INDEP -; V37 tmp29 [V37,T10] ( 2, 8 ) long -> x0 "field V24._handle (fldOffset=0x0)" P-INDEP -; V38 tmp30 [V38,T29] ( 2, 1 ) long -> x0 "field V30._handle (fldOffset=0x0)" P-INDEP -; V39 tmp31 [V39,T36] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V40 tmp32 [V40,T37] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V41 tmp33 [V41,T38] ( 2, 0 ) ref -> x20 "argument with side effect" -; V42 tmp34 [V42,T39] ( 2, 0 ) ref -> x2 "argument with side effect" -; V43 PSPSym [V43,T33] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -;* V44 cse0 [V44 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative" -; V45 cse1 [V45,T20] ( 3, 2.50) ref -> x0 "CSE - moderate" -; V46 cse2 [V46,T12] ( 5, 6 ) int -> x22 multi-def "CSE - aggressive" -; V47 cse3 [V47,T11] ( 4, 6.50) long -> x21 "CSE - aggressive" -; V48 cse4 [V48,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate" -; V49 cse5 [V49,T06] ( 3, 12 ) int -> x23 "CSE - aggressive" -; V50 cse6 [V50,T18] ( 4, 2 ) long -> registers multi-def "CSE - moderate"
+; V11 tmp3 [V11,T21] ( 2, 2 ) byref -> x22 single-def "impAppendStmt" +; V12 tmp4 [V12,T18] ( 3, 3 ) byref -> x21 single-def "dup spill" +; V13 tmp5 [V13,T04] ( 2, 16 ) byref -> x24 "impAppendStmt" +; V14 tmp6 [V14,T01] ( 3, 24 ) byref -> x0 "dup spill" +;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V17 tmp9 [V17,T17] ( 4, 3.50) long -> x0 "Inline stloc first use temp" +;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +; V19 tmp11 [V19,T00] ( 5, 32 ) ref -> x25 class-hnd "Inlining Arg" <System.Object> +;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V22 tmp14 [V22,T29] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> +;* V23 tmp15 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 tmp16 [V24,T09] ( 2, 8 ) byref -> x0 "Inlining Arg" +; V25 tmp17 [V25,T05] ( 4, 14 ) long -> x0 "Inline stloc first use temp" +;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.GCHandle> +;* V27 tmp19 [V27 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" +; V28 tmp20 [V28,T30] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V29 tmp21 [V29,T20] ( 4, 2 ) long -> x0 "Inline stloc first use temp" +;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> +; V32 tmp24 [V32,T24] ( 2, 2 ) long -> x0 "field V15._handle (fldOffset=0x0)" P-INDEP +; V33 tmp25 [V33,T10] ( 2, 8 ) long -> x0 "field V20._handle (fldOffset=0x0)" P-INDEP +; V34 tmp26 [V34,T27] ( 2, 1 ) long -> x0 "field V26._handle (fldOffset=0x0)" P-INDEP +; V35 tmp27 [V35,T31] ( 2, 0 ) ref -> x20 single-def "argument with side effect" +; V36 tmp28 [V36,T32] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V37 tmp29 [V37,T33] ( 2, 0 ) ref -> x20 "argument with side effect" +; V38 tmp30 [V38,T34] ( 2, 0 ) ref -> x2 "argument with side effect" +; V39 PSPSym [V39,T28] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V40 cse0 [V40,T12] ( 5, 6 ) int -> registers multi-def "CSE - aggressive" +; V41 cse1 [V41,T19] ( 3, 2.50) ref -> x0 "CSE - moderate" +; V42 cse2 [V42,T11] ( 4, 6.50) long -> x21 "CSE - aggressive" +; V43 cse3 [V43,T14] ( 2, 4.50) byref -> x19 hoist "CSE - moderate" +; V44 cse4 [V44,T06] ( 3, 12 ) int -> x23 "CSE - aggressive"
; ; Lcl frame size = 24 @@ -70,7 +64,7 @@ G_M14417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x25, [sp, #0x58] mov fp, sp add x2, sp, #96
- str x2, [fp, #0x20] // [V43 PSPSym]
+ str x2, [fp, #0x20] // [V39 PSPSym]
str x0, [fp, #0x10] // [V00 this] ; GC ptr vars +{V00} mov x19, x1 @@ -85,13 +79,13 @@ G_M14417_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ;; size=8 bbWeight=1 PerfScore 1.50 G_M14417_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x1, [x19]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - cmp x1, x21
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2
bne G_M14417_IG05
- ldr w22, [x19, #0x08] - mov w1, w22
+ ldr w21, [x19, #0x08] + mov w1, w21
add x20, x1, #1 b G_M14417_IG06 ;; size=40 bbWeight=0.50 PerfScore 5.50 @@ -167,13 +161,14 @@ G_M14417_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, cmp x0, x1 bne G_M14417_IG22 mov w2, wzr
- ldr w22, [x19, #0x08]
+ ldr w0, [x19, #0x08] + sxtw w22, w0
cmp w22, #0 ble G_M14417_IG15 add x19, x19, #16 ; gcrRegs -[x19] ; byrRegs +[x19]
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M14417_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr x0, [fp, #0x18] // [V02 loc0] add w23, w2, #1 @@ -448,7 +443,7 @@ G_M14417_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 992, prolog size 40, PerfScore 236.00, instruction count 248, allocated bytes for code 992 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
+; Total bytes of code 996, prolog size 40, PerfScore 236.25, instruction count 249, allocated bytes for code 996 (MethodHash=533fc7ae) for method System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)
; ============================================================ Unwind Info: @@ -459,7 +454,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.32%) : 29824.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> x19
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> x19
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> x1 "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 5 ) long -> x2 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> x15 class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> x20 "CSE - aggressive" -; V07 cse1 [V07,T06] ( 2, 5 ) ref -> x22 hoist "CSE - aggressive" -; V08 cse2 [V08,T04] ( 3, 6 ) long -> x21 "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> x20 "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> x22 "CSE - aggressive" +; V05 cse2 [V05,T03] ( 3, 6 ) long -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -28,36 +25,22 @@ G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr w19, [fp, #0x54] ;; size=20 bbWeight=1 PerfScore 5.50 G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr w20, [x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr w20, [x1]
cmp w19, w20
- bge G_M36328_IG07
+ bge G_M36328_IG04
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 ldr x22, [x21] ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 10.50 -G_M36328_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22 ; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M36328_IG06 - ;; size=12 bbWeight=4 PerfScore 8.00 -G_M36328_IG04: ; bbWeight=1, gcrefRegs=408002 {x1 x15 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x2 - beq G_M36328_IG06 - ;; size=24 bbWeight=1 PerfScore 6.00 -G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -65,19 +48,31 @@ G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
+ ;; size=76 bbWeight=1 PerfScore 18.00 +G_M36328_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + mov x1, x22 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTARRAY + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + sub x14, x21, #56
mov x15, x0 ; gcrRegs +[x15]
- ;; size=28 bbWeight=0.50 PerfScore 3.25 -G_M36328_IG06: ; bbWeight=4, gcrefRegs=408000 {x15 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - sub x14, x21, #56
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
add w19, w19, #1 cmp w19, w20 blt G_M36328_IG03
- ;; size=20 bbWeight=4 PerfScore 14.00 -G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=60 bbWeight=4 PerfScore 46.00 +G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x22] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] @@ -86,7 +81,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=1 PerfScore 4.50
-; Total bytes of code 164, prolog size 20, PerfScore 51.75, instruction count 41, allocated bytes for code 164 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 74.00, instruction count 44, allocated bytes for code 176 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -97,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.windows.arm64.checked.mch

-24 (-42.86%) : 218370.dasm - CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)

@@ -7,10 +7,8 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
; ; Lcl frame size = 0 @@ -18,32 +16,20 @@ G_M3705_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50
-G_M3705_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M3705_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M3705_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M3705_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3 - beq G_M3705_IG05 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M3705_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M3705_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 2.50 +G_M3705_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 6.69, instruction count 14, allocated bytes for code 56 (MethodHash=192ff186) for method CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
+; Total bytes of code 32, prolog size 8, PerfScore 6.00, instruction count 8, allocated bytes for code 32 (MethodHash=192ff186) for method CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +40,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-40.00%) : 218217.dasm - Program:CastToArray(System.Object):int

@@ -6,44 +6,32 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V03 tmp2 [V03,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <int[]>
; ; Lcl frame size = 0 G_M17219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x10]! mov fp, sp
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M17219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0]
mov x1, x0 ; gcrRegs +[x1]
- ;; size=12 bbWeight=1 PerfScore 2.00 -G_M17219_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M17219_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M17219_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - movz x3, #0xD1FFAB1E - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - cmp x2, x3 - beq G_M17219_IG05 - ;; size=24 bbWeight=0.25 PerfScore 1.50 -G_M17219_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
- mov x0, x3
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M17219_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 3.00 +G_M17219_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 7.19, instruction count 15, allocated bytes for code 60 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
+; Total bytes of code 36, prolog size 8, PerfScore 6.50, instruction count 9, allocated bytes for code 36 (MethodHash=8beabcbc) for method Program:CastToArray(System.Object):int[] (Tier1)
; ============================================================ Unwind Info: @@ -54,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-40.00%) : 218388.dasm - CastExpansionTests:CastToGenericSystem.__Canon:System.Object:this (Tier1)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M64337_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M64337_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M64337_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M64337_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M64337_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M64337_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M64337_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M64337_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=c97f04ae) for method CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+8.33%) : 473554.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (Tier1)

@@ -10,20 +10,19 @@ ; Final local variable assignments ; ; V00 this [V00,T06] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8, 16.48) ref -> x19 class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T02] ( 8, 16.48) ref -> x19 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T07] ( 3, 2.04) ref -> x21 class-hnd single-def <System.__Canon[]> ; V03 loc1 [V03,T09] ( 4, 0.16) ref -> x21 class-hnd single-def <System.__Canon[]> ; V04 loc2 [V04,T08] ( 5, 0.20) int -> x22
-; V05 loc3 [V05,T02] ( 6, 13.52) ref -> x23 class-hnd <System.__Canon> -; V06 loc4 [V06,T00] ( 6, 22.44) int -> x24 -; V07 loc5 [V07,T04] ( 5, 13.44) ref -> x0 class-hnd <System.__Canon>
+; V05 loc3 [V05,T05] ( 5, 9.04) ref -> x23 class-hnd <System.__Canon> +; V06 loc4 [V06,T01] ( 6, 22.44) int -> x24 +; V07 loc5 [V07,T03] ( 5, 13.44) ref -> x0 class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 2, 0 ) int -> x0 "guarded devirt return temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo> -; V13 tmp5 [V13,T05] ( 2, 8.96) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V14 cse0 [V14,T03] ( 3, 13.44) long -> x2 hoist multi-def "CSE - aggressive"
+; V12 tmp4 [V12,T04] ( 3, 13.44) ref -> x14 class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V13 rat0 [V13,T00] ( 5, 33.60) ref -> x14 "replacement local"
; ; Lcl frame size = 0 @@ -63,58 +62,61 @@ G_M50755_IG04: ; bbWeight=0.96, epilog, nogc, extend G_M50755_IG05: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19-x21] mov w22, wzr
- ldr w1, [x21, #0x08] - cmp w1, #0 - ble G_M50755_IG12
+ ldr w14, [x21, #0x08] + cmp w14, #0 + ble G_M50755_IG13
;; size=16 bbWeight=0.04 PerfScore 0.20 G_M50755_IG06: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add x1, x21, #16 - ; byrRegs +[x1] - ldr x23, [x1, w22, UXTW #3]
+ add x14, x21, #16 + ; byrRegs +[x14] + ldr x23, [x14, w22, UXTW #3]
; gcrRegs +[x23]
- cbz x23, G_M50755_IG12
+ cbz x23, G_M50755_IG13
mov w24, wzr
- ldr w1, [x19, #0x08] - ; byrRegs -[x1] - cmp w1, #0 - ble G_M50755_IG11
+ ldr w14, [x19, #0x08] + ; byrRegs -[x14] + cmp w14, #0 + ble G_M50755_IG12
;; size=28 bbWeight=0.04 PerfScore 0.38 G_M50755_IG07: ; bbWeight=4.48, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- add x1, x19, #16 - ; byrRegs +[x1] - ldr x0, [x1, w24, UXTW #3]
+ add x14, x19, #16 + ; byrRegs +[x14] + ldr x0, [x14, w24, UXTW #3]
; gcrRegs +[x0]
- ldr x1, [x0] - ; byrRegs -[x1] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x1, x2 - bne G_M50755_IG14 - mov x1, x23 - ; gcrRegs +[x1] - ldr x1, [x1] - ; gcrRegs -[x1] - cmp x1, x2 - bne G_M50755_IG08 - ldr x1, [x23, #0x50] - ldr x0, [x0, #0x50] - ; gcrRegs -[x0] - cmp x1, x0
+ ldr x14, [x0] + ; byrRegs -[x14] + movz x15, #0xD1FFAB1E + movk x15, #0xD1FFAB1E LSL #16 + movk x15, #0xD1FFAB1E LSL #32 + cmp x14, x15 + bne G_M50755_IG17 + mov x14, x23 + ; gcrRegs +[x14] + cbz x14, G_M50755_IG10 + ;; size=40 bbWeight=4.48 PerfScore 49.28 +G_M50755_IG08: ; bbWeight=2.24, gcrefRegs=B84001 {x0 x14 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz + ldr x15, [x14] + movz x12, #0xD1FFAB1E + movk x12, #0xD1FFAB1E LSL #16 + movk x12, #0xD1FFAB1E LSL #32 + cmp x15, x12
beq G_M50755_IG10
- ;; size=64 bbWeight=4.48 PerfScore 98.56 -G_M50755_IG08: ; bbWeight=4.48, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz - add w24, w24, #1 - ldr w1, [x19, #0x08] - cmp w1, w24 - bgt G_M50755_IG07 - ;; size=16 bbWeight=4.48 PerfScore 22.40 -G_M50755_IG09: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x23] - b G_M50755_IG11 - ;; size=4 bbWeight=0.04 PerfScore 0.04 -G_M50755_IG10: ; bbWeight=4.48, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref - ; gcrRegs +[x23]
+ ;; size=24 bbWeight=2.24 PerfScore 13.44 +G_M50755_IG09: ; bbWeight=1.12, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref + ; gcrRegs -[x14] + mov x14, xzr + ; gcrRegs +[x14] + ;; size=4 bbWeight=1.12 PerfScore 0.56 +G_M50755_IG10: ; bbWeight=4.48, gcrefRegs=B84001 {x0 x14 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz + cbz x14, G_M50755_IG15 + ldr x14, [x14, #0x50] + ; gcrRegs -[x14] + ldr x15, [x0, #0x50] + cmp x14, x15 + bne G_M50755_IG15 + ;; size=20 bbWeight=4.48 PerfScore 38.08 +G_M50755_IG11: ; bbWeight=4.48, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0]
sxtw x1, w24 mov x0, x19 ; gcrRegs +[x0] @@ -124,13 +126,13 @@ G_M50755_IG10: ; bbWeight=4.48, gcrefRegs=B80000 {x19 x20 x21 x23}, byref ; gcrRegs -[x0 x2 x23] ; gcr arg pop 0 ;; size=16 bbWeight=4.48 PerfScore 11.20
-G_M50755_IG11: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG12: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1 ldr w14, [x21, #0x08] cmp w14, w22 bgt G_M50755_IG06 ;; size=16 bbWeight=0.04 PerfScore 0.20
-G_M50755_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50755_IG13: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] add x14, x20, #8 ; byrRegs +[x14] @@ -140,15 +142,26 @@ G_M50755_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs -[x15 x19-x20] ; byrRegs -[x14] ;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M50755_IG13: ; bbWeight=0.04, epilog, nogc, extend
+G_M50755_IG14: ; bbWeight=0.04, epilog, nogc, extend
ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=0.04 PerfScore 0.20
-G_M50755_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0 x19-x21 x23]
+G_M50755_IG15: ; bbWeight=4.48, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19-x21 x23] + add w24, w24, #1 + ldr w14, [x19, #0x08] + cmp w14, w24 + bgt G_M50755_IG07 + ;; size=16 bbWeight=4.48 PerfScore 22.40 +G_M50755_IG16: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + b G_M50755_IG12 + ;; size=4 bbWeight=0.04 PerfScore 0.04 +G_M50755_IG17: ; bbWeight=0, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0 x23]
mov x1, x23 ; gcrRegs +[x1] ldr x2, [x0] @@ -157,11 +170,11 @@ G_M50755_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=B80001 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M50755_IG10 - b G_M50755_IG08
+ cbnz w0, G_M50755_IG11 + b G_M50755_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 28, PerfScore 149.48, instruction count 72, allocated bytes for code 288 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 312, prolog size 28, PerfScore 152.28, instruction count 78, allocated bytes for code 312 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================ Unwind Info: @@ -172,7 +185,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+8.63%) : 187281.dasm - Testinstanceassignment_struct01:TestEntryPoint():int (FullOpts)

@@ -14,9 +14,9 @@ ;* V03 loc3 [V03 ] ( 0, 0 ) double -> zero-ref ld-addr-op ;* V04 loc4 [V04,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String> ;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.String>
-; V06 loc6 [V06,T02] ( 4, 4.00) ref -> x19 class-hnd exact single-def <System.Int32>
+; V06 loc6 [V06,T03] ( 5, 4.50) ref -> x19 class-hnd exact single-def <System.Int32>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.Object>
-; V08 loc8 [V08,T00] ( 13, 13.00) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
+; V08 loc8 [V08,T00] ( 13, 13 ) struct (16) [fp+0x10] do-not-enreg[SF] must-init ld-addr-op <System.Guid>
;* V09 loc9 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Guid> ;* V10 loc10 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[int]> ;* V11 loc11 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[double]> @@ -24,7 +24,7 @@ ;* V13 loc13 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Object]> ;* V14 loc14 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Gen`1[System.Guid]> ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T01] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V16 tmp1 [V16,T02] ( 3, 6.00) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V18 tmp3 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -53,24 +53,24 @@ ;* V42 tmp27 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V43 tmp28 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp29 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V45 tmp30 [V45,T08] ( 2, 2.00) ubyte -> x0 "Inline return value spill temp"
+; V45 tmp30 [V45,T10] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
;* V46 tmp31 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
-;* V47 tmp32 [V47,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Int32> -; V48 tmp33 [V48,T03] ( 2, 4.00) byref -> x0 single-def "Inlining Arg" -; V49 tmp34 [V49,T04] ( 2, 4.00) int -> x0 "impAppendStmt" -;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V51 tmp36 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V52 tmp37 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> -;* V54 tmp39 [V54 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> -;* V55 tmp40 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V51.[000..016)" -;* V57 tmp42 [V57 ] ( 0, 0 ) simd16 -> zero-ref "V54.[000..016)" -; V58 cse0 [V58,T06] ( 3, 3.00) int -> x19 "CSE - aggressive" -; V59 cse1 [V59,T07] ( 3, 3.00) long -> x19 "CSE - aggressive" -; V60 cse2 [V60,T05] ( 3, 3.00) byref -> x20 "CSE - aggressive" -; V61 rat0 [V61,T09] ( 2, 2.00) long -> x0 "Spilling to split statement for tree" -; V62 rat1 [V62,T17] ( 3, 6.00) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
+; V47 tmp32 [V47,T07] ( 2, 3.00) byref -> x0 single-def "Inlining Arg" +; V48 tmp33 [V48,T08] ( 2, 2.00) int -> x0 "impAppendStmt" +;* V49 tmp34 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V50 tmp35 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V51 tmp36 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V52 tmp37 [V52 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Guid> +;* V53 tmp38 [V53 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Guid> +;* V54 tmp39 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V55 tmp40 [V55 ] ( 0, 0 ) simd16 -> zero-ref "V50.[000..016)" +;* V56 tmp41 [V56 ] ( 0, 0 ) simd16 -> zero-ref "V53.[000..016)" +; V57 cse0 [V57,T05] ( 3, 3 ) int -> x19 "CSE - aggressive" +; V58 cse1 [V58,T06] ( 3, 3 ) long -> x19 "CSE - aggressive" +; V59 cse2 [V59,T04] ( 3, 3.00) byref -> x20 "CSE - aggressive" +; V60 rat0 [V60,T09] ( 2, 2 ) long -> x0 "Spilling to split statement for tree" +; V61 rat1 [V61,T01] ( 5, 7.50) ref -> x1 "replacement local" +; V62 rat2 [V62,T17] ( 3, 6 ) simd16 -> d16 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 16 @@ -131,11 +131,35 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[x20] mov x0, x20 ; byrRegs +[x0]
+ mov x1, x19 + ; gcrRegs +[x1] + cbz x1, G_M11907_IG05 + ;; size=188 bbWeight=1.00 PerfScore 43.00 +G_M11907_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M11907_IG05 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M11907_IG04: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.13 +G_M11907_IG05: ; bbWeight=1.00, gcrefRegs=80002 {x1 x19}, byrefRegs=100001 {x0 x20}, byref, isz + cbz x1, G_M11907_IG13 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M11907_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100001 {x0 x20}, byref + ; gcrRegs -[x1]
ldr w0, [x0] ; byrRegs -[x0] ldr w1, [x19, #0x08] cmp w0, w1 cset x0, eq
+ ;; size=16 bbWeight=0.50 PerfScore 3.50 +G_M11907_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
movz x1, #0xD1FFAB1E // code for Test_instance_assignment_struct01:Eval(ubyte) movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -196,13 +220,13 @@ G_M11907_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr w1, [x1]
- tbz w1, #0, G_M11907_IG08 - ;; size=424 bbWeight=1.00 PerfScore 105.00 -G_M11907_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w1, #0, G_M11907_IG14 + ;; size=228 bbWeight=1 PerfScore 56.50 +G_M11907_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x48]
- cbz w0, G_M11907_IG06 - ;; size=8 bbWeight=1.00 PerfScore 4.00 -G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbz w0, G_M11907_IG11 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M11907_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -213,12 +237,12 @@ G_M11907_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x1 mov w0, #100 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -229,18 +253,26 @@ G_M11907_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 mov w0, #1 ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M11907_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M11907_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M11907_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11907_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref + ; gcrRegs +[x19] + ; byrRegs +[x20] + mov w0, wzr + b G_M11907_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M11907_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20]
mov w1, #18 bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M11907_IG03
+ b G_M11907_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 556, prolog size 16, PerfScore 123.00, instruction count 139, allocated bytes for code 556 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
+; Total bytes of code 604, prolog size 16, PerfScore 125.12, instruction count 151, allocated bytes for code 604 (MethodHash=70b8d17c) for method Test_instance_assignment_struct01:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info: @@ -251,7 +283,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 139 (0x0008b) Actual length = 556 (0x00022c)
+ Function Length : 151 (0x00097) Actual length = 604 (0x00025c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+13.85%) : 475910.dasm - System.Type:get_IsSerializable():ubyte:this (Tier1)

@@ -5,112 +5,146 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 10, 5 ) ref -> x19 this class-hnd single-def <System.Type> -; V01 loc0 [V01,T00] ( 11, 38.58) ref -> x0 class-hnd <System.Type>
+; V00 this [V00,T00] ( 10, 5 ) ref -> x19 this class-hnd single-def <System.Type> +; V01 loc0 [V01,T01] ( 10, 7 ) ref -> x0 class-hnd <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V04 tmp2 [V04,T04] ( 3, 2 ) int -> x0 "guarded devirt return temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> -; V06 tmp4 [V06,T06] ( 3, 1 ) ref -> x0 "guarded devirt return temp" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> -; V08 tmp6 [V08,T03] ( 3, 2 ) ref -> x0 "guarded devirt return temp" -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> -; V10 cse0 [V10,T02] ( 5, 3.75) long -> x20 "CSE - aggressive"
+; V03 tmp1 [V03,T05] ( 3, 2 ) int -> x0 "guarded devirt return temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> +; V05 tmp3 [V05,T07] ( 3, 1 ) ref -> x0 "guarded devirt return temp" +;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> +; V07 tmp5 [V07,T04] ( 3, 2 ) ref -> x0 "guarded devirt return temp" +;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> +; V09 cse0 [V09,T03] ( 4, 3.50) long -> x20 "CSE - aggressive" +; V10 cse1 [V10,T06] ( 2, 1.25) ref -> x21 hoist "CSE - moderate" +; V11 rat0 [V11,T02] ( 5, 3.75) ref -> x1 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M39137_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M39137_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M39137_IG15
+ bne G_M39137_IG18
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0] ;; size=32 bbWeight=1 PerfScore 7.50 G_M39137_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- tbz w0, #13, G_M39137_IG11
+ tbz w0, #13, G_M39137_IG15
;; size=4 bbWeight=1 PerfScore 1.00 G_M39137_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] mov w0, #1 ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M39137_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M39137_IG06: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M39137_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0]
+ mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M39137_IG09 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M39137_IG07: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M39137_IG09 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M39137_IG08: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M39137_IG13 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M39137_IG10: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + movz x21, #0xD1FFAB1E + movk x21, #0xD1FFAB1E LSL #16 + movk x21, #0xD1FFAB1E LSL #32 + ;; size=12 bbWeight=0.25 PerfScore 0.38 +G_M39137_IG11: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x21]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - cmp x0, x1 - ccmp x0, x2, z, ne
+ cmp x0, x21 + ccmp x0, x1, z, ne
beq G_M39137_IG04
- ;; size=36 bbWeight=16.67 PerfScore 83.33 -G_M39137_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] cmp x1, x20
- bne G_M39137_IG16
+ bne G_M39137_IG17
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M39137_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - cbnz x0, G_M39137_IG06
+ ;; size=56 bbWeight=1 PerfScore 13.50 +G_M39137_IG12: ; bbWeight=1, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz + cbnz x0, G_M39137_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M39137_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M39137_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21]
mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M39137_IG10: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20
+G_M39137_IG14: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M39137_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M39137_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] ldr x0, [x19] cmp x0, x20
- bne G_M39137_IG17
+ bne G_M39137_IG16
mov x0, x19 ; gcrRegs +[x0]
- ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M39137_IG12: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19] - cbz x0, G_M39137_IG09 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M39137_IG13: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0] - cmp x1, x20 - beq G_M39137_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M39137_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M39137_IG06 + ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M39137_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- b G_M39137_IG09 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M39137_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19]
+ mov x0, x19 + ; gcrRegs +[x0] + ldr x1, [x19] + ldr x1, [x1, #0x60] + ldr x1, [x1] + blr x1 + ; gcrRegs -[x19] + b G_M39137_IG06 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39137_IG17: ; bbWeight=0, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x21] + ldr x1, [x0] + ldr x1, [x1, #0xA0] + ldr x1, [x1, #0x20] + blr x1 + b G_M39137_IG12 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M39137_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x21] +[x19]
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x19] @@ -120,27 +154,8 @@ G_M39137_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x0] b G_M39137_IG03 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39137_IG16: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x0] - ldr x1, [x0] - ldr x1, [x1, #0xA0] - ldr x1, [x1, #0x20] - blr x1 - b G_M39137_IG08 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M39137_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x19] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x60] - ldr x1, [x1] - blr x1 - ; gcrRegs -[x19] - b G_M39137_IG12 - ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 12, PerfScore 113.58, instruction count 65, allocated bytes for code 260 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
+; Total bytes of code 296, prolog size 16, PerfScore 38.69, instruction count 74, allocated bytes for code 296 (MethodHash=114f671e) for method System.Type:get_IsSerializable():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -151,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -162,10 +177,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
...

libraries.crossgen2.windows.arm64.checked.mch

-40 (-35.71%) : 241629.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)

@@ -8,65 +8,41 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x20 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x21 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - mov x21, x20 - ; gcrRegs +[x21] - cbz x21, G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x22, [x21]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x22, x0 - beq G_M12636_IG05 - ;; size=32 bbWeight=0.25 PerfScore 3.12 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - mov x1, x20
+ ldr x1, [x19, #0x08]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x20] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ; gcrRegs -[x1] +[x0] + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 112, prolog size 20, PerfScore 17.88, instruction count 28, allocated bytes for code 112 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.00, instruction count 18, allocated bytes for code 72 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -85,9 +61,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end
E4 end E4 end E4 end

-36 (-34.62%) : 33857.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)

@@ -8,39 +8,26 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M16223_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M16223_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M16223_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -48,22 +35,14 @@ G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M16223_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -74,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -82,9 +61,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

-36 (-34.62%) : 177210.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -8,41 +8,28 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x19 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x20 class-hnd "spilling QMark2" <System.__Canon> -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp str x0, [fp, #0x10] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00 -G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x20, x19 - ; gcrRegs +[x20] - cbz x20, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x20]
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M8451_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- cmp x21, x0 - beq G_M8451_IG05 - ;; size=28 bbWeight=0.25 PerfScore 2.38 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
mov x1, x19 ; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address @@ -50,22 +37,14 @@ G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ; gcrRegs -[x1 x19] +[x0]
- mov x20, x0 - ; gcrRegs +[x20] - ;; size=24 bbWeight=0.12 PerfScore 0.75 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x20 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ;; size=36 bbWeight=1 PerfScore 10.50 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 104, prolog size 20, PerfScore 15.12, instruction count 26, allocated bytes for code 104 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 68, prolog size 16, PerfScore 18.50, instruction count 17, allocated bytes for code 68 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -76,7 +55,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -84,9 +63,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

+4 (+1.09%) : 136989.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 165941.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

+4 (+1.09%) : 240131.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

@@ -9,55 +9,46 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 12, 10.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 5, 3.25) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 this [V00,T00] ( 11, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]> +; V01 arg1 [V01,T02] ( 4, 3 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T01] ( 6, 9.50) ref -> x19 class-hnd "spilling QMark2" <System.__Canon> -;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> -; V07 tmp5 [V07 ] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> -; V08 tmp6 [V08,T03] ( 4, 4 ) int -> x20 single-def "Inline stloc first use temp" -; V09 tmp7 [V09 ] ( 2, 2 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP -; V10 tmp8 [V10 ] ( 3, 3 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V11 tmp9 [V11,T04] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V13 PSPSym [V13,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> +;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon> +; V05 tmp3 [V05 ] ( 3, 3 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]> +; V06 tmp4 [V06,T03] ( 4, 4 ) int -> x21 single-def "Inline stloc first use temp" +; V07 tmp5 [V07,T01] ( 3, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.__Canon> +; V08 tmp6 [V08 ] ( 2, 2 ) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V05._items (fldOffset=0x0)" P-DEP +; V09 tmp7 [V09 ] ( 3, 3 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V10 tmp8 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect" +; V11 tmp9 [V11,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> x2 single-def "argument with side effect" +; V13 PSPSym [V13,T07] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T06] ( 5, 3 ) long -> x19 multi-def "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M25375_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x48] + str x21, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x20] // [V07 tmp5], [V07 tmp5+0x08] - add x2, sp, #80 - stp x0, x2, [fp, #0x30] // [V13 PSPSym] - stp x1, x0, [fp, #0x10] // [V01 arg1], [V00 this]
+ stp xzr, xzr, [fp, #0x28] // [V05 tmp3], [V05 tmp3+0x08] + add x2, sp, #96 + stp x0, x2, [fp, #0x38] // [V13 PSPSym] + stp x1, x0, [fp, #0x18] // [V01 arg1], [V00 this]
; GC ptr vars +{V00 V01}
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0-x1] - mov x19, x1 - ; gcrRegs +[x19] - cbz x19, G_M25375_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M25375_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1] - ldr x20, [x19] - ldr x0, [x0]
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M25375_IG02: ; bbWeight=1, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x0] + ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0
- cmp x20, x0 - beq G_M25375_IG05 - ;; size=32 bbWeight=0.50 PerfScore 6.25 -G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x2, [HIGH RELOC #0xD1FFAB1E] // function address add x2, x2, [LOW RELOC #0xD1FFAB1E] @@ -65,38 +56,34 @@ G_M25375_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr blr x2 ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x19, x0 - ; gcrRegs +[x19] - ;; size=24 bbWeight=0.25 PerfScore 1.88 -G_M25375_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [fp, #0x18] // [V00 this] - ; gcrRegs +[x0]
+ mov x20, x0 + ; gcrRegs +[x20] + ldr x0, [fp, #0x20] // [V00 this]
ldr w11, [x0, #0x0C] add w11, w11, #1 str w11, [x0, #0x0C]
- ;; size=16 bbWeight=1 PerfScore 6.50 -G_M25375_IG06: ; bbWeight=1, nogc, extend - ldp x2, x3, [x0, #0x10] - stp x2, x3, [fp, #0x20]
+ ;; size=64 bbWeight=1 PerfScore 22.50 +G_M25375_IG03: ; bbWeight=1, nogc, extend + ldp x1, x2, [x0, #0x10] + stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M25375_IG07: ; bbWeight=1, isz, extend - ldr w20, [x0, #0x08] - ldr w11, [fp, #0x28] // [V10 tmp8] - cmp w20, w11 - bhs G_M25375_IG08 - add w11, w20, #1
+G_M25375_IG04: ; bbWeight=1, isz, extend + ldr w21, [x0, #0x08] + ldr w11, [fp, #0x30] // [V09 tmp7] + cmp w21, w11 + bhs G_M25375_IG05 + add w11, w21, #1
str w11, [x0, #0x08]
- ldr x0, [x0]
+ mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11] - blr x2
+ ldr x1, [x11] + blr x1
; gcr arg pop 0 mov x1, x0
- add x0, fp, #32 // [V07 tmp5] - mov w2, w20
+ add x0, fp, #40 // [V05 tmp3] + mov w2, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -105,51 +92,54 @@ G_M25375_IG07: ; bbWeight=1, isz, extend ; gcr arg pop 0 mov x14, x0 ; byrRegs +[x14]
- mov x15, x19
+ mov x15, x20
; gcrRegs +[x15] adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_CHECKED_ASSIGN_REF add x12, x12, [LOW RELOC #0xD1FFAB1E] ldr x12, [x12] blr x12
- ; gcrRegs -[x15 x19]
+ ; gcrRegs -[x15 x20]
; byrRegs -[x0 x14]
- b G_M25375_IG09 - ;; size=100 bbWeight=1 PerfScore 29.50 -G_M25375_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19] - mov x1, x19
+ b G_M25375_IG06 + ;; size=100 bbWeight=1 PerfScore 27.00 +G_M25375_IG05: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0 x20] + mov x1, x20
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 5.50
-G_M25375_IG09: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M25375_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0] ldr w11, [x0, #0x08] sub w0, w11, #1 ; gcrRegs -[x0] ;; size=12 bbWeight=1 PerfScore 5.50
-G_M25375_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x19, x20, [sp, #0x40] - ldp fp, lr, [sp], #0x50
+G_M25375_IG07: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x60
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00 -G_M25375_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M25375_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20] - add x3, fp, #80 - str x3, [sp, #0x18] - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28] + add x3, fp, #96 + str x3, [sp, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M25375_IG09: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x20] // [V00 this]
; gcrRegs +[x0]
- ldr x0, [x0]
+ ldr x19, [x0] + mov x0, x19
; gcrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -168,7 +158,7 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0]
- ldr x1, [fp, #0x10] // [V01 arg1]
+ ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -177,15 +167,16 @@ G_M25375_IG12: ; bbWeight=0, gcVars=0000000000000005 {V00 V01}, gcrefRegs blr x3 ; gcrRegs -[x1-x2] ; gcr arg pop 0
- adr x0, [G_M25375_IG09] - ;; size=80 bbWeight=0 PerfScore 0.00 -G_M25375_IG13: ; bbWeight=0, funclet epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+ adr x0, [G_M25375_IG06] + ;; size=84 bbWeight=0 PerfScore 0.00 +G_M25375_IG10: ; bbWeight=0, funclet epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 28, PerfScore 70.62, instruction count 92, allocated bytes for code 368 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
+; Total bytes of code 372, prolog size 32, PerfScore 77.50, instruction count 93, allocated bytes for code 372 (MethodHash=d43a9ce0) for method Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
; ============================================================ Unwind Info: ...

libraries.pmi.windows.arm64.checked.mch

-28 (-46.67%) : 29403.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M7606_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 216587.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-40 (-33.33%) : 248153.dasm - System.Collections.Immutable.ImmutableSortedDictionary2+Builder[System.__Canon,System.Nullable1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)

@@ -8,76 +8,48 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 4.25) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> -; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> [fp+0x18] class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.__Canon>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51997_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - str x19, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x20]
+ str x0, [fp, #0x10]
mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M51997_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M51997_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M51997_IG03: ; bbWeight=0.25, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x2] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x0, x3 - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - beq G_M51997_IG05 - ;; size=32 bbWeight=0.25 PerfScore 4.38 -G_M51997_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; GC ptr vars -{V04} - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- str x0, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - ;; size=12 bbWeight=0.12 PerfScore 0.31 -G_M51997_IG05: ; bbWeight=1, gcVars=0000000000000001 {V04}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ldp x0, x2, [x19, #0x08] - ; gcrRegs +[x0 x2] - ldr x1, [fp, #0x18] // [V04 tmp2]
+ mov x1, x0
; gcrRegs +[x1]
+ ldp x0, x2, [x19, #0x08] + ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):ubyte:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] ldr wzr, [x0]
- ;; size=28 bbWeight=1 PerfScore 13.50 -G_M51997_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x28] - ldp fp, lr, [sp], #0x30
+ ;; size=48 bbWeight=1 PerfScore 25.00 +G_M51997_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x3 ; gcr arg pop 0 ;; size=12 bbWeight=1 PerfScore 4.00
-G_M51997_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - ; GC ptr vars -{V04} - str x2, [fp, #0x18] // [V04 tmp2] - ; GC ptr vars +{V04} - b G_M51997_IG05 - ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 20, PerfScore 28.69, instruction count 30, allocated bytes for code 120 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 80, prolog size 20, PerfScore 33.00, instruction count 20, allocated bytes for code 80 (MethodHash=24b334e2) for method System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,8 +68,8 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end E4 end E4 end

+44 (+10.09%) : 287911.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> -; V03 arg3 [V03,T07] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T08] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T05] ( 4, 3.50) int -> x21 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T07] ( 3, 3 ) ref -> x22 class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Type> +; V03 arg3 [V03,T08] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T09] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T06] ( 4, 3.50) int -> x21 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 12, 21 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl>
-;* V09 tmp2 [V09,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 11 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T13] ( 3, 2.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T12] ( 4, 2.90) int -> x15 "Inline stloc first use temp" -; V22 cse0 [V22,T10] ( 3, 3 ) ref -> x25 "CSE - aggressive"
+;* V09 tmp2 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T15] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 11 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T14] ( 3, 2.45) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T13] ( 4, 2.90) int -> x15 "Inline stloc first use temp" +; V20 cse0 [V20,T12] ( 3, 3 ) ref -> x25 "CSE - aggressive" +; V21 rat0 [V21,T11] ( 3, 2.50) ref -> x1 "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> x14 "replacement local"
; ; Lcl frame size = 8 @@ -64,7 +64,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr ; gcrRegs -[x0] ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbnz x0, G_M54407_IG08
+ cbnz x0, G_M54407_IG11
;; size=32 bbWeight=1 PerfScore 10.00 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -74,27 +74,48 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, movk x25, #0xD1FFAB1E LSL #16 movk x25, #0xD1FFAB1E LSL #32 cmp x0, x25
- bne G_M54407_IG05 - b G_M54407_IG08 - ;; size=28 bbWeight=0.50 PerfScore 2.25 -G_M54407_IG04: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG11 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M54407_IG08 + ;; size=32 bbWeight=0.50 PerfScore 2.50 +G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=3D80003 {x0 x1 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M54407_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + b G_M54407_IG08 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
cmp x0, x25
- beq G_M54407_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+ beq G_M54407_IG10 + mov x14, x0 + ; gcrRegs +[x14] + cbz x14, G_M54407_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=3D84001 {x0 x14 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref + ldr x14, [x14] + ; gcrRegs -[x14] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=3D80001 {x0 x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M54407_IG04
+ cbnz x0, G_M54407_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x25]
- b G_M54407_IG08
+ b G_M54407_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - tbnz w21, #4, G_M54407_IG08
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz + tbnz w21, #4, G_M54407_IG11
add x14, x19, #64 ; byrRegs +[x14] mov x15, x20 @@ -103,7 +124,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -115,9 +136,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=1D80000 {x19 x20 x22 x23 x24}, byr movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 ldr w14, [x14]
- tbz w14, #0, G_M54407_IG14
+ tbz w14, #0, G_M54407_IG17
;; size=40 bbWeight=1 PerfScore 8.50
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x14, #0xD1FFAB1E LSL #16 @@ -178,9 +199,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, ; gcrRegs +[x14] ldr w12, [x14, #0x08] cmp w12, w15
- bls G_M54407_IG11
+ bls G_M54407_IG14
;; size=136 bbWeight=1 PerfScore 34.50
-G_M54407_IG10: ; bbWeight=0.45, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG13: ; bbWeight=0.45, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] add w12, w15, #1 str w12, [x0, #0x10] @@ -193,9 +214,9 @@ G_M54407_IG10: ; bbWeight=0.45, gcrefRegs=2004001 {x0 x14 x25}, byrefRegs bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- b G_M54407_IG12
+ b G_M54407_IG15
;; size=28 bbWeight=0.45 PerfScore 2.48
-G_M54407_IG11: ; bbWeight=0.05, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.05, gcrefRegs=2000001 {x0 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x0] mov x1, x25 ; gcrRegs +[x1] @@ -206,11 +227,11 @@ G_M54407_IG11: ; bbWeight=0.05, gcrefRegs=2000001 {x0 x25}, byrefRegs=000 blr x2 ; gcrRegs -[x0-x1] ;; size=24 bbWeight=0.05 PerfScore 0.30
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
mov x0, x25 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] ldp x21, x22, [sp, #0x28] @@ -218,17 +239,17 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x20 x22-x24] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #0xD1FFAB1E bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b G_M54407_IG09
+ b G_M54407_IG12
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 436, prolog size 24, PerfScore 123.02, instruction count 109, allocated bytes for code 436 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 480, prolog size 24, PerfScore 131.27, instruction count 120, allocated bytes for code 480 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info: @@ -239,7 +260,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+12.79%) : 287901.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> x0 "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> x20 "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> x0 "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> x20 "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> x1 "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -66,37 +66,58 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x0] ldr w0, [x0, #0x10] ; gcrRegs -[x0]
- cbnz w0, G_M47746_IG11
+ cbnz w0, G_M47746_IG14
ldr w0, [x19, #0x88]
- tbnz w0, #5, G_M47746_IG11
+ tbnz w0, #5, G_M47746_IG14
mov x0, x19 ; gcrRegs +[x0] movz x20, #0xD1FFAB1E movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M47746_IG09 - b G_M47746_IG10 - ;; size=48 bbWeight=0.50 PerfScore 7.75 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG13 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=52 bbWeight=0.50 PerfScore 8.00 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
+ ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M47746_IG12 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M47746_IG12 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M47746_IG11 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M47746_IG14 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M47746_IG12 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M47746_IG08
+ cbnz x0, G_M47746_IG10
;; size=20 bbWeight=4 PerfScore 44.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20] ldr w0, [x19, #0x88] and w1, w0, #0xD1FFAB1E cmp w1, #0xD1FFAB1E
- beq G_M47746_IG11 - tbnz w0, #5, G_M47746_IG12
+ beq G_M47746_IG14 + tbnz w0, #5, G_M47746_IG15
mov x0, x19 ; gcrRegs +[x0] mov w1, #6 @@ -106,7 +127,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x2, [x2] blr x2 ;; size=48 bbWeight=0.50 PerfScore 6.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] @@ -130,7 +151,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] b G_M47746_IG03 ;; size=68 bbWeight=0.50 PerfScore 9.25
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -162,7 +183,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 344, prolog size 12, PerfScore 83.50, instruction count 86, allocated bytes for code 344 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 388, prolog size 12, PerfScore 91.75, instruction count 97, allocated bytes for code 388 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info: @@ -173,7 +194,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 86 (0x00056) Actual length = 344 (0x000158)
+ Function Length : 97 (0x00061) Actual length = 388 (0x000184)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+22.45%) : 287936.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> x19 this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> x1 single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> x0 "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> x20 "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> x0 class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> x20 "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> x1 "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> x1 "replacement local"
; ; Lcl frame size = 0 @@ -42,49 +42,69 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x20, #0xD1FFAB1E LSL #16 movk x20, #0xD1FFAB1E LSL #32 cmp x0, x20
- bne G_M32453_IG05
+ beq G_M32453_IG12
;; size=28 bbWeight=1 PerfScore 6.50
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - b G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20] + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x1] + ; gcrRegs -[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + beq G_M32453_IG08 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + b G_M32453_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x0 x20]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x0, x20
- beq G_M32453_IG07 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ beq G_M32453_IG10 + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M32453_IG08 + ;; size=16 bbWeight=2 PerfScore 6.00 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=180003 {x0 x1 x19 x20}, byrefRegs=0000 {}, byref + ldr x1, [x1] + ; gcrRegs -[x1] + ;; size=4 bbWeight=1 PerfScore 3.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0] ldr x1, [x1, #0xA0] ldr x1, [x1, #0x20] blr x1
- cbnz x0, G_M32453_IG04
+ cbnz x0, G_M32453_IG06
;; size=20 bbWeight=4 PerfScore 44.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
- b G_M32453_IG09
+ b G_M32453_IG12
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x40] ; gcrRegs +[x0]
- cbz x0, G_M32453_IG11
+ cbz x0, G_M32453_IG14
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -116,7 +136,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 12, PerfScore 62.75, instruction count 49, allocated bytes for code 196 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 240, prolog size 12, PerfScore 71.00, instruction count 60, allocated bytes for code 240 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info: @@ -127,7 +147,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.windows.arm64.Release.mch

-28 (-46.67%) : 575455.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 63024 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -22,37 +20,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.50 PerfScore 5.25 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 12.12, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +43,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-30.77%) : 523599.dasm - Moq.Mock`1[System.Canon]:get_Object():System.Canon:this (Tier1)

@@ -8,13 +8,11 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 3.87) ref -> x19 this class-hnd single-def <Moq.Mock`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3.50) ref -> x0 this class-hnd single-def <Moq.Mock`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V05 tmp4 [V05,T02] ( 4, 1.62) ref -> x1 "guarded devirt return temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V02 tmp1 [V02,T02] ( 3, 1.50) ref -> x1 "guarded devirt return temp" +;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]> +; V04 cse0 [V04,T01] ( 4, 3.12) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,21 +20,17 @@ G_M6043_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp
- str x0, [fp, #0x10] - mov x19, x0 - ; gcrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M6043_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19]
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M6043_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x0] + ldr x19, [x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
+ cmp x19, x1
bne G_M6043_IG04 ;; size=24 bbWeight=1 PerfScore 6.00
-G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x19 - ; gcrRegs +[x0]
+G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for Moq.Mock`1[System.__Canon]:OnGetObject():System.Object:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -45,46 +39,30 @@ G_M6043_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x1, x0 ; gcrRegs +[x1] b G_M6043_IG05
- ;; size=32 bbWeight=0.39 PerfScore 2.89 -G_M6043_IG04: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0-x1] - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x58]
+ ;; size=28 bbWeight=0.39 PerfScore 2.69 +G_M6043_IG04: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + ldr x1, [x19, #0x58]
ldr x1, [x1] blr x1 mov x1, x0 ; gcrRegs +[x1]
- ;; size=24 bbWeight=0.12 PerfScore 1.27 -G_M6043_IG05: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.12 PerfScore 0.86 +G_M6043_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M6043_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6043_IG06: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M6043_IG08 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M6043_IG07: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M6043_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 10.00 +G_M6043_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 156, prolog size 16, PerfScore 23.97, instruction count 39, allocated bytes for code 156 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
+; Total bytes of code 108, prolog size 12, PerfScore 26.06, instruction count 27, allocated bytes for code 108 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -95,7 +73,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-28.57%) : 279406.dasm - Xunit.Assert:IsAssignableFromSystem.__Canon:System.__Canon (Tier1)

@@ -7,12 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def -; V01 arg0 [V01,T02] ( 5, 4.12) ref -> x20 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T00] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V05 tmp3 [V05,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x0 single-def "argument with side effect" +; V04 cse0 [V04,T03] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -21,16 +20,15 @@ G_M11734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x0, [fp, #0x18]
- mov x19, x0 - mov x20, x1 - ; gcrRegs +[x20] - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M11734_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x1 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M11734_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x0, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0]
- mov x1, x20
+ mov x1, x19
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for Xunit.Assert:IsAssignableFrom(System.Type,System.Object) movk x2, #0xD1FFAB1E LSL #16 @@ -38,32 +36,19 @@ G_M11734_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1]
- mov x0, x20 - ; gcrRegs +[x0] - cbz x0, G_M11734_IG05 - ;; size=44 bbWeight=1 PerfScore 14.50 -G_M11734_IG03: ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0] - ldr x2, [x19, #0x38] - ldr x2, [x2] - cmp x1, x2 - beq G_M11734_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M11734_IG04: ; bbWeight=0.12, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - mov x1, x20
+ ldr x0, [x20] + mov x1, x19
; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[x1 x20] +[x0] - ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M11734_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1 x19] +[x0] + ;; size=48 bbWeight=1 PerfScore 17.50 +G_M11734_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 112, prolog size 16, PerfScore 24.88, instruction count 28, allocated bytes for code 112 (MethodHash=5f65d229) for method Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 24.50, instruction count 20, allocated bytes for code 80 (MethodHash=5f65d229) for method Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info: @@ -74,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 49256.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.13) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
-; V01 arg1 [V01,T01] ( 7, 3.11) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
+; V01 arg1 [V01,T01] ( 6, 3.10) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CompilationOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 0.98) ubyte -> x0 "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V07 cse0 [V07,T03] ( 3, 0.06) long -> x3 "CSE - conservative"
+; V06 tmp4 [V06,T04] ( 2, 0.05) ref -> x1 single-def "argument with side effect" +; V07 rat0 [V07,T03] ( 5, 0.10) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M530_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -31,7 +31,7 @@ G_M530_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byr G_M530_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, #1
- b G_M530_IG10
+ b G_M530_IG11
;; size=8 bbWeight=0.42 PerfScore 0.63 G_M530_IG04: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -43,7 +43,7 @@ G_M530_IG05: ; bbWeight=0.08, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, G_M530_IG06: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1] mov w0, wzr
- b G_M530_IG10
+ b G_M530_IG11
;; size=8 bbWeight=0.06 PerfScore 0.08 G_M530_IG07: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1] @@ -52,40 +52,54 @@ G_M530_IG07: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M530_IG11
+ bne G_M530_IG14
;; size=24 bbWeight=0.02 PerfScore 0.13
-G_M530_IG08: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M530_IG08: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M530_IG12 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M530_IG09: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.01 PerfScore 0.11 -G_M530_IG09: ; bbWeight=0.01, epilog, nogc, extend
+ ;; size=16 bbWeight=0.01 PerfScore 0.06 +G_M530_IG10: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.03
-G_M530_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M530_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0-x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M530_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M530_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0-x1]
+ ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M530_IG09 + ;; size=24 bbWeight=0.01 PerfScore 0.04 +G_M530_IG13: ; bbWeight=0.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M530_IG09 + ;; size=8 bbWeight=0.00 PerfScore 0.00 +G_M530_IG14: ; bbWeight=0.01, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.01 PerfScore 0.08
-G_M530_IG12: ; bbWeight=0.01, epilog, nogc, extend
+G_M530_IG15: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 128, prolog size 8, PerfScore 5.23, instruction count 32, allocated bytes for code 128 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 5.23, instruction count 38, allocated bytes for code 152 (MethodHash=eabafded) for method Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+18.75%) : 83376.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -10,16 +10,16 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 3.25) ref -> x0 class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 3.21) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 6, 3.18) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions>
-; V05 tmp3 [V05,T02] ( 2, 0.14) ref -> x1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions> -; V06 cse0 [V06,T03] ( 3, 0.14) long -> x3 "CSE - conservative"
+; V05 tmp3 [V05,T03] ( 2, 0.14) ref -> x1 single-def "argument with side effect" +; V06 rat0 [V06,T02] ( 5, 0.26) ref -> x1 "replacement local"
; ; Lcl frame size = 0
-G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]! mov fp, sp ;; size=8 bbWeight=1 PerfScore 1.50 @@ -58,34 +58,48 @@ G_M12969_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000 movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M12969_IG12
+ bne G_M12969_IG15
;; size=24 bbWeight=0.05 PerfScore 0.31
-G_M12969_IG10: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref - ldr x2, [x1] - cmp x2, x3 - csel x1, x1, xzr, eq
+G_M12969_IG10: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M12969_IG13 + ;; size=4 bbWeight=0.04 PerfScore 0.04 +G_M12969_IG11: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=28 bbWeight=0.04 PerfScore 0.30 -G_M12969_IG11: ; bbWeight=0.04, epilog, nogc, extend
+ ;; size=16 bbWeight=0.04 PerfScore 0.16 +G_M12969_IG12: ; bbWeight=0.04, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.04 PerfScore 0.07
-G_M12969_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M12969_IG13: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x2, [x1] + movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + cmp x2, x3 + beq G_M12969_IG11 + ;; size=24 bbWeight=0.02 PerfScore 0.11 +G_M12969_IG14: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M12969_IG11 + ;; size=8 bbWeight=0.01 PerfScore 0.01 +G_M12969_IG15: ; bbWeight=0.02, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
ldr x2, [x0] ldr x2, [x2, #0x48] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0.02 PerfScore 0.14
-G_M12969_IG13: ; bbWeight=0.02, epilog, nogc, extend
+G_M12969_IG16: ; bbWeight=0.02, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 br x2 ; gcr arg pop 0 ;; size=8 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 128, prolog size 8, PerfScore 6.48, instruction count 32, allocated bytes for code 128 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 152, prolog size 8, PerfScore 6.49, instruction count 38, allocated bytes for code 152 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +110,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+38.71%) : 53766.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,93 +10,106 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> x0 class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> x1 class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> x1 class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 0.72) int -> x2 "guarded devirt return temp"
+; V03 tmp1 [V03,T04] ( 3, 0.47) int -> x19 "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> x1 class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> x3 "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> x1 "replacement local"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44244_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M44244_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x0-x1]
- cbz x0, G_M44244_IG10
+ cbz x0, G_M44244_IG13
ldr x2, [x0] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M44244_IG12 - cbz x1, G_M44244_IG07
+ bne G_M44244_IG09 + cbz x1, G_M44244_IG04
;; size=32 bbWeight=1 PerfScore 8.00 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz ldr x2, [x1]
+ movz x3, #0xD1FFAB1E + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32
cmp x2, x3 bne G_M44244_IG07
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M44244_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M44244_IG06
cmp x1, x0
- bne G_M44244_IG06 - ;; size=8 bbWeight=1 PerfScore 1.50
+ bne G_M44244_IG08 + ;; size=12 bbWeight=1 PerfScore 2.50
G_M44244_IG05: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0-x1]
- mov w2, #1 - b G_M44244_IG08
+ mov w19, #1 + b G_M44244_IG11
;; size=8 bbWeight=0.47 PerfScore 0.71
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs +[x0-x1] - ldp fp, lr, [sp], #0x10
+G_M44244_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w19, wzr + b G_M44244_IG11 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M44244_IG07: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs +[x0] + mov x1, xzr + ; gcrRegs +[x1] + b G_M44244_IG04 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M44244_IG08: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
b <unknown method> ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M44244_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x1] - mov w2, wzr - ;; size=4 bbWeight=0.25 PerfScore 0.12 -G_M44244_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb w0, w2 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0-x1]
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
ldr x2, [x0] ldr x2, [x2, #0xA8] ldr x2, [x2, #0x10] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1] + uxtb w0, w19 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M44244_IG14: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 8, PerfScore 16.09, instruction count 31, allocated bytes for code 124 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 172, prolog size 12, PerfScore 21.09, instruction count 43, allocated bytes for code 172 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 4 E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -113,7 +126,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-28 (-46.67%) : 36790.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -20,37 +18,19 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M24927_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M24927_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M24927_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +41,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-46.67%) : 146431.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> x0 single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x0 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,37 +19,19 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x2, x1 - ; gcrRegs +[x2] - cbz x2, G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x2]
ldr x0, [x0, #0x38] ldr x0, [x0]
- cmp x3, x0 - beq G_M8451_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x2, x0 - ; gcrRegs +[x2] - ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x2 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 7.00 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 9.31, instruction count 15, allocated bytes for code 60 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 32, prolog size 12, PerfScore 11.50, instruction count 8, allocated bytes for code 32 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +42,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-40.00%) : 30927.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:b7_2System.__Canon:System.Canon:this (FullOpts)

@@ -8,11 +8,9 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c>
-; V01 TypeCtx [V01,T01] ( 4, 3.25) long -> x1 single-def -; V02 arg1 [V02,T02] ( 4, 3.12) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> x1 "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 16 @@ -21,33 +19,21 @@ G_M29555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x1, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+G_M29555_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- mov x0, x2 - ; gcrRegs +[x0] - cbz x0, G_M29555_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M29555_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - ldr x3, [x0] - ldr x1, [x1, #0x38] - ldr x1, [x1] - cmp x3, x1 - beq G_M29555_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M29555_IG04: ; bbWeight=0.12, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x1
+ ldr x0, [x1, #0x38] + ldr x0, [x0]
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1-x2] +[x0]
- ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M29555_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=1 PerfScore 7.50 +G_M29555_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 8.88, instruction count 15, allocated bytes for code 60 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
+; Total bytes of code 36, prolog size 12, PerfScore 12.00, instruction count 9, allocated bytes for code 36 (MethodHash=462e8c8c) for method Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -58,7 +44,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+43.48%) : 94073.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M18245_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_windows #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+40 (+43.48%) : 95079.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)

@@ -8,26 +8,25 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> x0 "CSE - aggressive"
; ; Lcl frame size = 8
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! str x19, [sp, #0x18] mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=1 PerfScore 3.00 +G_M51850_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] ldrsb wzr, [x0] @@ -38,11 +37,9 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1]
- ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldrsb wzr, [x0]
+ ldr x19, [x19, #0x08] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:ValidateType(System.Object) @@ -50,26 +47,41 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x19] - brk_windows #0 - ;; size=76 bbWeight=0 PerfScore 0.00
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + ;; size=104 bbWeight=1 PerfScore 32.50 +G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x2 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 0.00, instruction count 23, allocated bytes for code 92 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 39.50, instruction count 33, allocated bytes for code 132 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 2
- Epilog Count : 0
+ Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
+ ---- Epilog start at index 1 ----
D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! E4 end

+48 (+92.31%) : 96681.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)

@@ -8,24 +8,24 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 2 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V06 cse0 [V06,T02] ( 2, 0 ) ref -> x0 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V04 cse0 [V04,T02] ( 2, 2 ) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x10]!
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 2.50 +G_M51219_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - ldrsb wzr, [x0]
+ ldr x19, [x0, #0x08] + ; gcrRegs +[x19] + ldrsb wzr, [x19]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -35,26 +35,46 @@ G_M51219_IG02: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- brk_windows #0 - ;; size=44 bbWeight=0 PerfScore 0.00
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + mov x0, x19 + ; gcrRegs +[x0] + mov w1, wzr + movz x3, #0xD1FFAB1E // code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + ;; size=76 bbWeight=1 PerfScore 20.00 +G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + br x3 + ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 52, prolog size 8, PerfScore 0.00, instruction count 13, allocated bytes for code 52 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 26.50, instruction count 25, allocated bytes for code 100 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1 - Epilog Count : 0
+ Code Words : 2 + Epilog Count : 1
E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
- No epilogs
+ ---- Scope 0 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ ---- Epilog start at index 1 ---- + D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

realworld.run.windows.arm64.checked.mch

-24 (-31.58%) : 32261.dasm - System.Management.Automation.PSTypeExtensions+<>c7`1[System.Canon]:b7_1(System.Object):System.Canon:this (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.25) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,34 +21,22 @@ G_M56342_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M56342_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x0, x1 - ; gcrRegs +[x0] - cbz x0, G_M56342_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M56342_IG03: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - ldr x3, [x3, #0x38] - ldr x3, [x3] - ldr x3, [x3] - cmp x2, x3 - beq G_M56342_IG05 - ;; size=28 bbWeight=0.25 PerfScore 4.12 -G_M56342_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x3
+ ldr x0, [x19] + ldr x0, [x0, #0x38] + ldr x0, [x0] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M56342_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 13.00 +G_M56342_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 13.81, instruction count 19, allocated bytes for code 76 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 52, prolog size 16, PerfScore 21.00, instruction count 13, allocated bytes for code 52 (MethodHash=169a23e9) for method System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -61,7 +47,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-28.00%) : 684.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -20,11 +19,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x0, [fp, #0x10]
- mov x19, x0 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ldr x19, [x0, #0x38] + ldr x0, [x19]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -34,28 +32,18 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M13946_IG05 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M13946_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x19]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=44 bbWeight=1 PerfScore 17.00 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 16, PerfScore 24.81, instruction count 25, allocated bytes for code 100 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 72, prolog size 16, PerfScore 24.50, instruction count 18, allocated bytes for code 72 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-25.93%) : 18049.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> x20 "CSE - aggressive"
; ; Lcl frame size = 16 @@ -22,47 +21,36 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x20] mov fp, sp str x1, [fp, #0x18]
- mov x20, x0 - ; gcrRegs +[x20] - mov x19, x1 - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0]
+ mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=1 PerfScore 4.00 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr x20, [x1, #0x38] + ldr x0, [x20]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20 - ldr x2, [x20]
+ mov x0, x19 + ldr x2, [x19]
ldr x2, [x2, #0x70] ldr x2, [x2, #0x10] blr x2
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1 x19]
mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M60617_IG05 - ;; size=44 bbWeight=1 PerfScore 19.50 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19, #0x38] - ldr x3, [x3] - cmp x2, x3 - beq G_M60617_IG05 - ;; size=20 bbWeight=0.25 PerfScore 2.62 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=48 bbWeight=1 PerfScore 22.50 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 108, prolog size 16, PerfScore 29.81, instruction count 27, allocated bytes for code 108 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 80, prolog size 16, PerfScore 29.50, instruction count 20, allocated bytes for code 80 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -73,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+0.80%) : 12258.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)

@@ -9,29 +9,29 @@ ; Final local variable assignments ; ; V00 this [V00,T31] ( 21, 25.50) ref -> x19 this class-hnd single-def <Microsoft.ML.Data.TextLoader+Bindings>
-; V01 arg1 [V01,T73] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> -; V02 arg2 [V02,T52] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> -; V03 arg3 [V03,T84] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V04 arg4 [V04,T91] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V05 loc0 [V05,T97] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
+; V01 arg1 [V01,T74] ( 8, 6.50) ref -> x21 class-hnd single-def <Microsoft.ML.Data.TextLoader> +; V02 arg2 [V02,T53] ( 6, 11.50) ref -> x20 class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]> +; V03 arg3 [V03,T85] ( 6, 4.50) ref -> x22 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V04 arg4 [V04,T93] ( 4, 3 ) ref -> x23 class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V05 loc0 [V05,T98] ( 16, 3.50) ref -> [fp+0x58] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
; V06 loc1 [V06,T36] ( 8, 20.50) ref -> x24 class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V07 loc2 [V07,T72] ( 5, 9 ) ubyte -> x25
+; V07 loc2 [V07,T73] ( 5, 9 ) ubyte -> x25
; V08 loc3 [V08,T42] ( 7, 18.50) int -> x26 ; V09 loc4 [V09 ] ( 8, 4.50) ref -> [fp+0xE0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> ; V10 loc5 [V10,T30] ( 10, 28 ) int -> x23
-; V11 loc6 [V11,T71] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
+; V11 loc6 [V11,T72] ( 3, 9.50) ref -> registers class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
; V12 loc7 [V12,T35] ( 10, 22.50) ref -> registers class-hnd <Microsoft.ML.Data.TextLoader+Segment[]> ; V13 loc8 [V13,T51] ( 5, 15 ) ref -> [fp+0x50] class-hnd exact spill-single-def <<unknown class>>
-;* V14 loc9 [V14,T119] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
+;* V14 loc9 [V14,T121] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
; V15 loc10 [V15,T45] ( 5, 17 ) int -> x26
-; V16 loc11 [V16,T70] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
+; V16 loc11 [V16,T71] ( 3, 10 ) ref -> x0 class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
; V17 loc12 [V17 ] ( 4, 2 ) int -> [fp+0xD8] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V18 loc13 [V18 ] ( 4, 2 ) int -> [fp+0xD0] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V19 loc14 [V19,T21] ( 12, 45 ) int -> [fp+0xCC] ; V20 loc15 [V20,T22] ( 10, 44 ) ref -> [fp+0x48] class-hnd exact spill-single-def <Microsoft.ML.Data.TextLoader+Column>
-; V21 loc16 [V21,T61] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> -; V22 loc17 [V22,T54] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> -; V23 loc18 [V23,T89] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
+; V21 loc16 [V21,T62] ( 4, 12 ) ref -> [fp+0x40] class-hnd exact spill-single-def <System.String> +; V22 loc17 [V22,T55] ( 4, 14 ) ref -> [fp+0x38] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> +; V23 loc18 [V23,T91] ( 3, 6 ) ubyte -> [fp+0xC8] spill-single-def
; V24 loc19 [V24,T23] ( 5, 34 ) ref -> x2 class-hnd exact <Microsoft.ML.Data.TextLoader+Segment[]> ; V25 loc20 [V25,T04] ( 8,108 ) int -> x0 ; V26 loc21 [V26,T00] ( 9,160 ) ref -> x4 class-hnd exact <<unknown class>> @@ -45,55 +45,55 @@ ;* V34 loc29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]> ; V35 loc30 [V35,T43] ( 6, 18.50) int -> [fp+0xBC] ; V36 loc31 [V36,T20] ( 8, 60 ) int -> [fp+0xB8]
-;* V37 loc32 [V37,T113] ( 0, 0 ) int -> zero-ref
+;* V37 loc32 [V37,T114] ( 0, 0 ) int -> zero-ref
;* V38 loc33 [V38 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> ;* V39 loc34 [V39 ] ( 0, 0 ) struct (16) zero-ref <Microsoft.ML.Data.TextLoader+Segment> ;# V40 OutArgs [V40 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V42 tmp2 [V42,T78] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> -; V43 tmp3 [V43,T79] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
+; V42 tmp2 [V42,T79] ( 2, 8 ) ref -> x2 class-hnd "dup spill" <<unknown class>> +; V43 tmp3 [V43,T80] ( 2, 8 ) ref -> x28 class-hnd exact "impSpillLclRefs" <<unknown class>>
;* V44 tmp4 [V44 ] ( 0, 0 ) ref -> zero-ref
-; V45 tmp5 [V45,T74] ( 4, 8 ) ref -> x2
+; V45 tmp5 [V45,T75] ( 4, 8 ) ref -> x2
; V46 tmp6 [V46,T38] ( 5, 20 ) ref -> x2 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V47 tmp7 [V47,T85] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V48 tmp8 [V48,T90] ( 3, 6 ) int -> x0 -; V49 tmp9 [V49,T62] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
+; V47 tmp7 [V47,T86] ( 3, 6 ) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V48 tmp8 [V48,T92] ( 3, 6 ) int -> x0 +; V49 tmp9 [V49,T63] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
;* V50 tmp10 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impImportAndPushBox" <<unknown class>> ;* V51 tmp11 [V51 ] ( 0, 0 ) ref -> zero-ref ;* V52 tmp12 [V52 ] ( 0, 0 ) ref -> zero-ref ; V53 tmp13 [V53,T47] ( 2, 16 ) int -> x6
-; V54 tmp14 [V54,T122] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> -; V55 tmp15 [V55,T123] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> -; V56 tmp16 [V56,T124] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
+; V54 tmp14 [V54,T124] ( 4, 0 ) ref -> x19 class-hnd exact "dup spill" <<unknown class>> +; V55 tmp15 [V55,T125] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32> +; V56 tmp16 [V56,T126] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <System.Int32>
;* V57 tmp17 [V57 ] ( 0, 0 ) ref -> zero-ref ;* V58 tmp18 [V58 ] ( 0, 0 ) ref -> zero-ref ; V59 tmp19 [V59,T48] ( 2, 16 ) int -> x7
-; V60 tmp20 [V60,T63] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> -; V61 tmp21 [V61,T80] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V60 tmp20 [V60,T64] ( 3, 12 ) ref -> [fp+0x20] class-hnd exact spill-single-def "non-inline candidate call" <<unknown class>> +; V61 tmp21 [V61,T81] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V62 tmp22 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V63 tmp23 [V63,T98] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V64 tmp24 [V64,T81] ( 2, 8 ) ref -> x3 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
+; V63 tmp23 [V63,T99] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V64 tmp24 [V64,T82] ( 2, 8 ) ref -> x3 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
;* V65 tmp25 [V65 ] ( 0, 0 ) ref -> zero-ref ;* V66 tmp26 [V66 ] ( 0, 0 ) ref -> zero-ref
-; V67 tmp27 [V67,T69] ( 5, 10 ) ref -> [fp+0x18]
+; V67 tmp27 [V67,T70] ( 5, 10 ) ref -> [fp+0x18]
; V68 tmp28 [V68,T39] ( 5, 20 ) ref -> x3 class-hnd exact "NewObj constructor temp" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
-; V69 tmp29 [V69,T99] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V70 tmp30 [V70,T82] ( 2, 8 ) ref -> x1 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
+; V69 tmp29 [V69,T100] ( 3, 3 ) ref -> x3 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V70 tmp30 [V70,T83] ( 2, 8 ) ref -> x1 class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
;* V71 tmp31 [V71 ] ( 0, 0 ) ref -> zero-ref
-; V72 tmp32 [V72,T75] ( 4, 8 ) ref -> x1
+; V72 tmp32 [V72,T76] ( 4, 8 ) ref -> x1
; V73 tmp33 [V73 ] ( 6, 24 ) struct (16) [fp+0xA8] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V74 tmp34 [V74 ] ( 6, 96 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V75 tmp35 [V75,T40] ( 5, 20 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
-; V76 tmp36 [V76,T100] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V76 tmp36 [V76,T101] ( 3, 3 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V77 tmp37 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V78 tmp38 [V78,T108] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> -; V79 tmp39 [V79,T92] ( 2, 4 ) int -> x1 "Inline return value spill temp"
+; V78 tmp38 [V78,T109] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> +; V79 tmp39 [V79,T94] ( 2, 4 ) int -> x1 "Inline return value spill temp"
; V80 tmp40 [V80,T41] ( 3, 20 ) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
-; V81 tmp41 [V81,T64] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -; V82 tmp42 [V82,T115] ( 2, 1 ) int -> x2 "Inline return value spill temp" -; V83 tmp43 [V83,T101] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V84 tmp44 [V84,T118] ( 2, 1 ) int -> x26 "Inline return value spill temp" -; V85 tmp45 [V85,T105] ( 3, 3 ) int -> x1 "Inlining Arg"
+; V81 tmp41 [V81,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +; V82 tmp42 [V82,T117] ( 2, 1 ) int -> x2 "Inline return value spill temp" +; V83 tmp43 [V83,T102] ( 3, 3 ) ref -> x2 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> +; V84 tmp44 [V84,T120] ( 2, 1 ) int -> x26 "Inline return value spill temp" +; V85 tmp45 [V85,T106] ( 3, 3 ) int -> x1 "Inlining Arg"
;* V86 tmp46 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V87 tmp47 [V87,T49] ( 2, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V88 tmp48 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -109,107 +109,107 @@ ;* V98 tmp58 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V99 tmp59 [V99,T28] ( 2, 32 ) ubyte -> x7 "Inlining Arg" ;* V100 tmp60 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V101 tmp61 [V101,T86] ( 3, 6 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> -;* V102 tmp62 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V103 tmp63 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.ML.Data.TextLoader+Segment[]> -; V104 tmp64 [V104,T93] ( 2, 4 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V105 tmp65 [V105,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> -; V106 tmp66 [V106,T87] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V107 tmp67 [V107,T76] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -; V108 tmp68 [V108 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -; V109 tmp69 [V109,T65] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> -;* V110 tmp70 [V110 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> -;* V111 tmp71 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V112 tmp72 [V112,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V113 tmp73 [V113,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" -;* V114 tmp74 [V114 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V115 tmp75 [V115,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V116 tmp76 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V117 tmp77 [V117,T88] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V118 tmp78 [V118,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" -;* V119 tmp79 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V120 tmp80 [V120 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V121 tmp81 [V121,T116] ( 2, 1 ) int -> x14 "Inline return value spill temp" -; V122 tmp82 [V122,T102] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V123 tmp83 [V123,T109] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -;* V124 tmp84 [V124 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V125 tmp85 [V125,T03] ( 6,112 ) int -> x5 "field V28.Min (fldOffset=0x0)" P-INDEP -; V126 tmp86 [V126,T05] ( 5,104 ) int -> x6 "field V28.Lim (fldOffset=0x4)" P-INDEP -; V127 tmp87 [V127,T12] ( 4, 64 ) ubyte -> x7 "field V28.ForceVector (fldOffset=0x8)" P-INDEP -; V128 tmp88 [V128,T107] ( 2, 2.50) int -> [fp+0x84] spill-single-def "field V32.Min (fldOffset=0x0)" P-INDEP -; V129 tmp89 [V129,T53] ( 4, 26.50) int -> [fp+0x80] spill-single-def "field V32.Lim (fldOffset=0x4)" P-INDEP -;* V130 tmp90 [V130 ] ( 0, 0 ) ubyte -> zero-ref "field V32.ForceVector (fldOffset=0x8)" P-INDEP -;* V131 tmp91 [V131 ] ( 0, 0 ) int -> zero-ref "field V39.Min (fldOffset=0x0)" P-INDEP -;* V132 tmp92 [V132 ] ( 0, 0 ) int -> zero-ref "field V39.Lim (fldOffset=0x4)" P-INDEP -;* V133 tmp93 [V133 ] ( 0, 0 ) ubyte -> zero-ref "field V39.ForceVector (fldOffset=0x8)" P-INDEP -;* V134 tmp94 [V134,T114] ( 0, 0 ) ubyte -> zero-ref "field V62.hasValue (fldOffset=0x0)" P-INDEP -; V135 tmp95 [V135,T94] ( 2, 4 ) ubyte -> x0 "field V62.value (fldOffset=0x1)" P-INDEP -; V136 tmp96 [V136,T55] ( 4, 14 ) int -> [fp+0xA8] do-not-enreg[] "field V73.Min (fldOffset=0x0)" P-DEP -; V137 tmp97 [V137,T56] ( 4, 14 ) int -> [fp+0xAC] do-not-enreg[] "field V73.Lim (fldOffset=0x4)" P-DEP -; V138 tmp98 [V138,T57] ( 4, 14 ) ubyte -> [fp+0xB0] do-not-enreg[] "field V73.ForceVector (fldOffset=0x8)" P-DEP -; V139 tmp99 [V139,T13] ( 4, 56 ) int -> [fp+0x98] do-not-enreg[] "field V74.Min (fldOffset=0x0)" P-DEP -; V140 tmp100 [V140,T14] ( 4, 56 ) int -> [fp+0x9C] do-not-enreg[] "field V74.Lim (fldOffset=0x4)" P-DEP -; V141 tmp101 [V141,T15] ( 4, 56 ) ubyte -> [fp+0xA0] do-not-enreg[] "field V74.ForceVector (fldOffset=0x8)" P-DEP -; V142 tmp102 [V142,T58] ( 4, 14 ) int -> [fp+0x88] do-not-enreg[] "field V108.Min (fldOffset=0x0)" P-DEP -; V143 tmp103 [V143,T59] ( 4, 14 ) int -> [fp+0x8C] do-not-enreg[] "field V108.Lim (fldOffset=0x4)" P-DEP -; V144 tmp104 [V144,T60] ( 4, 14 ) ubyte -> [fp+0x90] do-not-enreg[] "field V108.ForceVector (fldOffset=0x8)" P-DEP -;* V145 tmp105 [V145 ] ( 0, 0 ) int -> zero-ref "field V114.Min (fldOffset=0x0)" P-INDEP -;* V146 tmp106 [V146 ] ( 0, 0 ) int -> zero-ref "field V114.Lim (fldOffset=0x4)" P-INDEP -;* V147 tmp107 [V147 ] ( 0, 0 ) ubyte -> zero-ref "field V114.ForceVector (fldOffset=0x8)" P-INDEP -;* V148 tmp108 [V148 ] ( 0, 0 ) int -> zero-ref "field V119.Min (fldOffset=0x0)" P-INDEP -;* V149 tmp109 [V149 ] ( 0, 0 ) int -> zero-ref "field V119.Lim (fldOffset=0x4)" P-INDEP -;* V150 tmp110 [V150 ] ( 0, 0 ) ubyte -> zero-ref "field V119.ForceVector (fldOffset=0x8)" P-INDEP -;* V151 tmp111 [V151,T112] ( 0, 0 ) ref -> zero-ref "V38.[000..008)" -; V152 tmp112 [V152,T06] ( 6, 82 ) int -> [fp+0x7C] "V38.[008..012)" -; V153 tmp113 [V153,T24] ( 3, 34 ) int -> [fp+0x78] spill-single-def "V38.[012..016)" -; V154 tmp114 [V154,T16] ( 3, 32 ) int -> x2 "V38.[016..020)" -; V155 tmp115 [V155,T17] ( 3, 32 ) int -> [fp+0x74] spill-single-def "V38.[020..024)" -;* V156 tmp116 [V156 ] ( 0, 0 ) ubyte -> zero-ref "V38.[024..025)" -;* V157 tmp117 [V157 ] ( 0, 0 ) ref -> zero-ref "V110.[000..008)" -;* V158 tmp118 [V158 ] ( 0, 0 ) int -> zero-ref "V110.[008..012)" -; V159 tmp119 [V159,T95] ( 2, 4 ) int -> x5 "V110.[012..016)" -;* V160 tmp120 [V160 ] ( 0, 0 ) int -> zero-ref "V110.[016..020)" -;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref "V110.[020..024)" -;* V162 tmp122 [V162 ] ( 0, 0 ) ubyte -> zero-ref "V110.[024..025)" -; V163 tmp123 [V163,T07] ( 3, 96 ) byref -> x1 "Spilling address for field-by-field copy" -; V164 tmp124 [V164,T125] ( 2, 0 ) ref -> x19 "argument with side effect" -; V165 tmp125 [V165,T126] ( 2, 0 ) ref -> x2 "argument with side effect" -; V166 tmp126 [V166,T127] ( 2, 0 ) ref -> x19 "argument with side effect" -; V167 tmp127 [V167,T128] ( 2, 0 ) ref -> x2 "argument with side effect" -; V168 tmp128 [V168,T67] ( 3, 12 ) struct ( 8) [fp+0x68] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V169 tmp129 [V169,T08] ( 3, 96 ) ref -> x4 "arr expr" -; V170 tmp130 [V170,T129] ( 2, 0 ) ref -> x20 "argument with side effect" -; V171 tmp131 [V171,T130] ( 2, 0 ) ref -> x2 "argument with side effect" -; V172 tmp132 [V172,T02] ( 4,128 ) byref -> x4 "BlockOp address local" -; V173 tmp133 [V173,T131] ( 2, 0 ) ref -> x1 "argument with side effect" -; V174 tmp134 [V174,T132] ( 2, 0 ) ref -> x1 "argument with side effect" -; V175 tmp135 [V175,T133] ( 2, 0 ) ref -> x19 "argument with side effect" -; V176 tmp136 [V176,T134] ( 2, 0 ) ref -> x2 "argument with side effect" -; V177 tmp137 [V177,T135] ( 2, 0 ) ref -> x1 "argument with side effect" -; V178 tmp138 [V178,T66] ( 3, 12 ) ref -> x0 "arr expr" -; V179 tmp139 [V179,T83] ( 2, 8 ) ref -> x0 "argument with side effect" -; V180 tmp140 [V180,T106] ( 3, 3 ) int -> x1 "index expr" -; V181 tmp141 [V181,T103] ( 3, 3 ) byref -> x1 single-def "BlockOp address local" -; V182 tmp142 [V182,T09] ( 3, 96 ) ref -> x1 "arr expr" -; V183 tmp143 [V183,T46] ( 4, 16 ) byref -> x1 "BlockOp address local" -; V184 tmp144 [V184,T110] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V185 tmp145 [V185,T111] ( 2, 2 ) ref -> x2 single-def "argument with side effect" -; V186 tmp146 [V186,T104] ( 3, 3 ) ref -> x13 single-def "arr expr" -; V187 tmp147 [V187,T136] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V188 tmp148 [V188,T137] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V189 tmp149 [V189,T138] ( 2, 0 ) ref -> x20 single-def "argument with side effect" -; V190 tmp150 [V190,T139] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V191 tmp151 [V191,T140] ( 2, 0 ) ref -> x19 single-def "argument with side effect" -; V192 tmp152 [V192,T141] ( 2, 0 ) ref -> x2 single-def "argument with side effect" -; V193 PSPSym [V193,T120] ( 1, 1 ) long -> [fp+0xE8] do-not-enreg[V] "PSPSym" -;* V194 cse0 [V194,T96] ( 0, 0 ) long -> zero-ref multi-def "CSE - moderate" -;* V195 cse1 [V195,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative" -; V196 cse2 [V196,T19] ( 3, 48 ) int -> x7 "CSE - moderate" -; V197 cse3 [V197,T117] ( 3, 1.50) int -> x13 "CSE - conservative" -; V198 cse4 [V198,T34] ( 3, 24 ) int -> x1 "CSE - moderate" -; V199 cse5 [V199,T44] ( 11, 17.50) long -> [fp+0x60] multi-def "CSE - moderate" -; V200 cse6 [V200,T68] ( 6, 11.50) int -> x27 "CSE - moderate" -; V201 cse7 [V201,T50] ( 2, 16 ) int -> x0 "CSE - moderate"
+; V101 tmp61 [V101,T87] ( 3, 6 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> +;* V102 tmp62 [V102,T115] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V103 tmp63 [V103,T88] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V104 tmp64 [V104,T32] ( 6, 24 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> +; V105 tmp65 [V105,T89] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V106 tmp66 [V106,T77] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +; V107 tmp67 [V107 ] ( 6, 24 ) struct (16) [fp+0x88] do-not-enreg[SFA] multireg-arg "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +; V108 tmp68 [V108,T66] ( 3, 12 ) ref -> x15 class-hnd exact "Inlining Arg" <<unknown class>> +;* V109 tmp69 [V109 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> +;* V110 tmp70 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V111 tmp71 [V111,T33] ( 3, 24 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V112 tmp72 [V112,T26] ( 4, 32 ) int -> x2 "Inline stloc first use temp" +;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V114 tmp74 [V114,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V115 tmp75 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V116 tmp76 [V116,T90] ( 3, 6 ) ref -> x1 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V117 tmp77 [V117,T78] ( 4, 8 ) int -> x2 "Inline stloc first use temp" +;* V118 tmp78 [V118 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V119 tmp79 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V120 tmp80 [V120,T118] ( 2, 1 ) int -> x14 "Inline return value spill temp" +; V121 tmp81 [V121,T103] ( 3, 3 ) ref -> x13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]>
...

+16 (+4.35%) : 4653.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.Canon]:Commit():System.Canon:this (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 10, 6.25) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
+; V00 this [V00,T00] ( 8, 6 ) ref -> x19 this class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Runtime.ExceptionServices.ExceptionDispatchInfo> @@ -16,27 +16,27 @@ ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp2 [V09,T12] ( 4, 0 ) long -> x0 "spilling helperCall" -;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V11 tmp4 [V11,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V14 tmp7 [V14,T05] ( 4, 4.50) long -> x0 "spilling helperCall" -;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V16 tmp9 [V16,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -; V17 tmp10 [V17,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp11 [V18,T10] ( 2, 4 ) long -> x0 "argument with side effect" -; V19 tmp12 [V19,T17] ( 2, 0 ) long -> x0 "argument with side effect" -; V20 cse0 [V20,T04] ( 12, 5.40) long -> x20 "CSE - aggressive" -; V21 rat0 [V21,T06] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" -; V22 rat1 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat2 [V23,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" -; V24 rat3 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V25 rat4 [V25,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V26 rat5 [V26,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V27 rat6 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" -; V28 rat7 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" -; V29 rat8 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V13 tmp6 [V13,T09] ( 2, 4 ) long -> x0 "argument with side effect" +; V14 tmp7 [V14,T16] ( 2, 0 ) long -> x0 "argument with side effect" +; V15 tmp8 [V15,T10] ( 2, 4 ) long -> x0 "argument with side effect" +; V16 tmp9 [V16,T17] ( 2, 0 ) long -> x0 "argument with side effect" +; V17 tmp10 [V17,T11] ( 2, 4 ) long -> x0 "argument with side effect" +; V18 cse0 [V18,T04] ( 10, 4.40) long -> x20 "CSE - aggressive" +; V19 rat0 [V19,T05] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" +; V20 rat1 [V20,T06] ( 3, 4 ) long -> x0 "runtime lookup" +; V21 rat2 [V21,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable" +; V22 rat3 [V22,T07] ( 3, 4 ) long -> x0 "runtime lookup" +; V23 rat4 [V23,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V24 rat5 [V24,T08] ( 3, 4 ) long -> x0 "runtime lookup" +; V25 rat6 [V25,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" +; V26 rat7 [V26,T12] ( 3, 0 ) long -> x0 "runtime lookup" +; V27 rat8 [V27,T13] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable" +; V28 rat9 [V28,T14] ( 3, 0 ) long -> x0 "runtime lookup" +; V29 rat10 [V29,T15] ( 3, 0 ) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -71,7 +71,7 @@ G_M31693_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG15
+ cbnz x0, G_M31693_IG13
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -93,7 +93,7 @@ G_M31693_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0]
- cbnz x0, G_M31693_IG19
+ cbnz x0, G_M31693_IG16
ldr x0, [x20, #0x38] ; gcrRegs -[x0] ldr x0, [x0] @@ -110,53 +110,47 @@ G_M31693_IG10: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG13 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M31693_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.25 PerfScore 0.38 -G_M31693_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 3.00 -G_M31693_IG14: ; bbWeight=1, epilog, nogc, extend
+ ldr x0, [x0, #0x08] + ;; size=28 bbWeight=1 PerfScore 9.00 +G_M31693_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M31693_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31693_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x18]
- cbz x0, G_M31693_IG16 - b G_M31693_IG17
+ cbz x0, G_M31693_IG14 + b G_M31693_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp x20, x0 - beq G_M31693_IG18
+G_M31693_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
; gcrRegs -[x1] +[x0]
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0]
+ ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -165,22 +159,22 @@ G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x1 ; gcrRegs -[x0] brk_windows #0
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M31693_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0 PerfScore 0.00 +G_M31693_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38] ldr x0, [x0] ldr x0, [x0, #0x20]
- cbz x0, G_M31693_IG20 - b G_M31693_IG21
+ cbz x0, G_M31693_IG17 + b G_M31693_IG18
;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=20 bbWeight=0 PerfScore 0.00
-G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M31693_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS @@ -195,7 +189,7 @@ G_M31693_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_windows #0 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 16, PerfScore 54.88, instruction count 92, allocated bytes for code 368 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
+; Total bytes of code 384, prolog size 16, PerfScore 59.00, instruction count 96, allocated bytes for code 384 (MethodHash=8a908432) for method Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -206,7 +200,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 368 (0x000170)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+8.59%) : 4831.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)

@@ -8,29 +8,28 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 3, 3 ) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> -; V01 arg1 [V01,T00] ( 8, 8 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task> -; V02 arg2 [V02,T02] ( 4, 4 ) ubyte -> [fp+0x1C] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [fp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> +; V01 arg1 [V01,T00] ( 8, 5 ) ref -> x19 class-hnd single-def <System.Threading.Tasks.Task> +; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [fp+0x1C] EH-live single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T07] ( 4, 4 ) ubyte -> x1 "Inline return value spill temp" -; V06 tmp3 [V06,T06] ( 4, 4 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V07 tmp4 [V07,T12] ( 3, 3 ) ubyte -> x1 "Inline return value spill temp" -; V08 tmp5 [V08,T09] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
+; V05 tmp2 [V05,T07] ( 4, 2 ) ubyte -> x1 "Inline return value spill temp" +; V06 tmp3 [V06,T06] ( 4, 2 ) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V07 tmp4 [V07,T12] ( 3, 1.50) ubyte -> x1 "Inline return value spill temp" +; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T13] ( 2, 2 ) int -> x1 "Inline stloc first use temp"
+; V10 tmp7 [V10,T13] ( 2, 1 ) int -> x1 "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object> ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V16 tmp13 [V16,T10] ( 2, 4 ) byref -> x1 single-def "argument with side effect" -; V17 PSPSym [V17,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V18 cse0 [V18,T01] ( 7, 7 ) byref -> x20 "CSE - aggressive" -; V19 cse1 [V19,T11] ( 3, 3 ) ref -> x1 "CSE - aggressive" -; V20 rat0 [V20,T08] ( 3, 4 ) byref -> x21 "TLS field access" -; V21 rat1 [V21,T03] ( 3, 6 ) long -> x1 "TLS access" -; V22 rat2 [V22,T04] ( 3, 6 ) long -> x1 "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V15 tmp12 [V15,T10] ( 2, 2 ) byref -> x1 single-def "argument with side effect" +; V16 PSPSym [V16,T14] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" +; V17 cse0 [V17,T03] ( 7, 3.50) byref -> x20 "CSE - aggressive" +; V18 cse1 [V18,T11] ( 3, 1.50) ref -> x1 "CSE - moderate" +; V19 rat0 [V19,T08] ( 3, 2 ) byref -> x21 "TLS field access" +; V20 rat1 [V20,T04] ( 3, 3 ) long -> x1 "TLS access" +; V21 rat2 [V21,T05] ( 3, 3 ) long -> x1 "ThreadStaticBlockBase access"
; ; Lcl frame size = 24 @@ -40,16 +39,18 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x21, [sp, #0x38] mov fp, sp add x3, sp, #64
- str x3, [fp, #0x20] // [V17 PSPSym]
+ str x3, [fp, #0x20] // [V16 PSPSym]
str x0, [fp, #0x10] // [V00 this] ; GC ptr vars +{V00} str w2, [fp, #0x1C] // [V02 arg2] mov x19, x1 ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.50
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
tst w2, #255
- beq G_M14922_IG04
+ beq G_M14922_IG05 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp x19, #0 cset x0, ne movz x1, #0xD1FFAB1E // code for <unknown method> @@ -67,16 +68,16 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M14922_IG04
+ cbnz w0, G_M14922_IG05
mov w0, wzr
- ;; size=68 bbWeight=1 PerfScore 15.50 -G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0.50 PerfScore 7.00 +G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x38] ldp x19, x20, [sp, #0x28] ldp fp, lr, [sp], #0x40 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
add x20, x19, #52 ; byrRegs +[x20] ldapr w1, [x20] @@ -87,20 +88,20 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 ldapr x1, [x1] ; gcrRegs +[x1] ; byrRegs -[x1]
- cbz x1, G_M14922_IG08
+ cbz x1, G_M14922_IG09
add x3, x1, #56 ; byrRegs +[x3] ldapr w3, [x3] ; byrRegs -[x3] cmp w3, #1
- beq G_M14922_IG07
+ beq G_M14922_IG08
add x1, x1, #64 ; gcrRegs -[x1] ; byrRegs +[x1] ldr x1, [x1] ; gcrRegs +[x1] ; byrRegs -[x1]
- cbz x1, G_M14922_IG05
+ cbz x1, G_M14922_IG06
add x1, x1, #32 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -108,42 +109,42 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=800 ; byrRegs -[x1] cmp w1, #0 cset x1, ne
- b G_M14922_IG06 - ;; size=76 bbWeight=1 PerfScore 24.50 -G_M14922_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG07 + ;; size=76 bbWeight=0.50 PerfScore 12.25 +G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - b G_M14922_IG09 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M14922_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + b G_M14922_IG10 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #1
- b G_M14922_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M14922_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+ b G_M14922_IG10 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, wzr
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w3, [x20] and w3, w3, #0xD1FFAB1E mov w4, #0xD1FFAB1E cmp w1, #0 ccmp w3, w4, z, eq
- beq G_M14922_IG12
+ beq G_M14922_IG13
ldr x1, [xpr, #0x58] ldr x1, [x1, #0x10] ldr w3, [x1, #0xD0] cmp w3, #11
- blt G_M14922_IG11
+ blt G_M14922_IG12
ldr x1, [x1, #0xD8] ldr x1, [x1, #0x58]
- cbz x1, G_M14922_IG11
+ cbz x1, G_M14922_IG12
ldr x1, [x1] ; byrRegs +[x1] add x21, x1, #16 ; byrRegs +[x21]
- ;; size=64 bbWeight=1 PerfScore 27.00 -G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ ;; size=64 bbWeight=0.50 PerfScore 13.50 +G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; byrRegs -[x1 x20] add x1, x21, #104 ; byrRegs +[x1] @@ -158,9 +159,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 ; gcrRegs -[x0 x19] ; byrRegs -[x1 x21] ; gcr arg pop 0
- b G_M14922_IG13 - ;; size=36 bbWeight=1 PerfScore 8.00 -G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M14922_IG14 + ;; size=36 bbWeight=0.50 PerfScore 4.00 +G_M14922_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19] mov w0, #11 bl CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED @@ -168,18 +169,18 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x21, x0 ; byrRegs +[x21]
- b G_M14922_IG10
+ b G_M14922_IG11
;; size=16 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0 x21] +[x20] ldapr w1, [x20] and w1, w1, #0xD1FFAB1E cmp w1, #0xD1FFAB1E, LSL #12
- beq G_M14922_IG13
+ beq G_M14922_IG14
ldapr w1, [x20] orr w1, w1, #0xD1FFAB1E swpal w1, w1, [x20]
- tbnz w1, #22, G_M14922_IG13
+ tbnz w1, #22, G_M14922_IG14
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -190,33 +191,47 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 ; gcrRegs -[x0 x19] ; byrRegs -[x20] ; gcr arg pop 0
- ;; size=56 bbWeight=1 PerfScore 18.50 -G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V17 PSPSym] - bl G_M14922_IG17 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M14922_IG14: ; bbWeight=1, nogc, extend - nop - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=0.50 PerfScore 9.25 +G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldrb w2, [fp, #0x1C] // [V02 arg2] + tst w2, #255 + beq G_M14922_IG15 + ldr x0, [fp, #0x10] // [V00 this] + ; gcrRegs +[x0] + ldrsb wzr, [x0] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Threading.PortableThreadPool:NotifyWorkItemProgress():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1]
; GC ptr vars -{V00}
+ blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + ;; size=56 bbWeight=0.50 PerfScore 9.25 +G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1 ...

smoke_tests.nativeaot.windows.arm64.checked.mch

-24 (-28.57%) : 8830.dasm - System.Runtime.CompilerServices.StrongBox`1[System._Canon]:System.Runtime.CompilerServices.IStrongBox.setValue(System.Object):this (FullOpts)

@@ -7,11 +7,9 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]> -; V01 arg1 [V01,T02] ( 4, 3.12) ref -> x1 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd exact single-def <System.Runtime.CompilerServices.StrongBox`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> x15 class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 8 @@ -23,43 +21,28 @@ G_M28067_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x0 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M28067_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- mov x15, x1 - ; gcrRegs +[x15] - cbz x15, G_M28067_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M28067_IG03: ; bbWeight=0.25, gcrefRegs=88002 {x1 x15 x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x15] - ldr x2, [x19] - ldr x2, [x2, #0x30] - ldr x2, [x2] - cmp x0, x2 - beq G_M28067_IG05 - ;; size=24 bbWeight=0.25 PerfScore 3.38 -G_M28067_IG04: ; bbWeight=0.12, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x15] - mov x0, x2
+ ldr x0, [x19] + ldr x0, [x0, #0x30] + ldr x0, [x0]
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- mov x15, x0 - ; gcrRegs +[x15] - ;; size=12 bbWeight=0.12 PerfScore 0.25 -G_M28067_IG05: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
add x14, x19, #8 ; byrRegs +[x14]
+ mov x15, x0 + ; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M28067_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=28 bbWeight=1 PerfScore 12.00 +G_M28067_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 84, prolog size 16, PerfScore 14.62, instruction count 21, allocated bytes for code 84 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 20.00, instruction count 15, allocated bytes for code 60 (MethodHash=244e925c) for method System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-26.32%) : 23859.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,38 +21,29 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x1, [fp, #0x10]
- mov x19, x1 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19]
+ ldr x19, [x1] + mov x0, x19
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1-x2] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M33075_IG05 - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - cmp x2, x3 - beq G_M33075_IG05 - ;; size=16 bbWeight=0.25 PerfScore 1.88 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=1 PerfScore 7.00 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 16.06, instruction count 19, allocated bytes for code 76 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 56, prolog size 16, PerfScore 14.50, instruction count 14, allocated bytes for code 56 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-26.32%) : 10240.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> x19 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x2 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,T03] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> x19 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -22,38 +21,29 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x19, [sp, #0x18] mov fp, sp str x1, [fp, #0x10]
- mov x19, x1 - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 3.50 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs +[x2]
- ldr x0, [x19]
+ ldr x19, [x1] + mov x0, x19
mov x1, x2 ; gcrRegs +[x1] bl CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[x1-x2] +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x0, G_M33075_IG05 - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x0] - ldr x3, [x19] - cmp x2, x3 - beq G_M33075_IG05 - ;; size=16 bbWeight=0.25 PerfScore 1.88 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs -[x0]
- mov x0, x3
bl CORINFO_HELP_CHKCASTANY ; gcrRegs -[x1] +[x0]
- ;; size=8 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=1 PerfScore 7.00 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 76, prolog size 16, PerfScore 16.06, instruction count 19, allocated bytes for code 76 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 56, prolog size 16, PerfScore 14.50, instruction count 14, allocated bytes for code 56 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.85%) : 20746.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)

@@ -10,32 +10,32 @@ ; V00 this [V00,T00] ( 8, 8 ) byref -> x19 this single-def ;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 arg3 [V03,T01] ( 10, 5.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
+; V03 arg3 [V03,T01] ( 12, 6.33) ref -> x20 class-hnd single-def <System.IFormatProvider>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T13] ( 0, 0 ) byref -> zero-ref single-def ;* V07 tmp2 [V07,T12] ( 0, 0 ) byref -> zero-ref ; V08 tmp3 [V08,T07] ( 3, 2 ) int -> x21 ; V09 tmp4 [V09,T09] ( 3, 1.50) ubyte -> x21 "Inline return value spill temp"
-; V10 tmp5 [V10,T05] ( 2, 2 ) ref -> x0 class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V11 tmp6 [V11,T10] ( 2, 1 ) int -> x0 -; V12 tmp7 [V12,T11] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V13 tmp8 [V13,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> -; V17 tmp12 [V17,T14] ( 3, 0.83) ref -> x0 "guarded devirt return temp" -; V18 tmp13 [V18,T08] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" -;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V10 tmp5 [V10,T10] ( 2, 1 ) int -> x0 +; V11 tmp6 [V11,T11] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V12 tmp7 [V12,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V16 tmp11 [V16,T14] ( 3, 0.83) ref -> x0 "guarded devirt return temp" +; V17 tmp12 [V17,T08] ( 3, 1.67) ref -> x1 single-def "guarded devirt arg temp" +;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V26 tmp21 [V26,T02] ( 2, 2 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP -; V27 tmp22 [V27,T03] ( 2, 2 ) int -> x5 single-def "field V04._length (fldOffset=0x8)" P-INDEP -; V28 cse0 [V28,T04] ( 6, 2.83) long -> x21 "CSE - aggressive"
+; V25 tmp20 [V25,T02] ( 2, 2 ) byref -> x4 single-def "field V04._reference (fldOffset=0x0)" P-INDEP +; V26 tmp21 [V26,T03] ( 2, 2 ) int -> x5 single-def "field V04._length (fldOffset=0x8)" P-INDEP +; V27 cse0 [V27,T05] ( 6, 2.83) long -> x21 multi-def "CSE - aggressive" +; V28 rat0 [V28,T04] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 8 @@ -68,60 +68,72 @@ G_M17405_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x20] ; byrRegs -[x4] mov w21, wzr
- b G_M17405_IG15
+ b G_M17405_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75 G_M17405_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz ; gcrRegs +[x20] mov x0, x20 ; gcrRegs +[x0]
- ldr x21, [x0] - adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ cbz x0, G_M17405_IG07 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17405_IG05: ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M17405_IG07 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M17405_IG06: ; bbWeight=0.12, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0]
- add x0, x0, [LOW RELOC #0xD1FFAB1E] - cmp x21, x0 - bne G_M17405_IG10
+ mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M17405_IG07: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz + cbz x0, G_M17405_IG13
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1]
+ ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG06 - ;; size=48 bbWeight=0.50 PerfScore 4.75 -G_M17405_IG05: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M17405_IG09 + ;; size=32 bbWeight=0.50 PerfScore 3.75 +G_M17405_IG08: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M17405_IG09
+ b G_M17405_IG12
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M17405_IG06: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG09: ; bbWeight=0.33, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0] +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG08
+ bne G_M17405_IG11
;; size=16 bbWeight=0.33 PerfScore 0.82
-G_M17405_IG07: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG10: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1]
- b G_M17405_IG09
+ b G_M17405_IG12
;; size=12 bbWeight=0.17 PerfScore 0.41
-G_M17405_IG08: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M17405_IG09: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG12: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
cmp x0, #0 cset x0, eq ; gcrRegs -[x0] tst w0, #255
- bne G_M17405_IG10
+ bne G_M17405_IG13
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -131,53 +143,54 @@ G_M17405_IG09: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=8000 bl <unknown method> ; gcrRegs -[x0-x1] ;; size=36 bbWeight=0.50 PerfScore 2.75
-G_M17405_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M17405_IG13: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz + ldr x21, [x20]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- beq G_M17405_IG14
+ beq G_M17405_IG17
adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] cmp x21, x0
- bne G_M17405_IG12 - ;; size=40 bbWeight=0.50 PerfScore 3.00 -G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+ bne G_M17405_IG15 + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M17405_IG14: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20]
- b G_M17405_IG13
+ b G_M17405_IG16
;; size=12 bbWeight=0.17 PerfScore 0.43
-G_M17405_IG12: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
+G_M17405_IG15: ; bbWeight=0.17, gcrefRegs=100002 {x1 x20}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] +[x1 x20] mov x0, x20 ; gcrRegs +[x0] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1 x20] ;; size=8 bbWeight=0.17 PerfScore 0.25
-G_M17405_IG13: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
+G_M17405_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80000 {x19}, byref
cmp x0, #0 cset x21, ne
- b G_M17405_IG15
+ b G_M17405_IG18
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M17405_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M17405_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0] mov w21, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17405_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M17405_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
strb w21, [x19, #0x14] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M17405_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M17405_IG19: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 292, prolog size 16, PerfScore 32.58, instruction count 73, allocated bytes for code 292 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
+; Total bytes of code 312, prolog size 16, PerfScore 35.27, instruction count 78, allocated bytes for code 312 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
; ============================================================ Unwind Info: @@ -188,7 +201,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+7.14%) : 421.dasm - System.Globalization.NumberFormatInfo:g_GetProviderNonNull|590(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)

@@ -7,21 +7,22 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 5.33) ref -> x0 class-hnd single-def <System.IFormatProvider> -; V01 loc0 [V01,T03] ( 5, 3.25) ref -> x1 class-hnd exact <System.Globalization.CultureInfo>
+; V00 arg0 [V00,T01] ( 9, 4.83) ref -> x0 class-hnd single-def <System.IFormatProvider> +; V01 loc0 [V01,T04] ( 5, 3.50) ref -> x1 class-hnd exact single-def <System.Globalization.CultureInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V04 tmp2 [V04,T01] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V05 tmp3 [V05,T05] ( 5, 2.50) ref -> x2 -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V07 tmp5 [V07,T02] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V08 tmp6 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref single-def -; V10 tmp8 [V10,T07] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V11 tmp9 [V11,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V03 tmp1 [V03,T08] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V04 tmp2 [V04,T06] ( 5, 2.50) ref -> x1 +; V05 tmp3 [V05,T09] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V06 tmp4 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +; V08 tmp6 [V08,T10] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V09 tmp7 [V09,T07] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V13 rat0 [V13,T00] ( 5, 7.50) ref -> x1 "replacement local" +; V14 rat1 [V14,T02] ( 5, 3.75) ref -> x1 "replacement local" +; V15 rat2 [V15,T03] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 0 @@ -33,113 +34,131 @@ G_M57757_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x1, G_M57757_IG07
+ cbz x1, G_M57757_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M57757_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG07 - ;; size=20 bbWeight=0.25 PerfScore 1.38 -G_M57757_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldrb w2, [x0, #0x61] - cbnz w2, G_M57757_IG07
+ beq G_M57757_IG05 + ;; size=20 bbWeight=0.50 PerfScore 2.75 +G_M57757_IG04: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57757_IG05: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M57757_IG09 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldrb w2, [x1, #0x61] + cbnz w2, G_M57757_IG09
ldr x0, [x1, #0x18]
- cbnz x0, G_M57757_IG06
+ cbnz x0, G_M57757_IG08
mov x0, x1 ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M57757_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.CultureInfo:get_NumberFormat():System.Globalization.NumberFormatInfo:this ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57757_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG09
+G_M57757_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M57757_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57757_IG08: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref - ldr x1, [x2] - adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo
+G_M57757_IG10: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1] + adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x1, x3 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG09: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+ cmp x2, x3 + beq G_M57757_IG12 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG12: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M57757_IG22
adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x1]
add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] ldr x2, [x0]
- ; gcrRegs -[x2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG11
+ bne G_M57757_IG14
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M57757_IG10: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.34
-G_M57757_IG11: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG14: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1] ldr x2, [x0] adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG13
+ bne G_M57757_IG16
;; size=20 bbWeight=0.33 PerfScore 1.82
-G_M57757_IG12: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG15: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.33
-G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG16: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=4 bbWeight=0.17 PerfScore 0.17
-G_M57757_IG14: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M57757_IG15: ; bbWeight=0.25, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x2] - adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo - add x1, x1, [LOW RELOC #0xD1FFAB1E] - cmp x0, x1 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG16: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+G_M57757_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M57757_IG20
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57757_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG18: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M57757_IG20 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG20: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbnz x1, G_M57757_IG22 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57757_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - mov x0, x2
+G_M57757_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, x1
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57757_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG23: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 224, prolog size 8, PerfScore 23.77, instruction count 56, allocated bytes for code 224 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
+; Total bytes of code 240, prolog size 8, PerfScore 26.65, instruction count 60, allocated bytes for code 240 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
; ============================================================ Unwind Info: @@ -150,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+7.14%) : 3768.dasm - System.Globalization.NumberFormatInfo:g_GetProviderNonNull|590(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)

@@ -8,21 +8,22 @@ ; control-flow guard enabled ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 10, 5.33) ref -> x0 class-hnd single-def <System.IFormatProvider> -; V01 loc0 [V01,T03] ( 5, 3.25) ref -> x1 class-hnd exact <System.Globalization.CultureInfo>
+; V00 arg0 [V00,T01] ( 9, 4.83) ref -> x0 class-hnd single-def <System.IFormatProvider> +; V01 loc0 [V01,T04] ( 5, 3.50) ref -> x1 class-hnd exact single-def <System.Globalization.CultureInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V04 tmp2 [V04,T01] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V05 tmp3 [V05,T05] ( 5, 2.50) ref -> x2 -;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V07 tmp5 [V07,T02] ( 6, 4.50) ref -> x2 class-hnd exact "spilling QMark2" <System.Globalization.NumberFormatInfo> -; V08 tmp6 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> -;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref single-def -; V10 tmp8 [V10,T07] ( 4, 1 ) ref -> x0 "guarded devirt return temp" -; V11 tmp9 [V11,T06] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" -;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V03 tmp1 [V03,T08] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V04 tmp2 [V04,T06] ( 5, 2.50) ref -> x1 +; V05 tmp3 [V05,T09] ( 2, 2 ) ref -> x1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +; V06 tmp4 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +; V08 tmp6 [V08,T10] ( 4, 1 ) ref -> x0 "guarded devirt return temp" +; V09 tmp7 [V09,T07] ( 4, 2 ) ref -> x1 single-def "guarded devirt arg temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V13 rat0 [V13,T00] ( 5, 7.50) ref -> x1 "replacement local" +; V14 rat1 [V14,T02] ( 5, 3.75) ref -> x1 "replacement local" +; V15 rat2 [V15,T03] ( 5, 3.75) ref -> x0 "replacement local"
; ; Lcl frame size = 0 @@ -34,113 +35,131 @@ G_M57757_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] mov x1, x0 ; gcrRegs +[x1]
- cbz x1, G_M57757_IG07
+ cbz x1, G_M57757_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M57757_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.CultureInfo
+ adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG07 - ;; size=20 bbWeight=0.25 PerfScore 1.38 -G_M57757_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz - ldrb w2, [x0, #0x61] - cbnz w2, G_M57757_IG07
+ beq G_M57757_IG05 + ;; size=20 bbWeight=0.50 PerfScore 2.75 +G_M57757_IG04: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57757_IG05: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbz x1, G_M57757_IG09 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldrb w2, [x1, #0x61] + cbnz w2, G_M57757_IG09
ldr x0, [x1, #0x18]
- cbnz x0, G_M57757_IG06
+ cbnz x0, G_M57757_IG08
mov x0, x1 ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M57757_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.CultureInfo:get_NumberFormat():System.Globalization.NumberFormatInfo:this ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57757_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG09
+G_M57757_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbz x1, G_M57757_IG12
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M57757_IG08: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref - ldr x1, [x2] - adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo
+G_M57757_IG10: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x1] + adrp x3, [HIGH RELOC #0xD1FFAB1E]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x1, x3 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG09: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+ cmp x2, x3 + beq G_M57757_IG12 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG12: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz + cbnz x1, G_M57757_IG22
adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ ; gcrRegs -[x1]
add x1, x1, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x1] ldr x2, [x0]
- ; gcrRegs -[x2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG11
+ bne G_M57757_IG14
;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M57757_IG10: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.34
-G_M57757_IG11: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M57757_IG14: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1] ldr x2, [x0] adrp x3, [HIGH RELOC #0xD1FFAB1E] add x3, x3, [LOW RELOC #0xD1FFAB1E] cmp x2, x3
- bne G_M57757_IG13
+ bne G_M57757_IG16
;; size=20 bbWeight=0.33 PerfScore 1.82
-G_M57757_IG12: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG15: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
bl System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0
- b G_M57757_IG14
+ b G_M57757_IG17
;; size=8 bbWeight=0.17 PerfScore 0.33
-G_M57757_IG13: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M57757_IG16: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1] bl System.Globalization.DateTimeFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[x1] ; gcr arg pop 0 ;; size=4 bbWeight=0.17 PerfScore 0.17
-G_M57757_IG14: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - mov x2, x0 - ; gcrRegs +[x2] - cbz x2, G_M57757_IG16 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M57757_IG15: ; bbWeight=0.25, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ldr x0, [x2] - adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.Globalization.NumberFormatInfo - add x1, x1, [LOW RELOC #0xD1FFAB1E] - cmp x0, x1 - csel x2, x2, xzr, eq - ;; size=20 bbWeight=0.25 PerfScore 1.25 -G_M57757_IG16: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M57757_IG18
+G_M57757_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + cbz x0, G_M57757_IG20
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M57757_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG18: ; bbWeight=0.25, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0] + adrp x2, [HIGH RELOC #0xD1FFAB1E] + add x2, x2, [LOW RELOC #0xD1FFAB1E] + cmp x1, x2 + beq G_M57757_IG20 + ;; size=20 bbWeight=0.25 PerfScore 1.38 +G_M57757_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, xzr + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M57757_IG20: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + mov x1, x0 + ; gcrRegs +[x1] + cbnz x1, G_M57757_IG22 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M57757_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 b System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M57757_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - mov x0, x2
+G_M57757_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov x0, x1
; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M57757_IG19: ; bbWeight=0.50, epilog, nogc, extend
+G_M57757_IG23: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 224, prolog size 8, PerfScore 23.77, instruction count 56, allocated bytes for code 224 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
+; Total bytes of code 240, prolog size 8, PerfScore 26.65, instruction count 60, allocated bytes for code 240 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
; ============================================================ Unwind Info: @@ -151,7 +170,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 114 87 22 5 -2,076 +1,404
benchmarks.run_pgo.windows.arm64.checked.mch 4,269 1,697 2,443 129 -38,604 +52,504
benchmarks.run_tiered.windows.arm64.checked.mch 41 37 3 1 -896 +156
coreclr_tests.run.windows.arm64.checked.mch 1,031 382 306 343 -5,904 +181,048
libraries.crossgen2.windows.arm64.checked.mch 1,122 1,112 3 7 -39,080 +12
libraries.pmi.windows.arm64.checked.mch 634 570 43 21 -18,892 +2,960
libraries_tests.run.windows.arm64.Release.mch 5,939 2,137 2,295 1,507 -31,332 +61,572
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 907 745 137 25 -25,876 +11,804
realworld.run.windows.arm64.checked.mch 149 135 8 6 -4,352 +304
smoke_tests.nativeaot.windows.arm64.checked.mch 57 32 21 4 -932 +412
14,263 6,934 5,281 2,048 -167,944 +312,176

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 22,746 4 22,742 0 (0.00%) 1,700 (6.95%)
benchmarks.run_pgo.windows.arm64.checked.mch 90,286 48,079 42,207 0 (0.00%) 5,835 (6.07%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,769 36,713 12,056 0 (0.00%) 591 (1.20%)
coreclr_tests.run.windows.arm64.checked.mch 586,405 362,592 223,813 1 (0.00%) 8,999 (1.51%)
libraries.crossgen2.windows.arm64.checked.mch 244,142 15 244,127 3 (0.00%) 10 (0.00%)
libraries.pmi.windows.arm64.checked.mch 276,223 6 276,217 3 (0.00%) 29,355 (9.61%)
libraries_tests.run.windows.arm64.Release.mch 623,551 469,431 154,120 0 (0.00%) 28,055 (4.31%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 274,864 21,598 253,266 0 (0.00%) 42,213 (13.31%)
realworld.run.windows.arm64.checked.mch 28,773 3 28,770 0 (0.00%) 4,438 (13.36%)
smoke_tests.nativeaot.windows.arm64.checked.mch 22,746 8 22,738 2 (0.01%) 1,416 (5.86%)
2,218,505 938,449 1,280,056 9 (0.00%) 122,612 (5.24%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9209620 (overridden on cmd)
Total bytes of diff: 9208948 (overridden on cmd)
Total bytes of delta: -672 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 20020.dasm (36.46 % of base)
         140 : 22058.dasm (7.94 % of base)
          80 : 4322.dasm (3.05 % of base)
          68 : 11637.dasm (11.26 % of base)
          68 : 15109.dasm (7.20 % of base)
          68 : 23387.dasm (17.35 % of base)
          68 : 23493.dasm (15.32 % of base)
          68 : 24294.dasm (14.66 % of base)
          68 : 24306.dasm (14.41 % of base)
          68 : 10654.dasm (10.90 % of base)
          68 : 14368.dasm (10.43 % of base)
          68 : 14932.dasm (7.69 % of base)
          68 : 23840.dasm (15.04 % of base)
          68 : 24093.dasm (16.50 % of base)
          68 : 4245.dasm (2.73 % of base)
          64 : 4284.dasm (2.28 % of base)
          64 : 6340.dasm (2.52 % of base)
          44 : 1615.dasm (8.59 % of base)
          40 : 14041.dasm (4.26 % of base)
           8 : 19684.dasm (0.36 % of base)

Top file improvements (bytes):
        -128 : 10719.dasm (-3.64 % of base)
         -80 : 3681.dasm (-1.64 % of base)
         -56 : 947.dasm (-21.21 % of base)
         -48 : 4392.dasm (-10.53 % of base)
         -44 : 20778.dasm (-16.18 % of base)
         -44 : 4361.dasm (-4.60 % of base)
         -40 : 18110.dasm (-12.50 % of base)
         -40 : 16871.dasm (-4.81 % of base)
         -40 : 19304.dasm (-8.06 % of base)
         -40 : 5496.dasm (-9.26 % of base)
         -36 : 20641.dasm (-15.00 % of base)
         -28 : 11585.dasm (-2.13 % of base)
         -28 : 18640.dasm (-15.91 % of base)
         -28 : 11606.dasm (-6.48 % of base)
         -28 : 16258.dasm (-21.88 % of base)
         -28 : 17302.dasm (-4.27 % of base)
         -28 : 3287.dasm (-25.93 % of base)
         -28 : 687.dasm (-28.00 % of base)
         -28 : 6886.dasm (-12.28 % of base)
         -28 : 3049.dasm (-46.67 % of base)

62 total files with Code Size differences (41 improved, 21 regressed), 5 unchanged.

Top method regressions (bytes):
         140 (7.94 % of base) : 22058.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
         140 (36.46 % of base) : 20020.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          80 (3.05 % of base) : 4322.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (2.73 % of base) : 4245.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          68 (17.35 % of base) : 23387.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (15.32 % of base) : 23493.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (15.04 % of base) : 23840.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (16.50 % of base) : 24093.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (14.66 % of base) : 24294.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.41 % of base) : 24306.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (7.69 % of base) : 14932.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 15109.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          68 (10.90 % of base) : 10654.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (11.26 % of base) : 11637.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.43 % of base) : 14368.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          64 (2.28 % of base) : 4284.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 6340.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          44 (8.59 % of base) : 1615.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
          40 (4.26 % of base) : 14041.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
           8 (0.36 % of base) : 19684.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (bytes):
        -128 (-3.64 % of base) : 10719.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -80 (-1.64 % of base) : 3681.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -56 (-21.21 % of base) : 947.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -48 (-10.53 % of base) : 4392.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -44 (-16.18 % of base) : 20778.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-4.60 % of base) : 4361.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -40 (-4.81 % of base) : 16871.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 18110.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 19304.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -40 (-9.26 % of base) : 5496.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -36 (-15.00 % of base) : 20641.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -28 (-4.27 % of base) : 17302.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -28 (-15.91 % of base) : 18640.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -28 (-12.28 % of base) : 6886.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[System.__Canon]:add__onChange(System.Action`2[System.__Canon,System.__Canon]):this (FullOpts)
         -28 (-21.88 % of base) : 16258.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -28 (-2.13 % of base) : 11585.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
         -28 (-20.59 % of base) : 8954.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 687.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-6.48 % of base) : 11606.dasm - System.Collections.Generic.Dictionary`2[int,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -28 (-25.93 % of base) : 3287.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)

Top method regressions (percentages):
         140 (36.46 % of base) : 20020.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          68 (17.35 % of base) : 23387.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          68 (16.50 % of base) : 24093.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          68 (15.32 % of base) : 23493.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          68 (15.04 % of base) : 23840.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          68 (14.66 % of base) : 24294.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          68 (14.41 % of base) : 24306.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          68 (11.26 % of base) : 11637.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          68 (10.90 % of base) : 10654.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          68 (10.43 % of base) : 14368.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          44 (8.59 % of base) : 1615.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
         140 (7.94 % of base) : 22058.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
          68 (7.69 % of base) : 14932.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          68 (7.20 % of base) : 15109.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          40 (4.26 % of base) : 14041.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          80 (3.05 % of base) : 4322.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          68 (2.73 % of base) : 4245.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          64 (2.52 % of base) : 6340.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          64 (2.28 % of base) : 4284.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
           4 (0.40 % of base) : 1020.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 3049.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 4731.dasm - System.Collections.ContainsKeyTrue`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 687.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 3287.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -24 (-22.22 % of base) : 16410.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -28 (-21.88 % of base) : 16258.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -56 (-21.21 % of base) : 947.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-20.59 % of base) : 8954.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -20 (-20.00 % of base) : 11280.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -20 (-17.86 % of base) : 17081.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -24 (-16.67 % of base) : 22879.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
         -24 (-16.22 % of base) : 10722.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:Add(System.__Canon,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-16.22 % of base) : 10488.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)
         -44 (-16.18 % of base) : 20778.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-16.00 % of base) : 6422.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -28 (-15.91 % of base) : 18640.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (FullOpts)
         -36 (-15.00 % of base) : 20641.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -24 (-14.63 % of base) : 15107.dasm - System.Text.Json.Serialization.Converters.IDictionaryConverter`1[System.__Canon]:Add(System.String,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -24 (-14.29 % of base) : 7166.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -24 (-13.33 % of base) : 19989.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (FullOpts)


benchmarks.run_pgo.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 37042776 (overridden on cmd)
Total bytes of diff: 37056676 (overridden on cmd)
Total bytes of delta: 13900 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         140 : 76720.dasm (7.94 % of base)
          88 : 84258.dasm (6.38 % of base)
          76 : 23716.dasm (3.33 % of base)
          76 : 27889.dasm (3.33 % of base)
          76 : 43929.dasm (3.33 % of base)
          76 : 49200.dasm (3.33 % of base)
          76 : 70399.dasm (3.33 % of base)
          76 : 77628.dasm (9.60 % of base)
          76 : 82526.dasm (9.60 % of base)
          76 : 95290.dasm (3.33 % of base)
          76 : 89963.dasm (3.33 % of base)
          76 : 11917.dasm (3.33 % of base)
          76 : 90621.dasm (9.60 % of base)
          68 : 23772.dasm (8.81 % of base)
          68 : 29416.dasm (8.59 % of base)
          68 : 44551.dasm (8.59 % of base)
          68 : 46120.dasm (8.59 % of base)
          68 : 65875.dasm (8.59 % of base)
          68 : 65996.dasm (8.59 % of base)
          68 : 82268.dasm (8.59 % of base)

Top file improvements (bytes):
        -396 : 63735.dasm (-8.60 % of base)
         -56 : 68374.dasm (-5.32 % of base)
         -56 : 7760.dasm (-11.97 % of base)
         -48 : 69486.dasm (-14.63 % of base)
         -48 : 69541.dasm (-8.39 % of base)
         -44 : 15161.dasm (-9.91 % of base)
         -32 : 24054.dasm (-6.35 % of base)
         -32 : 15138.dasm (-6.35 % of base)
         -28 : 12781.dasm (-3.30 % of base)
         -28 : 12777.dasm (-3.30 % of base)
         -28 : 20053.dasm (-5.15 % of base)
         -28 : 20537.dasm (-3.30 % of base)
         -28 : 23497.dasm (-5.15 % of base)
         -28 : 23965.dasm (-3.30 % of base)
         -28 : 24453.dasm (-3.30 % of base)
         -28 : 24489.dasm (-5.15 % of base)
         -28 : 24753.dasm (-5.15 % of base)
         -28 : 25161.dasm (-5.15 % of base)
         -28 : 63696.dasm (-8.43 % of base)
         -28 : 63706.dasm (-9.46 % of base)

76 total files with Code Size differences (35 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         140 (7.94 % of base) : 76720.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          88 (6.38 % of base) : 84258.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          76 (3.33 % of base) : 23716.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 27889.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 43929.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 49200.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 70399.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 95290.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 89963.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (3.33 % of base) : 11917.dasm - System.Diagnostics.Tracing.EventSource:GetCustomAttributeHelper(System.Reflection.MemberInfo,System.Type,int):System.Attribute (Tier1)
          76 (9.60 % of base) : 77628.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          76 (9.60 % of base) : 82526.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          76 (9.60 % of base) : 90621.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.81 % of base) : 23772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 29416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 44551.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 46120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 65875.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 65996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 82268.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)

Top method improvements (bytes):
        -396 (-8.60 % of base) : 63735.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -56 (-5.32 % of base) : 68374.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
         -56 (-11.97 % of base) : 7760.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -48 (-14.63 % of base) : 69486.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -48 (-8.39 % of base) : 69541.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.91 % of base) : 15161.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -32 (-6.35 % of base) : 24054.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -32 (-6.35 % of base) : 15138.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -28 (-9.46 % of base) : 63706.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-8.43 % of base) : 63696.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 7934.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-5.69 % of base) : 68160.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -28 (-21.88 % of base) : 84511.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -28 (-3.30 % of base) : 12781.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 12777.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20053.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 20537.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 23497.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 23965.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 24453.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)

Top method regressions (percentages):
          20 (19.23 % of base) : 88866.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (Tier1)
          52 (11.30 % of base) : 40635.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 84222.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 92585.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 48813.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 70946.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 77205.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          48 (10.43 % of base) : 86149.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          76 (9.60 % of base) : 77628.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          76 (9.60 % of base) : 82526.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          76 (9.60 % of base) : 90621.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          56 (9.40 % of base) : 27678.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 51382.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 70134.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 74170.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          56 (9.40 % of base) : 91564.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1-OSR)
          68 (8.81 % of base) : 23772.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 29416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 44551.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          68 (8.59 % of base) : 46120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 7934.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-21.88 % of base) : 84511.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 63039.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -48 (-14.63 % of base) : 69486.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.64 % of base) : 68452.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -56 (-11.97 % of base) : 7760.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -24 (-10.71 % of base) : 69043.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-9.91 % of base) : 15161.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -28 (-9.46 % of base) : 63706.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-9.09 % of base) : 79617.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsDescendantOfIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 76567.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
         -24 (-9.09 % of base) : 78134.dasm - PerfLabTests.CastingPerf2.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
        -396 (-8.60 % of base) : 63735.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -28 (-8.43 % of base) : 63696.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -48 (-8.39 % of base) : 69541.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-6.76 % of base) : 68656.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
         -20 (-6.41 % of base) : 19076.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -32 (-6.35 % of base) : 24054.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -32 (-6.35 % of base) : 15138.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -28 (-5.69 % of base) : 68160.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)


benchmarks.run_tiered.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14982116 (overridden on cmd)
Total bytes of diff: 14981376 (overridden on cmd)
Total bytes of delta: -740 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 44918.dasm (8.16 % of base)
          12 : 29824.dasm (7.32 % of base)
           4 : 14283.dasm (0.40 % of base)

Top file improvements (bytes):
         -56 : 15070.dasm (-21.21 % of base)
         -52 : 1999.dasm (-12.75 % of base)
         -44 : 42033.dasm (-16.18 % of base)
         -44 : 5998.dasm (-4.60 % of base)
         -40 : 40223.dasm (-12.50 % of base)
         -36 : 41679.dasm (-15.00 % of base)
         -32 : 20216.dasm (-17.78 % of base)
         -28 : 23327.dasm (-3.41 % of base)
         -28 : 38893.dasm (-4.27 % of base)
         -28 : 40219.dasm (-15.91 % of base)
         -28 : 38991.dasm (-12.73 % of base)
         -28 : 8320.dasm (-28.00 % of base)
         -28 : 18850.dasm (-21.88 % of base)
         -28 : 24535.dasm (-25.93 % of base)
         -24 : 1039.dasm (-4.51 % of base)
         -24 : 19659.dasm (-3.31 % of base)
         -24 : 6014.dasm (-6.45 % of base)
         -24 : 21777.dasm (-1.80 % of base)
         -24 : 39209.dasm (-17.14 % of base)
         -24 : 40357.dasm (-12.00 % of base)

40 total files with Code Size differences (37 improved, 3 regressed), 1 unchanged.

Top method regressions (bytes):
         140 (8.16 % of base) : 44918.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 29824.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
           4 (0.40 % of base) : 14283.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)

Top method improvements (bytes):
         -56 (-21.21 % of base) : 15070.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -52 (-12.75 % of base) : 1999.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -44 (-16.18 % of base) : 42033.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -44 (-4.60 % of base) : 5998.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (Tier1)
         -40 (-12.50 % of base) : 40223.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41679.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -32 (-17.78 % of base) : 20216.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-4.27 % of base) : 38893.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -28 (-12.73 % of base) : 38991.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 40219.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -28 (-28.00 % of base) : 8320.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-21.88 % of base) : 18850.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -28 (-25.93 % of base) : 24535.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -28 (-3.41 % of base) : 23327.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 40077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 39209.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -24 (-12.00 % of base) : 40357.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -24 (-3.31 % of base) : 19659.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
         -24 (-6.45 % of base) : 6014.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -24 (-5.56 % of base) : 20472.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
         140 (8.16 % of base) : 44918.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSimpleStructWithProperties:Read2_SimpleStructWithProperties(ubyte):MicroBenchmarks.Serializers.SimpleStructWithProperties:this (Tier0-FullOpts)
          12 (7.32 % of base) : 29824.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
           4 (0.40 % of base) : 14283.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (Tier1)

Top method improvements (percentages):
         -28 (-28.00 % of base) : 8320.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -28 (-25.93 % of base) : 24535.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -28 (-21.88 % of base) : 18850.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -56 (-21.21 % of base) : 15070.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -20 (-20.00 % of base) : 21929.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -32 (-17.78 % of base) : 20216.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -24 (-17.14 % of base) : 39209.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -44 (-16.18 % of base) : 42033.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-15.91 % of base) : 40219.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -36 (-15.00 % of base) : 41679.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-13.95 % of base) : 40077.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -52 (-12.75 % of base) : 1999.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -28 (-12.73 % of base) : 38991.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -40 (-12.50 % of base) : 40223.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -24 (-12.00 % of base) : 40357.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -24 (-11.76 % of base) : 28928.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -16 (-7.84 % of base) : 42253.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -24 (-6.45 % of base) : 6014.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -20 (-6.41 % of base) : 7913.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -20 (-5.81 % of base) : 2003.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)

40 total methods with Code Size differences (37 improved, 3 regressed).


coreclr_tests.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 464848280 (overridden on cmd)
Total bytes of diff: 465023424 (overridden on cmd)
Total bytes of delta: 175144 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        8032 : 292960.dasm (39.29 % of base)
        7992 : 291895.dasm (35.97 % of base)
        7900 : 291655.dasm (36.59 % of base)
        7712 : 291862.dasm (36.10 % of base)
        7708 : 292559.dasm (36.85 % of base)
        7576 : 292929.dasm (34.44 % of base)
        7484 : 293585.dasm (34.70 % of base)
        7368 : 293189.dasm (34.63 % of base)
        7336 : 291830.dasm (32.59 % of base)
        7204 : 293035.dasm (32.55 % of base)
        7044 : 293780.dasm (31.38 % of base)
        6996 : 291764.dasm (30.36 % of base)
        6832 : 292527.dasm (29.83 % of base)
        6796 : 293748.dasm (28.89 % of base)
        6788 : 293417.dasm (27.01 % of base)
        6784 : 291929.dasm (28.44 % of base)
        6636 : 291798.dasm (28.81 % of base)
        6588 : 292991.dasm (29.47 % of base)
        6540 : 293657.dasm (26.79 % of base)
        6504 : 292272.dasm (28.05 % of base)

Top file improvements (bytes):
         -80 : 390.dasm (-5.81 % of base)
         -64 : 248813.dasm (-38.10 % of base)
         -64 : 242342.dasm (-26.23 % of base)
         -56 : 478973.dasm (-19.44 % of base)
         -56 : 448392.dasm (-21.21 % of base)
         -52 : 195.dasm (-4.22 % of base)
         -52 : 204676.dasm (-5.06 % of base)
         -52 : 389.dasm (-4.30 % of base)
         -52 : 583290.dasm (-12.75 % of base)
         -48 : 179897.dasm (-21.82 % of base)
         -48 : 204702.dasm (-10.53 % of base)
         -44 : 187087.dasm (-13.41 % of base)
         -44 : 180443.dasm (-2.63 % of base)
         -44 : 187085.dasm (-23.40 % of base)
         -44 : 203511.dasm (-16.18 % of base)
         -44 : 187064.dasm (-13.41 % of base)
         -44 : 187063.dasm (-23.40 % of base)
         -40 : 201465.dasm (-12.50 % of base)
         -40 : 200028.dasm (-4.81 % of base)
         -40 : 202675.dasm (-8.06 % of base)

66 total files with Code Size differences (40 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
        8032 (39.29 % of base) : 292960.dasm - Generated938:CalliTest() (FullOpts)
        7992 (35.97 % of base) : 291895.dasm - Generated907:CalliTest() (FullOpts)
        7900 (36.59 % of base) : 291655.dasm - Generated900:CalliTest() (FullOpts)
        7712 (36.10 % of base) : 291862.dasm - Generated906:CalliTest() (FullOpts)
        7708 (36.85 % of base) : 292559.dasm - Generated926:CalliTest() (FullOpts)
        7576 (34.44 % of base) : 292929.dasm - Generated937:CalliTest() (FullOpts)
        7484 (34.70 % of base) : 293585.dasm - Generated957:CalliTest() (FullOpts)
        7368 (34.63 % of base) : 293189.dasm - Generated945:CalliTest() (FullOpts)
        7336 (32.59 % of base) : 291830.dasm - Generated905:CalliTest() (FullOpts)
        7204 (32.55 % of base) : 293035.dasm - Generated940:CalliTest() (FullOpts)
        7044 (31.38 % of base) : 293780.dasm - Generated963:CalliTest() (FullOpts)
        6996 (30.36 % of base) : 291764.dasm - Generated903:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 292527.dasm - Generated925:CalliTest() (FullOpts)
        6796 (28.89 % of base) : 293748.dasm - Generated962:CalliTest() (FullOpts)
        6788 (27.01 % of base) : 293417.dasm - Generated952:CalliTest() (FullOpts)
        6784 (28.44 % of base) : 291929.dasm - Generated908:CalliTest() (FullOpts)
        6636 (28.81 % of base) : 291798.dasm - Generated904:CalliTest() (FullOpts)
        6588 (29.47 % of base) : 292991.dasm - Generated939:CalliTest() (FullOpts)
        6540 (26.79 % of base) : 293657.dasm - Generated959:CalliTest() (FullOpts)
        6504 (28.05 % of base) : 292272.dasm - Generated918:CalliTest() (FullOpts)

Top method improvements (bytes):
         -80 (-5.81 % of base) : 390.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -64 (-26.23 % of base) : 242342.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -64 (-38.10 % of base) : 248813.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -56 (-19.44 % of base) : 478973.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -56 (-21.21 % of base) : 448392.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -52 (-4.30 % of base) : 389.dasm - InterlockedCompareExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-4.22 % of base) : 195.dasm - InterlockedExchange1:PosTest1[System.__Canon]():ubyte:this (FullOpts)
         -52 (-5.06 % of base) : 204676.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -52 (-12.75 % of base) : 583290.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -48 (-10.53 % of base) : 204702.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -48 (-21.82 % of base) : 179897.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -44 (-16.18 % of base) : 203511.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-23.40 % of base) : 187085.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 187087.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-23.40 % of base) : 187063.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-13.41 % of base) : 187064.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon](int):this (FullOpts)
         -44 (-2.63 % of base) : 180443.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-4.81 % of base) : 200028.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -40 (-12.50 % of base) : 201465.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 202675.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)

Top method regressions (percentages):
          60 (300.00 % of base) : 197439.dasm - T:TestEntryPoint():int (FullOpts)
        8032 (39.29 % of base) : 292960.dasm - Generated938:CalliTest() (FullOpts)
        7708 (36.85 % of base) : 292559.dasm - Generated926:CalliTest() (FullOpts)
         280 (36.84 % of base) : 563220.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
        7900 (36.59 % of base) : 291655.dasm - Generated900:CalliTest() (FullOpts)
         140 (36.46 % of base) : 180094.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](long):ComWrappersTests.Common.VtblPtr (FullOpts)
        7712 (36.10 % of base) : 291862.dasm - Generated906:CalliTest() (FullOpts)
        7992 (35.97 % of base) : 291895.dasm - Generated907:CalliTest() (FullOpts)
        7484 (34.70 % of base) : 293585.dasm - Generated957:CalliTest() (FullOpts)
        7368 (34.63 % of base) : 293189.dasm - Generated945:CalliTest() (FullOpts)
        7576 (34.44 % of base) : 292929.dasm - Generated937:CalliTest() (FullOpts)
        7336 (32.59 % of base) : 291830.dasm - Generated905:CalliTest() (FullOpts)
        7204 (32.55 % of base) : 293035.dasm - Generated940:CalliTest() (FullOpts)
        7044 (31.38 % of base) : 293780.dasm - Generated963:CalliTest() (FullOpts)
        6996 (30.36 % of base) : 291764.dasm - Generated903:CalliTest() (FullOpts)
        6832 (29.83 % of base) : 292527.dasm - Generated925:CalliTest() (FullOpts)
        6588 (29.47 % of base) : 292991.dasm - Generated939:CalliTest() (FullOpts)
        6796 (28.89 % of base) : 293748.dasm - Generated962:CalliTest() (FullOpts)
        6636 (28.81 % of base) : 291798.dasm - Generated904:CalliTest() (FullOpts)
        6784 (28.44 % of base) : 291929.dasm - Generated908:CalliTest() (FullOpts)

Top method improvements (percentages):
         -24 (-42.86 % of base) : 218370.dasm - CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
         -24 (-40.00 % of base) : 218388.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -24 (-40.00 % of base) : 218217.dasm - Program:CastToArray(System.Object):int[] (Tier1)
         -64 (-38.10 % of base) : 248813.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -24 (-28.57 % of base) : 314603.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-28.00 % of base) : 319844.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -64 (-26.23 % of base) : 242342.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -44 (-23.40 % of base) : 187085.dasm - MyCounter[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -44 (-23.40 % of base) : 187063.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)
         -48 (-21.82 % of base) : 179897.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-21.21 % of base) : 314755.dasm - Program+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -56 (-21.21 % of base) : 448392.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -24 (-20.00 % of base) : 296081.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -20 (-20.00 % of base) : 254947.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -56 (-19.44 % of base) : 478973.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -28 (-18.92 % of base) : 183061.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -28 (-18.92 % of base) : 250153.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -20 (-17.86 % of base) : 200238.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -32 (-17.78 % of base) : 478654.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -28 (-17.50 % of base) : 218361.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)


libraries.crossgen2.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59064704 (overridden on cmd)
Total bytes of diff: 59025636 (overridden on cmd)
Total bytes of delta: -39068 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 136989.dasm (1.09 % of base)
           4 : 165941.dasm (1.09 % of base)
           4 : 240131.dasm (1.09 % of base)

Top file improvements (bytes):
        -384 : 242138.dasm (-15.76 % of base)
        -360 : 242137.dasm (-15.68 % of base)
        -336 : 242135.dasm (-15.58 % of base)
        -320 : 119456.dasm (-13.91 % of base)
        -320 : 142925.dasm (-20.36 % of base)
        -312 : 242133.dasm (-15.48 % of base)
        -288 : 242131.dasm (-15.35 % of base)
        -264 : 242129.dasm (-15.21 % of base)
        -240 : 242127.dasm (-15.04 % of base)
        -216 : 242125.dasm (-14.84 % of base)
        -216 : 33411.dasm (-17.14 % of base)
        -216 : 33412.dasm (-16.77 % of base)
        -192 : 242123.dasm (-14.59 % of base)
        -176 : 29845.dasm (-47.31 % of base)
        -168 : 242121.dasm (-14.29 % of base)
        -156 : 29860.dasm (-40.21 % of base)
        -144 : 241905.dasm (-9.00 % of base)
        -144 : 242119.dasm (-13.90 % of base)
        -140 : 32328.dasm (-14.71 % of base)
        -136 : 242095.dasm (-10.30 % of base)

68 total files with Code Size differences (65 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (1.09 % of base) : 136989.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 165941.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 240131.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (bytes):
        -384 (-15.76 % of base) : 242138.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -360 (-15.68 % of base) : 242137.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -336 (-15.58 % of base) : 242135.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -320 (-13.91 % of base) : 119456.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-20.36 % of base) : 142925.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -312 (-15.48 % of base) : 242133.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -288 (-15.35 % of base) : 242131.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -264 (-15.21 % of base) : 242129.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -240 (-15.04 % of base) : 242127.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-14.84 % of base) : 242125.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -216 (-17.14 % of base) : 33411.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -216 (-16.77 % of base) : 33412.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -192 (-14.59 % of base) : 242123.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -176 (-47.31 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -168 (-14.29 % of base) : 242121.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -156 (-40.21 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -144 (-13.90 % of base) : 242119.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -144 (-9.00 % of base) : 241905.dasm - RailwaySharp.ErrorHandling.Trial+<>c__13`2[System.__Canon,System.__Canon]:<Collect>b__13_0(RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon]:this (FullOpts)
        -140 (-14.71 % of base) : 32328.dasm - Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Equals(Microsoft.FSharp.Core.FSharpChoice`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]):ubyte:this (FullOpts)
        -136 (-10.30 % of base) : 242095.dasm - RailwaySharp.ErrorHandling.Trial:Apply[System.__Canon,System.__Canon,System.__Canon](RailwaySharp.ErrorHandling.Result`2[System.Func`2[System.__Canon,System.__Canon],System.__Canon],RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]):RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon] (FullOpts)

Top method regressions (percentages):
           4 (1.09 % of base) : 136989.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 165941.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)
           4 (1.09 % of base) : 240131.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:System.Collections.IList.Add(System.Object):int:this (FullOpts)

Top method improvements (percentages):
        -176 (-47.31 % of base) : 29845.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
        -156 (-40.21 % of base) : 29860.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -40 (-35.71 % of base) : 241629.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -36 (-34.62 % of base) : 33857.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 33380.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-34.62 % of base) : 177210.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -36 (-33.33 % of base) : 119520.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 138046.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 166993.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -36 (-33.33 % of base) : 229839.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -36 (-32.14 % of base) : 199307.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -36 (-32.14 % of base) : 214266.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
         -32 (-30.77 % of base) : 242069.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -32 (-30.77 % of base) : 177232.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -48 (-28.57 % of base) : 176534.dasm - System.Text.Json.Serialization.Converters.ArrayConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -36 (-28.12 % of base) : 220314.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore+<>c[System.__Canon]:<ProcessAsyncIfNecessary_Slow>b__30_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 220166.dasm - System.Threading.Tasks.Dataflow.BatchedJoinBlock`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<.ctor>b__7_4(System.Object,System.Threading.CancellationToken):this (FullOpts)
         -36 (-28.12 % of base) : 220341.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1+<>c[System.__Canon,System.__Canon]:<OfferAsyncIfNecessary>b__29_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 220369.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1+<>c[System.__Canon]:<CompleteBlockIfPossible_Slow>b__49_0(System.Object):this (FullOpts)
         -36 (-28.12 % of base) : 220250.dasm - System.Threading.Tasks.Dataflow.Internal.SpscTargetCore`1+<>c[System.__Canon]:<ScheduleConsumerIfNecessary>b__13_0(System.Object):this (FullOpts)


libraries.pmi.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59138872 (overridden on cmd)
Total bytes of diff: 59122940 (overridden on cmd)
Total bytes of delta: -15932 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 142827.dasm (61.40 % of base)
         140 : 142830.dasm (61.40 % of base)
         140 : 142829.dasm (61.40 % of base)
         140 : 142832.dasm (61.40 % of base)
         140 : 293382.dasm (9.04 % of base)
         140 : 142828.dasm (61.40 % of base)
         140 : 142831.dasm (61.40 % of base)
         140 : 266609.dasm (19.77 % of base)
         132 : 11804.dasm (31.13 % of base)
         132 : 11807.dasm (31.13 % of base)
         132 : 11808.dasm (31.13 % of base)
         132 : 11805.dasm (31.13 % of base)
         132 : 11803.dasm (31.13 % of base)
         132 : 11806.dasm (31.13 % of base)
         116 : 113645.dasm (4.72 % of base)
          96 : 179835.dasm (2.39 % of base)
          72 : 175352.dasm (1.35 % of base)
          72 : 106806.dasm (2.65 % of base)
          64 : 135179.dasm (2.55 % of base)
          64 : 166450.dasm (2.55 % of base)

Top file improvements (bytes):
        -600 : 243372.dasm (-25.17 % of base)
        -320 : 139609.dasm (-16.74 % of base)
        -320 : 91699.dasm (-19.00 % of base)
        -264 : 291220.dasm (-36.46 % of base)
        -220 : 59092.dasm (-8.12 % of base)
        -204 : 137451.dasm (-6.91 % of base)
        -204 : 168693.dasm (-6.91 % of base)
        -192 : 95359.dasm (-6.98 % of base)
        -184 : 29680.dasm (-23.00 % of base)
        -184 : 29687.dasm (-22.22 % of base)
        -168 : 205695.dasm (-42.00 % of base)
        -168 : 205050.dasm (-8.27 % of base)
        -132 : 205697.dasm (-5.91 % of base)
        -120 : 29844.dasm (-18.99 % of base)
        -120 : 29853.dasm (-18.29 % of base)
        -116 : 12041.dasm (-11.28 % of base)
        -104 : 144807.dasm (-1.81 % of base)
        -104 : 173887.dasm (-19.40 % of base)
         -80 : 219212.dasm (-1.70 % of base)
         -76 : 174876.dasm (-6.64 % of base)

79 total files with Code Size differences (53 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
         140 (61.40 % of base) : 142830.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
         140 (61.40 % of base) : 142829.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
         140 (61.40 % of base) : 142832.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
         140 (61.40 % of base) : 142828.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
         140 (61.40 % of base) : 142831.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
         140 (61.40 % of base) : 142827.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
         140 (19.77 % of base) : 266609.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         140 (9.04 % of base) : 293382.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         132 (31.13 % of base) : 11806.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         132 (31.13 % of base) : 11805.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         132 (31.13 % of base) : 11808.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         132 (31.13 % of base) : 11804.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         132 (31.13 % of base) : 11807.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         132 (31.13 % of base) : 11803.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         116 (4.72 % of base) : 113645.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
          96 (2.39 % of base) : 179835.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
          72 (2.65 % of base) : 106806.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          72 (1.35 % of base) : 175352.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
          64 (2.55 % of base) : 135179.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          64 (2.55 % of base) : 166450.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 243372.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -320 (-16.74 % of base) : 139609.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -320 (-19.00 % of base) : 91699.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -264 (-36.46 % of base) : 291220.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -220 (-8.12 % of base) : 59092.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -204 (-6.91 % of base) : 168693.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -204 (-6.91 % of base) : 137451.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -192 (-6.98 % of base) : 95359.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -184 (-23.00 % of base) : 29680.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -184 (-22.22 % of base) : 29687.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -168 (-8.27 % of base) : 205050.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -168 (-42.00 % of base) : 205695.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -132 (-5.91 % of base) : 205697.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
        -120 (-18.29 % of base) : 29853.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -120 (-18.99 % of base) : 29844.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
        -116 (-11.28 % of base) : 12041.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
        -104 (-1.81 % of base) : 144807.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
        -104 (-19.40 % of base) : 173887.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -80 (-1.70 % of base) : 219212.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -76 (-6.64 % of base) : 174876.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)

Top method regressions (percentages):
         140 (61.40 % of base) : 142830.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[double](double):System.Collections.Generic.IList`1[double] (FullOpts)
         140 (61.40 % of base) : 142829.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[int](int):System.Collections.Generic.IList`1[int] (FullOpts)
         140 (61.40 % of base) : 142832.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[long](long):System.Collections.Generic.IList`1[long] (FullOpts)
         140 (61.40 % of base) : 142828.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[short](short):System.Collections.Generic.IList`1[short] (FullOpts)
         140 (61.40 % of base) : 142831.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]] (FullOpts)
         140 (61.40 % of base) : 142827.dasm - Newtonsoft.Json.Utilities.EnumUtils:GetFlagsValues[ubyte](ubyte):System.Collections.Generic.IList`1[ubyte] (FullOpts)
         132 (31.13 % of base) : 11806.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         132 (31.13 % of base) : 11805.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         132 (31.13 % of base) : 11808.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         132 (31.13 % of base) : 11804.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         132 (31.13 % of base) : 11807.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         132 (31.13 % of base) : 11803.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          44 (22.45 % of base) : 287936.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         140 (19.77 % of base) : 266609.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
          44 (12.79 % of base) : 287901.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          44 (10.09 % of base) : 287911.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          48 (9.23 % of base) : 287618.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         140 (9.04 % of base) : 293382.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          40 (7.41 % of base) : 302798.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
          44 (6.55 % of base) : 287650.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 29403.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 216587.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
        -168 (-42.00 % of base) : 205695.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -264 (-36.46 % of base) : 291220.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
         -72 (-34.62 % of base) : 205616.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 248153.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -24 (-31.58 % of base) : 255776.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 224737.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 178762.dasm - System.Data.Common.SqlUdtStorage:SetStorage(System.Object,System.Collections.BitArray):this (FullOpts)
         -32 (-28.57 % of base) : 12356.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 302602.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 302616.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 142512.dasm - Newtonsoft.Json.Utilities.CollectionWrapper`1[ubyte]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
         -32 (-27.59 % of base) : 231476.dasm - Microsoft.Extensions.Hosting.Internal.ConfigureContainerAdapter`1[System.__Canon]:ConfigureContainer(Microsoft.Extensions.Hosting.HostBuilderContext,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 218645.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.__Canon]:<SetSetter>b__0(System.Object,System.Object):this (FullOpts)
         -32 (-27.59 % of base) : 218654.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.__Canon]:<SetShouldSerialize>b__0(System.Object,System.Object):ubyte:this (FullOpts)
         -24 (-27.27 % of base) : 188386.dasm - System.Runtime.Serialization.DataNode`1[System.__Canon]:set_Value(System.Object):this (FullOpts)
         -24 (-27.27 % of base) : 188271.dasm - System.Runtime.Serialization.KeyValue`2[System.__Canon,System.Nullable`1[int]]:System.Runtime.Serialization.IKeyValue.set_Key(System.Object):this (FullOpts)
         -28 (-26.92 % of base) : 246301.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -28 (-26.92 % of base) : 202887.dasm - System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 294230544 (overridden on cmd)
Total bytes of diff: 294260784 (overridden on cmd)
Total bytes of delta: 30240 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         540 : 399179.dasm (15.66 % of base)
         344 : 399756.dasm (13.17 % of base)
         340 : 399223.dasm (13.91 % of base)
         336 : 398278.dasm (9.13 % of base)
         332 : 398721.dasm (14.43 % of base)
         332 : 399257.dasm (14.85 % of base)
         328 : 398005.dasm (11.28 % of base)
         312 : 237953.dasm (2.27 % of base)
         312 : 122520.dasm (2.43 % of base)
         308 : 642549.dasm (2.24 % of base)
         300 : 120806.dasm (2.18 % of base)
         300 : 337293.dasm (2.22 % of base)
         292 : 637115.dasm (2.25 % of base)
         292 : 238768.dasm (2.12 % of base)
         268 : 490254.dasm (1.97 % of base)
         268 : 445495.dasm (1.99 % of base)
         260 : 355455.dasm (1.90 % of base)
         260 : 458386.dasm (1.94 % of base)
         256 : 168753.dasm (1.89 % of base)
         252 : 407314.dasm (2.02 % of base)

Top file improvements (bytes):
        -356 : 158015.dasm (-7.69 % of base)
        -132 : 575702.dasm (-2.78 % of base)
        -104 : 414132.dasm (-4.77 % of base)
         -84 : 523342.dasm (-4.45 % of base)
         -84 : 49370.dasm (-4.79 % of base)
         -80 : 575270.dasm (-0.90 % of base)
         -80 : 505898.dasm (-6.37 % of base)
         -72 : 284171.dasm (-3.59 % of base)
         -68 : 635569.dasm (-1.48 % of base)
         -68 : 506681.dasm (-0.64 % of base)
         -64 : 195680.dasm (-2.62 % of base)
         -64 : 311410.dasm (-21.05 % of base)
         -64 : 461414.dasm (-16.16 % of base)
         -60 : 349119.dasm (-1.62 % of base)
         -60 : 157993.dasm (-1.41 % of base)
         -60 : 424573.dasm (-5.21 % of base)
         -60 : 428221.dasm (-2.02 % of base)
         -60 : 599532.dasm (-1.51 % of base)
         -60 : 599535.dasm (-2.50 % of base)
         -56 : 80453.dasm (-11.97 % of base)

87 total files with Code Size differences (45 improved, 42 regressed), 20 unchanged.

Top method regressions (bytes):
         540 (15.66 % of base) : 399179.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         344 (13.17 % of base) : 399756.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (Tier0-FullOpts)
         340 (13.91 % of base) : 399223.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         336 (9.13 % of base) : 398278.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
         332 (14.43 % of base) : 398721.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         332 (14.85 % of base) : 399257.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         328 (11.28 % of base) : 398005.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         312 (2.27 % of base) : 237953.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         312 (2.43 % of base) : 122520.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         308 (2.24 % of base) : 642549.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         300 (2.18 % of base) : 120806.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         300 (2.22 % of base) : 337293.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         292 (2.25 % of base) : 637115.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         292 (2.12 % of base) : 238768.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         268 (1.97 % of base) : 490254.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         268 (1.99 % of base) : 445495.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         260 (1.90 % of base) : 355455.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         260 (1.94 % of base) : 458386.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         256 (1.89 % of base) : 168753.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         252 (2.02 % of base) : 407314.dasm - System.Xml.XPath.XPathNavigator:ComparePosition(System.Xml.XPath.XPathNavigator):int:this (Tier1)

Top method improvements (bytes):
        -356 (-7.69 % of base) : 158015.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
        -132 (-2.78 % of base) : 575702.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -104 (-4.77 % of base) : 414132.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitGlobalValues(System.Xml.Xsl.Qil.QilList):this (Tier1)
         -84 (-4.79 % of base) : 49370.dasm - Microsoft.CodeAnalysis.Host.Mef.MefWorkspaceServices:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -84 (-4.45 % of base) : 523342.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitExpression(System.Linq.Expressions.Expression,int):this (Tier1)
         -80 (-6.37 % of base) : 505898.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
         -80 (-0.90 % of base) : 575270.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
         -72 (-3.59 % of base) : 284171.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
         -68 (-0.64 % of base) : 506681.dasm - System.Security.Cryptography.X509Certificates.Tests.TestDataGenerator:MakeTestChain(System.ReadOnlySpan`1[System.Security.Cryptography.RSA],System.Span`1[System.Security.Cryptography.X509Certificates.X509Certificate2],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.Collections.Generic.IEnumerable`1[System.Security.Cryptography.X509Certificates.X509Extension],System.String) (Tier1)
         -68 (-1.48 % of base) : 635569.dasm - System.Threading.Tasks.Parallel+<>c__DisplayClass43_0`2[int,System.__Canon]:<PartitionerForEachWorker>b__1(byref,long,byref):this (Tier1)
         -64 (-21.05 % of base) : 311410.dasm - (dynamicClass):lambda_method1843(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -64 (-16.16 % of base) : 461414.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (Tier1)
         -64 (-2.62 % of base) : 195680.dasm - Xunit.Sdk.ReflectionAttributeInfo:GetNamedArgument[System.__Canon](System.String):System.__Canon:this (Tier1)
         -60 (-1.41 % of base) : 157993.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFieldAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
         -60 (-1.51 % of base) : 599532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (Tier1)
         -60 (-2.50 % of base) : 599535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:ConstraintTypesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
         -60 (-5.21 % of base) : 424573.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write31_XmlSchemaSimpleType(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleType,ubyte,ubyte):this (Tier1)
         -60 (-1.62 % of base) : 349119.dasm - System.Net.Sockets.SocketAsyncEventArgs+<<DnsConnectAsync>g__Core|112_0>d:MoveNext():this (Tier1)
         -60 (-2.02 % of base) : 428221.dasm - System.Xml.RwFactoryWriterTests.CXmlDriverEngine:ProcessIncludes(System.String[],System.String,System.Xml.Linq.XElement,OLEDB.Test.ModuleCore.MyDict`2[System.String,System.Object],System.Collections.IList):this (Tier1)
         -56 (-11.97 % of base) : 80453.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)

Top method regressions (percentages):
         188 (39.83 % of base) : 489416.dasm - System.Security.AccessControl.GenericAce:CreateFromBinaryForm(ubyte[],int):System.Security.AccessControl.GenericAce (Tier1-OSR)
         188 (39.83 % of base) : 489942.dasm - System.Security.AccessControl.GenericAce:CreateFromBinaryForm(ubyte[],int):System.Security.AccessControl.GenericAce (Tier1-OSR)
          48 (38.71 % of base) : 53766.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
         224 (29.17 % of base) : 418984.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
          24 (18.75 % of base) : 49256.dasm - Microsoft.CodeAnalysis.CompilationOptions:op_Equality(Microsoft.CodeAnalysis.CompilationOptions,Microsoft.CodeAnalysis.CompilationOptions):ubyte (Tier1)
          24 (18.75 % of base) : 83376.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
          24 (18.75 % of base) : 48475.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
         116 (18.24 % of base) : 484789.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
          16 (18.18 % of base) : 611981.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_UnderlyingConversions():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]:this (Tier1)
          36 (18.00 % of base) : 576160.dasm - System.Text.Json.JsonSerializer:ValidateInputType(System.Object,System.Type) (Tier1)
         132 (17.93 % of base) : 341389.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop+WinHttp+WINHTTP_ASYNC_RESULT](long):Interop+WinHttp+WINHTTP_ASYNC_RESULT (Tier1)
         140 (17.59 % of base) : 646569.dasm - System.Runtime.InteropServices.DynamicInterfaceCastableHelpers:GetInterfaceImplementation(System.Runtime.InteropServices.IDynamicInterfaceCastable,System.RuntimeType):System.RuntimeType (Tier1)
          24 (16.22 % of base) : 51685.dasm - Microsoft.CodeAnalysis.ParseOptions:op_Inequality(Microsoft.CodeAnalysis.ParseOptions,Microsoft.CodeAnalysis.ParseOptions):ubyte (Tier1)
         540 (15.66 % of base) : 399179.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
          20 (15.62 % of base) : 154917.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
         332 (14.85 % of base) : 399257.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          92 (14.47 % of base) : 415176.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
          52 (14.44 % of base) : 582655.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
         332 (14.43 % of base) : 398721.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          28 (14.29 % of base) : 522916.dasm - System.Reflection.MethodInfo:op_Equality(System.Reflection.MethodInfo,System.Reflection.MethodInfo):ubyte (Tier1)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 575455.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -48 (-30.77 % of base) : 523599.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -32 (-28.57 % of base) : 279406.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -32 (-28.57 % of base) : 116979.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -28 (-28.00 % of base) : 1378.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -40 (-25.00 % of base) : 89624.dasm - Microsoft.CodeAnalysis.DefaultTextDocumentServiceProvider:GetService[System.__Canon]():System.__Canon:this (Tier1)
         -24 (-23.08 % of base) : 598355.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -28 (-22.58 % of base) : 117277.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -40 (-22.22 % of base) : 310152.dasm - (dynamicClass):lambda_method493(System.Runtime.CompilerServices.Closure):System.Object (FullOpts)
         -56 (-22.22 % of base) : 342857.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -56 (-22.22 % of base) : 363362.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -56 (-22.22 % of base) : 367924.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -28 (-21.88 % of base) : 118531.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -28 (-21.88 % of base) : 51031.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -48 (-21.82 % of base) : 117791.dasm - Xunit.Sdk.AssertEqualityComparerAdapter`1[System.__Canon]:Equals(System.Object,System.Object):ubyte:this (Tier1)
         -64 (-21.05 % of base) : 311410.dasm - (dynamicClass):lambda_method1843(System.Runtime.CompilerServices.Closure):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -32 (-20.51 % of base) : 61414.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)
         -56 (-20.29 % of base) : 593108.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -56 (-20.29 % of base) : 276044.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -20 (-20.00 % of base) : 64613.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetMethodSymbolForMemberRef(System.Reflection.Metadata.MemberReferenceHandle,System.__Canon):System.__Canon:this (Tier1)


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 136411844 (overridden on cmd)
Total bytes of diff: 136397772 (overridden on cmd)
Total bytes of delta: -14072 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         672 : 172929.dasm (17.83 % of base)
         428 : 172877.dasm (12.23 % of base)
         368 : 173385.dasm (13.88 % of base)
         364 : 171996.dasm (12.13 % of base)
         360 : 172195.dasm (9.85 % of base)
         356 : 172989.dasm (14.69 % of base)
         356 : 171986.dasm (14.69 % of base)
         228 : 187093.dasm (16.81 % of base)
         176 : 142103.dasm (12.61 % of base)
         168 : 234926.dasm (7.62 % of base)
         164 : 172625.dasm (2.67 % of base)
         164 : 171937.dasm (2.67 % of base)
         164 : 172626.dasm (3.57 % of base)
         164 : 171938.dasm (3.57 % of base)
         160 : 172951.dasm (2.90 % of base)
         148 : 172801.dasm (3.75 % of base)
         144 : 117614.dasm (10.68 % of base)
         140 : 117593.dasm (22.15 % of base)
         140 : 117598.dasm (21.74 % of base)
         140 : 117635.dasm (22.58 % of base)

Top file improvements (bytes):
        -600 : 63006.dasm (-25.17 % of base)
        -384 : 173196.dasm (-15.79 % of base)
        -352 : 172080.dasm (-12.59 % of base)
        -304 : 173190.dasm (-12.38 % of base)
        -296 : 200619.dasm (-17.05 % of base)
        -296 : 219014.dasm (-17.05 % of base)
        -244 : 14452.dasm (-17.04 % of base)
        -228 : 3055.dasm (-7.52 % of base)
        -224 : 173192.dasm (-12.25 % of base)
        -224 : 9090.dasm (-8.93 % of base)
        -200 : 51372.dasm (-8.17 % of base)
        -196 : 23531.dasm (-7.73 % of base)
        -192 : 8117.dasm (-6.73 % of base)
        -184 : 16124.dasm (-9.43 % of base)
        -184 : 45546.dasm (-7.76 % of base)
        -184 : 16182.dasm (-9.52 % of base)
        -176 : 173188.dasm (-6.89 % of base)
        -176 : 23555.dasm (-6.01 % of base)
        -160 : 173193.dasm (-8.97 % of base)
        -160 : 203845.dasm (-7.53 % of base)

89 total files with Code Size differences (55 improved, 34 regressed), 20 unchanged.

Top method regressions (bytes):
         672 (17.83 % of base) : 172929.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         428 (12.23 % of base) : 172877.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         368 (13.88 % of base) : 173385.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         364 (12.13 % of base) : 171996.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         360 (9.85 % of base) : 172195.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         356 (14.69 % of base) : 171986.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (14.69 % of base) : 172989.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         228 (16.81 % of base) : 187093.dasm - System.Reflection.Emit.Tests.TypeBuilderDefineEvent:DefineEvent_CalledMultipleTimes_Works():this (FullOpts)
         176 (12.61 % of base) : 142103.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         168 (7.62 % of base) : 234926.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
         164 (3.57 % of base) : 172626.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (3.57 % of base) : 171938.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         164 (2.67 % of base) : 172625.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         164 (2.67 % of base) : 171937.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         160 (2.90 % of base) : 172951.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         148 (3.75 % of base) : 172801.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         144 (10.68 % of base) : 117614.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_Generic_WithTag(int) (FullOpts)
         140 (10.80 % of base) : 172543.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderNookAppLocalState:Read2_Color(ubyte):System.Drawing.Color:this (FullOpts)
         140 (19.55 % of base) : 117601.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         140 (17.77 % of base) : 117632.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)

Top method improvements (bytes):
        -600 (-25.17 % of base) : 63006.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -384 (-15.79 % of base) : 173196.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
        -352 (-12.59 % of base) : 172080.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
        -304 (-12.38 % of base) : 173190.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
        -296 (-17.05 % of base) : 200619.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -296 (-17.05 % of base) : 219014.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -244 (-17.04 % of base) : 14452.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
        -228 (-7.52 % of base) : 3055.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -224 (-8.93 % of base) : 9090.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -224 (-12.25 % of base) : 173192.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
        -200 (-8.17 % of base) : 51372.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -196 (-7.73 % of base) : 23531.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -192 (-6.73 % of base) : 8117.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -184 (-7.76 % of base) : 45546.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -184 (-9.43 % of base) : 16124.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -184 (-9.52 % of base) : 16182.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -176 (-6.01 % of base) : 23555.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -176 (-6.89 % of base) : 173188.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write51_XmlSchemaElement(System.String,System.String,System.Xml.Schema.XmlSchemaElement,ubyte,ubyte):this (FullOpts)
        -160 (-7.53 % of base) : 203845.dasm - DataContractJsonSerializerTests:DCJS_SuspensionManager() (FullOpts)
        -160 (-8.97 % of base) : 173193.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write53_XmlSchemaSequence(System.String,System.String,System.Xml.Schema.XmlSchemaSequence,ubyte,ubyte):this (FullOpts)

Top method regressions (percentages):
          48 (92.31 % of base) : 96681.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          40 (43.48 % of base) : 94073.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          40 (43.48 % of base) : 95079.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         140 (38.04 % of base) : 99265.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Microsoft.Win32.UnsafeNativeMethods+EvtVariant](long):Microsoft.Win32.UnsafeNativeMethods+EvtVariant (FullOpts)
         140 (23.97 % of base) : 117589.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         140 (23.81 % of base) : 117594.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
         140 (23.03 % of base) : 117634.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
         140 (22.58 % of base) : 117635.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
          44 (22.45 % of base) : 186640.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         140 (22.15 % of base) : 117593.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         140 (21.74 % of base) : 117598.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
         140 (19.55 % of base) : 117601.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         672 (17.83 % of base) : 172929.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         140 (17.77 % of base) : 117632.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
         228 (16.81 % of base) : 187093.dasm - System.Reflection.Emit.Tests.TypeBuilderDefineEvent:DefineEvent_CalledMultipleTimes_Works():this (FullOpts)
          60 (15.46 % of base) : 200749.dasm - System.Tests.ArrayTests+<>c:<CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException>b__93_0():System.Object:this (FullOpts)
          60 (15.46 % of base) : 218980.dasm - System.Tests.ArrayTests+<>c:<CreateInstance_NegativeLength_ThrowsArgumentOutOfRangeException>b__93_0():System.Object:this (FullOpts)
          40 (14.71 % of base) : 143441.dasm - System.Linq.Tests.DistinctTests+<>c__DisplayClass26_0:<DistinctBy_SourceNull_ThrowsArgumentNullException>b__0():System.Object:this (FullOpts)
         356 (14.69 % of base) : 171986.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         356 (14.69 % of base) : 172989.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)

Top method improvements (percentages):
         -28 (-46.67 % of base) : 36790.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-46.67 % of base) : 146431.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -24 (-40.00 % of base) : 30927.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
         -56 (-35.00 % of base) : 171232.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
         -72 (-34.62 % of base) : 172576.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -40 (-33.33 % of base) : 70270.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2+Builder[System.__Canon,int]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts)
         -44 (-33.33 % of base) : 173225.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
         -24 (-31.58 % of base) : 88938.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -24 (-31.58 % of base) : 137632.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42878.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 48513.dasm - Microsoft.CodeAnalysis.Options.Option`1[System.__Canon]:Microsoft.CodeAnalysis.Options.IOption.get_DefaultValue():System.Object:this (FullOpts)
         -24 (-30.00 % of base) : 42873.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 48511.dasm - Microsoft.CodeAnalysis.Options.Option2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 42871.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -24 (-30.00 % of base) : 48506.dasm - Microsoft.CodeAnalysis.Options.PerLanguageOption2`1[System.__Canon]:get_DefaultValue():System.__Canon:this (FullOpts)
         -32 (-28.57 % of base) : 41039.dasm - Microsoft.Extensions.Logging.Testing.TestLogger+<>c__DisplayClass15_0`1[System.__Canon]:<Log>b__0(System.Object,System.Exception):System.String:this (FullOpts)
         -32 (-28.57 % of base) : 192831.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.__Canon]:<CreateUntypedDelegate>b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts)
         -32 (-28.57 % of base) : 76550.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -32 (-28.57 % of base) : 130491.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-28.00 % of base) : 91539.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NonNullableField(System.Object):System.__Canon (FullOpts)


realworld.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11201768 (overridden on cmd)
Total bytes of diff: 11197720 (overridden on cmd)
Total bytes of delta: -4048 (-0.04 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         140 : 33048.dasm (36.84 % of base)
          52 : 15427.dasm (2.98 % of base)
          44 : 4831.dasm (8.59 % of base)
          36 : 12258.dasm (0.80 % of base)
          16 : 4653.dasm (4.35 % of base)
           8 : 28308.dasm (0.37 % of base)
           4 : 21810.dasm (0.07 % of base)
           4 : 14001.dasm (0.40 % of base)

Top file improvements (bytes):
        -200 : 19195.dasm (-8.18 % of base)
        -192 : 32518.dasm (-34.29 % of base)
        -136 : 32746.dasm (-34.69 % of base)
        -120 : 31617.dasm (-28.30 % of base)
         -68 : 32909.dasm (-6.91 % of base)
         -68 : 33102.dasm (-20.24 % of base)
         -64 : 31254.dasm (-25.81 % of base)
         -64 : 27125.dasm (-6.81 % of base)
         -60 : 32514.dasm (-16.48 % of base)
         -60 : 8282.dasm (-32.61 % of base)
         -60 : 32172.dasm (-20.55 % of base)
         -56 : 4862.dasm (-22.22 % of base)
         -56 : 31229.dasm (-2.52 % of base)
         -56 : 6600.dasm (-4.09 % of base)
         -56 : 9588.dasm (-8.70 % of base)
         -52 : 29562.dasm (-8.28 % of base)
         -44 : 17409.dasm (-16.18 % of base)
         -44 : 19936.dasm (-3.20 % of base)
         -44 : 29320.dasm (-2.68 % of base)
         -40 : 27695.dasm (-8.06 % of base)

60 total files with Code Size differences (52 improved, 8 regressed), 6 unchanged.

Top method regressions (bytes):
         140 (36.84 % of base) : 33048.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](long):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
          52 (2.98 % of base) : 15427.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          44 (8.59 % of base) : 4831.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
          36 (0.80 % of base) : 12258.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          16 (4.35 % of base) : 4653.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
           8 (0.37 % of base) : 28308.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 21810.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
           4 (0.40 % of base) : 14001.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)

Top method improvements (bytes):
        -200 (-8.18 % of base) : 19195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -192 (-34.29 % of base) : 32518.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
        -136 (-34.69 % of base) : 32746.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
        -120 (-28.30 % of base) : 31617.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -68 (-6.91 % of base) : 32909.dasm - System.Management.Automation.Internal.PSDataCollectionStream`1[System.__Canon]:Write(System.Object,ubyte):int:this (FullOpts)
         -68 (-20.24 % of base) : 33102.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -64 (-6.81 % of base) : 27125.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
         -64 (-25.81 % of base) : 31254.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-32.61 % of base) : 8282.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -60 (-20.55 % of base) : 32172.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -60 (-16.48 % of base) : 32514.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -56 (-8.70 % of base) : 9588.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
         -56 (-4.09 % of base) : 6600.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -56 (-2.52 % of base) : 31229.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
         -56 (-22.22 % of base) : 4862.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -52 (-8.28 % of base) : 29562.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
         -44 (-3.20 % of base) : 19936.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetExplicitlyOverriddenMethods(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -44 (-16.18 % of base) : 17409.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -44 (-2.68 % of base) : 29320.dasm - System.Runtime.CompilerServices.CallSite`1[System.__Canon]:<MakeUpdateDelegate>g__MakeUpdateDelegateWhenCanCompileToIL|18_0(byref):System.__Canon:this (FullOpts)
         -40 (-8.06 % of base) : 27695.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)

Top method regressions (percentages):
         140 (36.84 % of base) : 33048.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](long):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
          44 (8.59 % of base) : 4831.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
          16 (4.35 % of base) : 4653.dasm - Microsoft.FSharp.Control.AsyncResult`1[System.__Canon]:Commit():System.__Canon:this (FullOpts)
          52 (2.98 % of base) : 15427.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          36 (0.80 % of base) : 12258.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
           4 (0.40 % of base) : 14001.dasm - System.Threading.Overlapped:AllocateNativeOverlapped(System.Object):ulong:this (FullOpts)
           8 (0.37 % of base) : 28308.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           4 (0.07 % of base) : 21810.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:CheckModifiersAndType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

Top method improvements (percentages):
        -136 (-34.69 % of base) : 32746.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
        -192 (-34.29 % of base) : 32518.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-32.61 % of base) : 8282.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -24 (-31.58 % of base) : 32261.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
        -120 (-28.30 % of base) : 31617.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -28 (-28.00 % of base) : 684.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -28 (-25.93 % of base) : 18049.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -64 (-25.81 % of base) : 31254.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -20 (-23.81 % of base) : 32632.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
         -28 (-23.33 % of base) : 9936.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -56 (-22.22 % of base) : 4862.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -28 (-21.21 % of base) : 4540.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
         -20 (-20.83 % of base) : 16317.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -60 (-20.55 % of base) : 32172.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -68 (-20.24 % of base) : 33102.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -32 (-19.05 % of base) : 31632.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`1[System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-18.42 % of base) : 9542.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -20 (-17.86 % of base) : 16002.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -40 (-17.86 % of base) : 31224.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -28 (-17.50 % of base) : 9182.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)


smoke_tests.nativeaot.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3425620 (overridden on cmd)
Total bytes of diff: 3425100 (overridden on cmd)
Total bytes of delta: -520 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 1735.dasm (4.79 % of base)
          28 : 5569.dasm (4.79 % of base)
          28 : 8445.dasm (4.79 % of base)
          28 : 897.dasm (4.64 % of base)
          28 : 2274.dasm (4.79 % of base)
          28 : 4011.dasm (4.64 % of base)
          28 : 1477.dasm (4.79 % of base)
          28 : 2629.dasm (4.79 % of base)
          28 : 5185.dasm (4.79 % of base)
          28 : 6727.dasm (4.79 % of base)
          20 : 20746.dasm (6.85 % of base)
          20 : 9809.dasm (5.00 % of base)
          16 : 3768.dasm (7.14 % of base)
          16 : 421.dasm (7.14 % of base)
          12 : 20460.dasm (4.35 % of base)
           8 : 6291.dasm (1.32 % of base)
           8 : 11639.dasm (1.30 % of base)
           8 : 11144.dasm (4.17 % of base)
           8 : 11578.dasm (1.36 % of base)
           8 : 488.dasm (4.00 % of base)

Top file improvements (bytes):
         -60 : 3013.dasm (-20.55 % of base)
         -60 : 8952.dasm (-22.06 % of base)
         -60 : 3010.dasm (-20.83 % of base)
         -60 : 8949.dasm (-22.39 % of base)
         -56 : 7848.dasm (-21.54 % of base)
         -56 : 13379.dasm (-23.33 % of base)
         -56 : 9260.dasm (-18.18 % of base)
         -40 : 11543.dasm (-23.26 % of base)
         -28 : 10316.dasm (-23.33 % of base)
         -28 : 23912.dasm (-23.33 % of base)
         -24 : 8830.dasm (-28.57 % of base)
         -24 : 13015.dasm (-14.63 % of base)
         -20 : 10240.dasm (-26.32 % of base)
         -20 : 11746.dasm (-4.76 % of base)
         -20 : 12521.dasm (-17.86 % of base)
         -20 : 22199.dasm (-18.52 % of base)
         -20 : 24062.dasm (-16.13 % of base)
         -20 : 13232.dasm (-20.83 % of base)
         -20 : 22196.dasm (-20.00 % of base)
         -20 : 3011.dasm (-11.36 % of base)

49 total files with Code Size differences (28 improved, 21 regressed), 4 unchanged.

Top method regressions (bytes):
          28 (4.79 % of base) : 1477.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 5185.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2274.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 6727.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 897.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 4011.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1735.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 5569.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 8445.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2629.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          20 (5.00 % of base) : 9809.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
          20 (6.85 % of base) : 20746.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
          16 (7.14 % of base) : 3768.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          16 (7.14 % of base) : 421.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          12 (4.35 % of base) : 20460.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           8 (1.32 % of base) : 6291.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.36 % of base) : 11578.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.30 % of base) : 11639.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
           8 (1.22 % of base) : 6348.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
           8 (4.17 % of base) : 11144.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)

Top method improvements (bytes):
         -60 (-20.55 % of base) : 3013.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -60 (-22.06 % of base) : 8952.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -60 (-20.83 % of base) : 3010.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -60 (-22.39 % of base) : 8949.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -56 (-18.18 % of base) : 9260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -56 (-21.54 % of base) : 7848.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -56 (-23.33 % of base) : 13379.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -40 (-23.26 % of base) : 11543.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -28 (-23.33 % of base) : 10316.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -28 (-23.33 % of base) : 23912.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -24 (-14.63 % of base) : 13015.dasm - System.Linq.Expressions.Interpreter.CastInstruction+CastInstructionT`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -24 (-28.57 % of base) : 8830.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -20 (-26.32 % of base) : 10240.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-26.32 % of base) : 23859.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-16.13 % of base) : 24062.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -20 (-16.13 % of base) : 10871.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -20 (-14.29 % of base) : 9261.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
         -20 (-11.36 % of base) : 3011.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.GetHashCode(System.Object):int:this (FullOpts)
         -20 (-12.82 % of base) : 8950.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.GetHashCode(System.Object):int:this (FullOpts)
         -20 (-4.76 % of base) : 11746.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)

Top method regressions (percentages):
          16 (7.14 % of base) : 3768.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          16 (7.14 % of base) : 421.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (FullOpts)
          20 (6.85 % of base) : 20746.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
          20 (5.00 % of base) : 9809.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
          28 (4.79 % of base) : 1477.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 5185.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2274.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 6727.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 1735.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 5569.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 8445.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          28 (4.79 % of base) : 2629.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 897.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          28 (4.64 % of base) : 4011.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
          12 (4.35 % of base) : 20460.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           8 (4.17 % of base) : 11144.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           8 (4.00 % of base) : 488.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           8 (1.36 % of base) : 11578.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.32 % of base) : 6291.dasm - Internal.TypeSystem.TypeSystemContext:GetInstantiatedMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.Instantiation):Internal.TypeSystem.InstantiatedMethod:this (FullOpts)
           8 (1.30 % of base) : 11639.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)

Top method improvements (percentages):
         -24 (-28.57 % of base) : 8830.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -20 (-26.32 % of base) : 10240.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -20 (-26.32 % of base) : 23859.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -28 (-23.33 % of base) : 10316.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -28 (-23.33 % of base) : 23912.dasm - Generics+TestGenericInlining+GenericInline`1[System.__Canon]:.ctor():this (FullOpts)
         -56 (-23.33 % of base) : 13379.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -40 (-23.26 % of base) : 11543.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
         -60 (-22.39 % of base) : 8949.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -60 (-22.06 % of base) : 8952.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -56 (-21.54 % of base) : 7848.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -60 (-20.83 % of base) : 3010.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -20 (-20.83 % of base) : 13232.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -60 (-20.55 % of base) : 3013.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -20 (-20.00 % of base) : 22196.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 22200.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 22199.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -20 (-18.52 % of base) : 22195.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -56 (-18.18 % of base) : 9260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -20 (-17.86 % of base) : 12521.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -20 (-17.86 % of base) : 8074.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)



windows x64

Diffs are based on 2,384,796 contexts (997,391 MinOpts, 1,387,405 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 127,416 (5.07%)

Overall (+160,483 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,148,955 +3,339
benchmarks.run.windows.x64.checked.mch 7,349,829 -153
benchmarks.run_pgo.windows.x64.checked.mch 31,419,594 +14,355
benchmarks.run_tiered.windows.x64.checked.mch 12,005,303 -406
coreclr_tests.run.windows.x64.checked.mch 370,205,685 +155,039
libraries.crossgen2.windows.x64.checked.mch 39,483,308 -30,733
libraries.pmi.windows.x64.checked.mch 45,446,626 -10,727
libraries_tests.run.windows.x64.Release.mch 249,593,901 +39,252
librariestestsnotieredcompilation.run.windows.x64.Release.mch 108,545,965 -6,320
realworld.run.windows.x64.checked.mch 9,896,125 -2,913
smoke_tests.nativeaot.windows.x64.checked.mch 4,471,874 -250

FullOpts (+160,483 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 22,657,906 +3,339
benchmarks.run.windows.x64.checked.mch 7,349,466 -153
benchmarks.run_pgo.windows.x64.checked.mch 17,248,938 +14,355
benchmarks.run_tiered.windows.x64.checked.mch 2,906,064 -406
coreclr_tests.run.windows.x64.checked.mch 97,416,831 +155,039
libraries.crossgen2.windows.x64.checked.mch 39,482,121 -30,733
libraries.pmi.windows.x64.checked.mch 45,333,105 -10,727
libraries_tests.run.windows.x64.Release.mch 73,735,583 +39,252
librariestestsnotieredcompilation.run.windows.x64.Release.mch 97,926,859 -6,320
realworld.run.windows.x64.checked.mch 9,509,516 -2,913
smoke_tests.nativeaot.windows.x64.checked.mch 4,470,927 -250

Example diffs

aspnet.run.windows.x64.checked.mch

-25 (-33.33%) : 1367.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x10] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x10] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x10] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=12 bbWeight=0.12 PerfScore 0.44 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=34 bbWeight=1 PerfScore 13.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 75, prolog size 10, PerfScore 16.69, instruction count 23, allocated bytes for code 75 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 50, prolog size 10, PerfScore 17.75, instruction count 15, allocated bytes for code 50 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info:

-34 (-31.48%) : 45428.dasm - Microsoft.Extensions.Internal.PropertyHelper:CallPropertySetterSystem.Canon,System.Canon (Tier1)

@@ -6,15 +6,14 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 TypeCtx [V00,T03] ( 5, 3.50) long -> rsi single-def -; V01 arg0 [V01,T02] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Action`2[System.__Canon,System.__Canon]> -; V02 arg1 [V02,T04] ( 4, 3.12) ref -> r8 class-hnd single-def <System.Object> -; V03 arg2 [V03,T05] ( 4, 3.12) ref -> rdi class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Action`2[System.__Canon,System.__Canon]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object> +; V03 arg2 [V03,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Object>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T00] ( 5, 6.75) ref -> rbp class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp3 [V07,T07] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T01] ( 5, 6.75) ref -> r8 class-hnd "spilling QMark2" <System.__Canon>
+; V05 tmp1 [V05,T04] ( 2, 4 ) ref -> rbp single-def "argument with side effect" +; V06 tmp2 [V06,T05] ( 2, 4 ) ref -> r8 single-def "argument with side effect" +; V07 cse0 [V07,T06] ( 3, 3 ) long -> rdi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -25,27 +24,15 @@ G_M51924_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rcx
- mov rsi, rcx
mov rbx, rdx ; gcrRegs +[rbx]
- mov rdi, r9 - ; gcrRegs +[rdi] - ;; size=22 bbWeight=1 PerfScore 6.00 -G_M51924_IG02: ; bbWeight=1, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=0000 {}, byref, isz
+ mov rsi, r9 + ; gcrRegs +[rsi] + ;; size=19 bbWeight=1 PerfScore 5.75 +G_M51924_IG02: ; bbWeight=1, gcrefRegs=0148 {rbx rsi r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rbp, r8 - ; gcrRegs +[rbp] - test rbp, rbp - je SHORT G_M51924_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M51924_IG03: ; bbWeight=0.25, gcrefRegs=01A8 {rbx rbp rdi r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rsi+0x10] - mov rcx, qword ptr [rcx] - cmp qword ptr [rbp], rcx - je SHORT G_M51924_IG05 - ;; size=13 bbWeight=0.25 PerfScore 2.00 -G_M51924_IG04: ; bbWeight=0.12, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp]
+ mov rdi, qword ptr [rcx+0x10] + mov rcx, qword ptr [rdi]
mov rdx, r8 ; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTANY @@ -53,40 +40,21 @@ G_M51924_IG04: ; bbWeight=0.12, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=00 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M51924_IG05: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov r8, rdi - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M51924_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M51924_IG06: ; bbWeight=0.25, gcrefRegs=01A8 {rbx rbp rdi r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rsi+0x10] - mov rcx, qword ptr [rcx+0x08] - cmp qword ptr [r8], rcx - je SHORT G_M51924_IG08 - ;; size=13 bbWeight=0.25 PerfScore 2.00 -G_M51924_IG07: ; bbWeight=0.12, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8] - mov rdx, rdi
+ mov rcx, qword ptr [rdi+0x08] + mov rdx, rsi
; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rdx rdi] +[rax]
+ ; gcrRegs -[rdx rsi]
; gcr arg pop 0 mov r8, rax ; gcrRegs +[r8]
- ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M51924_IG08: ; bbWeight=1, gcrefRegs=0128 {rbx rbp r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
mov rdx, rbp ; gcrRegs +[rdx] mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov rax, rbx
- ; gcrRegs +[rax] - ;; size=10 bbWeight=1 PerfScore 2.50 -G_M51924_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=43 bbWeight=1 PerfScore 11.50 +G_M51924_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -95,7 +63,7 @@ G_M51924_IG09: ; bbWeight=1, epilog, nogc, extend tail.jmp [rax+0x18]<unknown method> ;; size=12 bbWeight=1 PerfScore 4.25
-; Total bytes of code 108, prolog size 22, PerfScore 20.12, instruction count 38, allocated bytes for code 108 (MethodHash=2e54352b) for method Microsoft.Extensions.Internal.PropertyHelper:CallPropertySetter[System.__Canon,System.__Canon](System.Action`2[System.__Canon,System.__Canon],System.Object,System.Object) (Tier1)
+; Total bytes of code 74, prolog size 19, PerfScore 21.50, instruction count 26, allocated bytes for code 74 (MethodHash=2e54352b) for method Microsoft.Extensions.Internal.PropertyHelper:CallPropertySetter[System.__Canon,System.__Canon](System.Action`2[System.__Canon,System.__Canon],System.Object,System.Object) (Tier1)
; ============================================================ Unwind Info:

-25 (-30.49%) : 120649.dasm - Newtonsoft.Json.Linq.JToken:ToObjectSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd single-def <Newtonsoft.Json.Linq.JToken> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <Newtonsoft.Json.Linq.JToken> +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -22,57 +21,38 @@ G_M31157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, rdx - ;; size=17 bbWeight=1 PerfScore 3.75 -G_M31157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x10] - mov rcx, qword ptr [rcx]
+ mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=14 bbWeight=1 PerfScore 3.50 +G_M31157_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rdx+0x10] + mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx] call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M31157_IG05 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M31157_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x10] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M31157_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M31157_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M31157_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M31157_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M31157_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 82, prolog size 11, PerfScore 18.44, instruction count 27, allocated bytes for code 82 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 57, prolog size 11, PerfScore 17.75, instruction count 19, allocated bytes for code 57 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+24 (+11.54%) : 76115.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (Tier1)

@@ -9,21 +9,21 @@ ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T08] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T03] ( 8, 24.35) ref -> rbx class-hnd single-def <System.__Canon[]>
-; V02 loc0 [V02,T08] ( 3, 2.03) ref -> rdi class-hnd single-def <System.__Canon[]> -; V03 loc1 [V03,T10] ( 4, 0.71) ref -> rdi class-hnd single-def <System.__Canon[]> -; V04 loc2 [V04,T09] ( 5, 1.35) int -> rbp -; V05 loc3 [V05,T05] ( 6, 18.04) ref -> r14 class-hnd <System.__Canon>
+; V02 loc0 [V02,T09] ( 3, 2.03) ref -> rdi class-hnd single-def <System.__Canon[]> +; V03 loc1 [V03,T11] ( 4, 0.71) ref -> rdi class-hnd single-def <System.__Canon[]> +; V04 loc2 [V04,T10] ( 5, 1.35) int -> rbp +; V05 loc3 [V05,T06] ( 5, 15.29) ref -> r14 class-hnd <System.__Canon>
; V06 loc4 [V06,T00] ( 6, 39.65) int -> r15 ; V07 loc5 [V07,T01] ( 4, 30.20) ref -> rcx class-hnd <System.__Canon> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T04] ( 2, 18.30) int -> rax "guarded devirt return temp"
+; V09 tmp1 [V09,T05] ( 2, 18.30) int -> rax "guarded devirt return temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo> -; V13 tmp5 [V13,T06] ( 2, 5.49) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V14 cse0 [V14,T02] ( 3, 27.45) long -> rax "CSE - aggressive"
+; V12 tmp4 [V12,T07] ( 3, 8.24) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V13 cse0 [V13,T02] ( 3, 27.45) long -> rax "CSE - aggressive" +; V14 rat0 [V14,T04] ( 5, 20.59) ref -> rdx "replacement local"
; ; Lcl frame size = 40 @@ -67,23 +67,23 @@ G_M50755_IG04: ; bbWeight=0.97, epilog, nogc, extend pop r15 ret ;; size=13 bbWeight=0.97 PerfScore 4.13
-G_M50755_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M50755_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi rdi] xor ebp, ebp cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M50755_IG14 - ;; size=8 bbWeight=0.03 PerfScore 0.12 -G_M50755_IG06: ; bbWeight=0.32, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jle G_M50755_IG17 + ;; size=12 bbWeight=0.03 PerfScore 0.12 +G_M50755_IG06: ; bbWeight=0.32, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ecx, ebp mov r14, gword ptr [rdi+8*rcx+0x10] ; gcrRegs +[r14] test r14, r14
- je SHORT G_M50755_IG14 - ;; size=12 bbWeight=0.32 PerfScore 1.14
+ je G_M50755_IG17 + ;; size=16 bbWeight=0.32 PerfScore 1.14
G_M50755_IG07: ; bbWeight=0.31, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz xor r15d, r15d cmp dword ptr [rbx+0x08], 0
- jle SHORT G_M50755_IG13
+ jle SHORT G_M50755_IG16
;; size=9 bbWeight=0.31 PerfScore 1.30 G_M50755_IG08: ; bbWeight=9.15, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz mov ecx, r15d @@ -100,7 +100,7 @@ G_M50755_IG08: ; bbWeight=9.15, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M50755_IG12
+ jne SHORT G_M50755_IG15
;; size=40 bbWeight=9.15 PerfScore 112.10 G_M50755_IG09: ; bbWeight=9.15, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz inc r15d @@ -109,21 +109,34 @@ G_M50755_IG09: ; bbWeight=9.15, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe ;; size=9 bbWeight=9.15 PerfScore 38.89 G_M50755_IG10: ; bbWeight=0.33, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r14]
- jmp SHORT G_M50755_IG13
+ jmp SHORT G_M50755_IG16
;; size=2 bbWeight=0.33 PerfScore 0.67 G_M50755_IG11: ; bbWeight=2.75, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx r14] mov rdx, r14 ; gcrRegs +[rdx]
+ test rdx, rdx + je SHORT G_M50755_IG14 + ;; size=8 bbWeight=2.75 PerfScore 4.12 +G_M50755_IG12: ; bbWeight=1.37, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo cmp qword ptr [rdx], rax
- jne SHORT G_M50755_IG09 - mov rdx, qword ptr [r14+0x50]
+ je SHORT G_M50755_IG14 + ;; size=15 bbWeight=1.37 PerfScore 5.83 +G_M50755_IG13: ; bbWeight=0.69, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=0.69 PerfScore 0.17 +G_M50755_IG14: ; bbWeight=2.75, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M50755_IG09 + mov rdx, qword ptr [rdx+0x50]
; gcrRegs -[rdx] cmp rdx, qword ptr [rcx+0x50] jne SHORT G_M50755_IG09
- ;; size=28 bbWeight=2.75 PerfScore 28.83 -G_M50755_IG12: ; bbWeight=2.75, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=2.75 PerfScore 19.90 +G_M50755_IG15: ; bbWeight=2.75, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] movsxd rdx, r15d mov rcx, rbx @@ -134,12 +147,12 @@ G_M50755_IG12: ; bbWeight=2.75, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe ; gcrRegs -[rcx r8 r14] ; gcr arg pop 0 ;; size=14 bbWeight=2.75 PerfScore 4.80
-G_M50755_IG13: ; bbWeight=0.33, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG16: ; bbWeight=0.33, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
inc ebp cmp dword ptr [rdi+0x08], ebp
- jg SHORT G_M50755_IG06 - ;; size=7 bbWeight=0.33 PerfScore 1.42 -G_M50755_IG14: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jg G_M50755_IG06 + ;; size=11 bbWeight=0.33 PerfScore 1.42 +G_M50755_IG17: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx] @@ -150,7 +163,7 @@ G_M50755_IG14: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; byrRegs -[rcx] nop ;; size=13 bbWeight=0.03 PerfScore 0.05
-G_M50755_IG15: ; bbWeight=0.03, epilog, nogc, extend
+G_M50755_IG18: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -161,7 +174,7 @@ G_M50755_IG15: ; bbWeight=0.03, epilog, nogc, extend ret ;; size=13 bbWeight=0.03 PerfScore 0.12
-; Total bytes of code 208, prolog size 18, PerfScore 205.50, instruction count 75, allocated bytes for code 208 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 232, prolog size 18, PerfScore 206.71, instruction count 80, allocated bytes for code 232 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================ Unwind Info:

+17 (+11.64%) : 100340.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)

@@ -11,15 +11,15 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T00] ( 9, 6.19) ref -> rcx ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T01] ( 8, 4.37) ref -> r8 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T01] ( 7, 4.19) ref -> r8 class-hnd single-def <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 5, 2.50) int -> rbx "guarded devirt return temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String>
-;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V08 tmp5 [V08,T04] ( 3, 1.06) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.String> -; V09 tmp6 [V09,T02] ( 2, 2.76) byref -> rcx single-def "impAppendStmt" -; V10 cse0 [V10,T05] ( 3, 1.06) int -> r8 "CSE - moderate"
+; V07 tmp4 [V07,T05] ( 4, 1.25) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V08 tmp5 [V08,T02] ( 2, 2.76) byref -> rcx single-def "impAppendStmt" +; V09 cse0 [V09,T06] ( 3, 1.06) int -> r8 "CSE - moderate" +; V10 rat0 [V10,T04] ( 5, 1.39) ref -> r8 "replacement local"
; ; Lcl frame size = 32 @@ -32,13 +32,13 @@ G_M25421_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25421_IG02: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8] test rcx, rcx
- je SHORT G_M25421_IG12
+ je G_M25421_IG15
test r8, r8
- je SHORT G_M25421_IG10
+ je SHORT G_M25421_IG13
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rdx
- jne SHORT G_M25421_IG09 - ;; size=25 bbWeight=1 PerfScore 6.75
+ jne SHORT G_M25421_IG12 + ;; size=29 bbWeight=1 PerfScore 6.75
G_M25421_IG03: ; bbWeight=0.69, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz cmp rcx, r8 jne SHORT G_M25421_IG05 @@ -46,21 +46,34 @@ G_M25421_IG03: ; bbWeight=0.69, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 { G_M25421_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx r8] mov ebx, 1
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=7 bbWeight=0.50 PerfScore 1.14 G_M25421_IG05: ; bbWeight=0.19, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx r8]
+ test r8, r8 + je SHORT G_M25421_IG08 + ;; size=5 bbWeight=0.19 PerfScore 0.23 +G_M25421_IG06: ; bbWeight=0.09, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rdx
- jne SHORT G_M25421_IG14
+ je SHORT G_M25421_IG08 + ;; size=15 bbWeight=0.09 PerfScore 0.39 +G_M25421_IG07: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r8] + xor r8, r8 + ; gcrRegs +[r8] + ;; size=3 bbWeight=0.05 PerfScore 0.01 +G_M25421_IG08: ; bbWeight=0.19, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
mov rdx, r8 ; gcrRegs +[rdx]
+ test rdx, rdx + je SHORT G_M25421_IG17
mov r8d, dword ptr [rcx+0x08] ; gcrRegs -[r8] cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M25421_IG14 - ;; size=28 bbWeight=0.19 PerfScore 1.94 -G_M25421_IG06: ; bbWeight=0.69, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M25421_IG17 + ;; size=18 bbWeight=0.19 PerfScore 1.39 +G_M25421_IG09: ; bbWeight=0.69, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
add rcx, 12 ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -73,15 +86,15 @@ G_M25421_IG06: ; bbWeight=0.69, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 ; gcr arg pop 0 mov ebx, eax ;; size=19 bbWeight=0.69 PerfScore 2.76
-G_M25421_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25421_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, bl ;; size=3 bbWeight=1 PerfScore 0.25
-G_M25421_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M25421_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-G_M25421_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG12: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx r8] mov rdx, r8 ; gcrRegs +[rdx] @@ -91,34 +104,34 @@ G_M25421_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=010 ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0 mov ebx, eax
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=17 bbWeight=0.31 PerfScore 2.94
-G_M25421_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25421_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M25421_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M25421_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25421_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r8] test r8, r8
- jne SHORT G_M25421_IG10
+ jne SHORT G_M25421_IG13
mov eax, 1 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M25421_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M25421_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25421_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r8] xor ebx, ebx
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 5, PerfScore 19.90, instruction count 48, allocated bytes for code 146 (MethodHash=e30f9cb2) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 163, prolog size 5, PerfScore 19.98, instruction count 53, allocated bytes for code 163 (MethodHash=e30f9cb2) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
; ============================================================ Unwind Info:

+17 (+11.64%) : 128340.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)

@@ -11,15 +11,15 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T00] ( 9, 6.15) ref -> rcx ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T01] ( 8, 4.30) ref -> r8 class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T01] ( 7, 4.15) ref -> r8 class-hnd single-def <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 5, 2.42) int -> rbx "guarded devirt return temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String>
-;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V08 tmp5 [V08,T04] ( 3, 0.87) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.String> -; V09 tmp6 [V09,T03] ( 2, 2.28) byref -> rcx single-def "impAppendStmt" -; V10 cse0 [V10,T05] ( 3, 0.87) int -> r8 "CSE - conservative"
+; V07 tmp4 [V07,T05] ( 4, 1.02) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V08 tmp5 [V08,T03] ( 2, 2.28) byref -> rcx single-def "impAppendStmt" +; V09 cse0 [V09,T06] ( 3, 0.87) int -> r8 "CSE - conservative" +; V10 rat0 [V10,T04] ( 5, 1.13) ref -> r8 "replacement local"
; ; Lcl frame size = 32 @@ -32,13 +32,13 @@ G_M25421_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M25421_IG02: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r8] test rcx, rcx
- je SHORT G_M25421_IG12
+ je G_M25421_IG15
test r8, r8
- je SHORT G_M25421_IG10
+ je SHORT G_M25421_IG13
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rdx
- jne SHORT G_M25421_IG09 - ;; size=25 bbWeight=1 PerfScore 6.75
+ jne SHORT G_M25421_IG12 + ;; size=29 bbWeight=1 PerfScore 6.75
G_M25421_IG03: ; bbWeight=0.57, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz cmp rcx, r8 jne SHORT G_M25421_IG05 @@ -46,21 +46,34 @@ G_M25421_IG03: ; bbWeight=0.57, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 { G_M25421_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx r8] mov ebx, 1
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=7 bbWeight=0.42 PerfScore 0.94 G_M25421_IG05: ; bbWeight=0.15, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx r8]
+ test r8, r8 + je SHORT G_M25421_IG08 + ;; size=5 bbWeight=0.15 PerfScore 0.19 +G_M25421_IG06: ; bbWeight=0.08, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rdx
- jne SHORT G_M25421_IG14
+ je SHORT G_M25421_IG08 + ;; size=15 bbWeight=0.08 PerfScore 0.32 +G_M25421_IG07: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[r8] + xor r8, r8 + ; gcrRegs +[r8] + ;; size=3 bbWeight=0.04 PerfScore 0.01 +G_M25421_IG08: ; bbWeight=0.15, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
mov rdx, r8 ; gcrRegs +[rdx]
+ test rdx, rdx + je SHORT G_M25421_IG17
mov r8d, dword ptr [rcx+0x08] ; gcrRegs -[r8] cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M25421_IG14 - ;; size=28 bbWeight=0.15 PerfScore 1.58 -G_M25421_IG06: ; bbWeight=0.57, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M25421_IG17 + ;; size=18 bbWeight=0.15 PerfScore 1.13 +G_M25421_IG09: ; bbWeight=0.57, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
add rcx, 12 ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -73,15 +86,15 @@ G_M25421_IG06: ; bbWeight=0.57, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 ; gcr arg pop 0 mov ebx, eax ;; size=19 bbWeight=0.57 PerfScore 2.28
-G_M25421_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25421_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, bl ;; size=3 bbWeight=1 PerfScore 0.25
-G_M25421_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M25421_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-G_M25421_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG12: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx r8] mov rdx, r8 ; gcrRegs +[rdx] @@ -91,34 +104,34 @@ G_M25421_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=010 ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0 mov ebx, eax
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=17 bbWeight=0.43 PerfScore 4.08
-G_M25421_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25421_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M25421_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M25421_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25421_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r8] test r8, r8
- jne SHORT G_M25421_IG10
+ jne SHORT G_M25421_IG13
mov eax, 1 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M25421_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M25421_IG16: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx ret ;; size=6 bbWeight=0 PerfScore 0.00
-G_M25421_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M25421_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r8] xor ebx, ebx
- jmp SHORT G_M25421_IG07
+ jmp SHORT G_M25421_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 5, PerfScore 19.85, instruction count 48, allocated bytes for code 146 (MethodHash=e30f9cb2) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 163, prolog size 5, PerfScore 19.92, instruction count 53, allocated bytes for code 163 (MethodHash=e30f9cb2) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-25 (-33.78%) : 687.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-13 (-32.50%) : 2767.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-25 (-29.07%) : 2269.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, rdx - ;; size=17 bbWeight=1 PerfScore 3.75 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=14 bbWeight=1 PerfScore 3.50 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rdx+0x38] + mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax] mov rax, qword ptr [rax+0x70] call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M60617_IG05 - ;; size=36 bbWeight=1 PerfScore 14.00 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M60617_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+5 (+5.00%) : 12855.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)

@@ -8,14 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M34178_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, xor ebx, ebx mov esi, dword ptr [(reloc)] test esi, esi
- jle SHORT G_M34178_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jle SHORT G_M34178_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=35 bbWeight=1 PerfScore 6.00 -G_M34178_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M34178_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M34178_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M34178_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M34178_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M34178_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.50 +G_M34178_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M34178_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00 +G_M34178_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 40 pop rbx @@ -75,7 +66,7 @@ G_M34178_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=1eb67a7d) for method PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
; ============================================================ Unwind Info:

+5 (+5.00%) : 16788.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)

@@ -8,14 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, xor ebx, ebx mov esi, dword ptr [(reloc)] test esi, esi
- jle SHORT G_M36328_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jle SHORT G_M36328_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=35 bbWeight=1 PerfScore 6.00 -G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M36328_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M36328_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M36328_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M36328_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.50 +G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M36328_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00 +G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 40 pop rbx @@ -75,7 +66,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (FullOpts)
; ============================================================ Unwind Info:

+5 (+5.00%) : 27344.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)

@@ -8,14 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, xor ebx, ebx mov esi, dword ptr [(reloc)] test esi, esi
- jle SHORT G_M40467_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jle SHORT G_M40467_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=35 bbWeight=1 PerfScore 6.00 -G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M40467_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M40467_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M40467_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.50 PerfScore 0.50 -G_M40467_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=53 bbWeight=1 PerfScore 7.50 +G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_CHKCASTARRAY + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M40467_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=35 bbWeight=4 PerfScore 18.00 +G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 40 pop rbx @@ -75,7 +66,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 100, prolog size 8, PerfScore 37.25, instruction count 32, allocated bytes for code 100 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 33.00, instruction count 30, allocated bytes for code 105 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-25 (-33.78%) : 8114.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info:

-18 (-17.82%) : 67693.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.Canon]:get_Current():System.Canon:this (Tier1)

@@ -8,22 +8,19 @@ ; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) byref -> rcx this single-def -; V01 TypeCtx [V01,T02] ( 4, 3.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> rcx this single-def +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V05 tmp3 [V05,T10] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp4 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp5 [V07,T08] ( 4, 2.12) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> -; V08 tmp6 [V08,T04] ( 2, 4 ) byref -> rdx single-def "Inlining Arg" -; V09 tmp7 [V09,T03] ( 3, 5 ) ref -> rdx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> -;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp9 [V11,T11] ( 0, 0 ) int -> zero-ref -; V12 tmp10 [V12,T07] ( 2, 3 ) int -> rax "Inlining Arg" -; V13 tmp11 [V13,T09] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> -; V14 tmp12 [V14,T06] ( 3, 3 ) ref -> rcx single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 4, 3 ) ref -> rcx "CSE - aggressive"
+; V04 tmp2 [V04,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode> +; V05 tmp3 [V05,T03] ( 2, 4 ) byref -> rdx single-def "Inlining Arg" +; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> rdx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode> +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def +;* V08 tmp6 [V08,T09] ( 0, 0 ) int -> zero-ref +; V09 tmp7 [V09,T06] ( 2, 3 ) int -> rax "Inlining Arg" +; V10 tmp8 [V10,T08] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> +; V11 tmp9 [V11,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect" +; V12 cse0 [V12,T04] ( 4, 3 ) ref -> rcx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -65,42 +62,25 @@ G_M44215_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, mov rax, rcx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M44215_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M44215_IG08 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M44215_IG06: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rbx+0x38] mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx - je SHORT G_M44215_IG08 - ;; size=15 bbWeight=0.25 PerfScore 2.50 -G_M44215_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M44215_IG08: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M44215_IG09: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=19 bbWeight=1 PerfScore 7.50 +G_M44215_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 101, prolog size 10, PerfScore 22.44, instruction count 34, allocated bytes for code 101 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
+; Total bytes of code 83, prolog size 10, PerfScore 25.50, instruction count 28, allocated bytes for code 83 (MethodHash=83ca5348) for method Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
; ============================================================ Unwind Info:

-40 (-12.35%) : 55542.dasm - System.Threading.Tasks.ValueTask1[ubyte]:AsTask():System.Threading.Tasks.Task1[ubyte]:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 4 ) byref -> rbx this single-def
-; V01 loc0 [V01,T01] ( 10, 4.72) ref -> rsi class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T01] ( 10, 5.36) ref -> rsi class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T07] ( 5, 0.86) ref -> rax class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 2, 0.86) int -> rax @@ -21,9 +21,9 @@ ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inlining Arg" ; V10 tmp7 [V10,T06] ( 3, 1.14) ref -> rax ;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
-; V12 rat0 [V12,T03] ( 6, 3.44) ref -> r8 class-hnd "replacement local" <System.Threading.Tasks.Task`1[ubyte]> -; V13 rat1 [V13,T04] ( 5, 3.01) ref -> r10 class-hnd "replacement local" <<unknown class>> -; V14 rat2 [V14,T02] ( 7, 3.44) ref -> rax class-hnd "replacement local" <System.Threading.Tasks.Task`1[ubyte]>
+; V12 rat0 [V12,T03] ( 6, 3.44) ref -> rax "replacement local" +; V13 rat1 [V13,T04] ( 5, 3.44) ref -> rax "replacement local" +; V14 rat2 [V14,T02] ( 7, 3.44) ref -> rax "replacement local"
; ; Lcl frame size = 40 @@ -41,52 +41,61 @@ G_M275_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref je SHORT G_M275_IG08 ;; size=8 bbWeight=1 PerfScore 3.25 G_M275_IG03: ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov r8, rsi - ; gcrRegs +[r8] - test r8, r8
+ mov rax, rsi + ; gcrRegs +[rax] + test rax, rax
je SHORT G_M275_IG05 ;; size=8 bbWeight=0.43 PerfScore 0.64
-G_M275_IG04: ; bbWeight=0.21, gcrefRegs=0140 {rsi r8}, byrefRegs=0008 {rbx}, byref - mov rax, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] - cmp qword ptr [r8], rax - jne G_M275_IG16 - xor r8, r8 - ;; size=22 bbWeight=0.21 PerfScore 0.97 -G_M275_IG05: ; bbWeight=0.43, gcrefRegs=0140 {rsi r8}, byrefRegs=0008 {rbx}, byref, isz - test r8, r8
+G_M275_IG04: ; bbWeight=0.21, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref + mov rdx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] + cmp qword ptr [rax], rdx + je G_M275_IG16 + mov rdx, rsi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte] + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rdx] + ; gcr arg pop 0 + ;; size=37 bbWeight=0.21 PerfScore 1.24 +G_M275_IG05: ; bbWeight=0.43, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz + test rax, rax
jne SHORT G_M275_IG08
- mov r10, rsi - ; gcrRegs +[r10] - test r10, r10
+ mov rax, rsi + test rax, rax
je SHORT G_M275_IG07 ;; size=13 bbWeight=0.43 PerfScore 1.18
-G_M275_IG06: ; bbWeight=0.21, gcrefRegs=0440 {rsi r10}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[r8] - mov rax, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] - cmp qword ptr [r10], rax - jne G_M275_IG17 - ;; size=19 bbWeight=0.21 PerfScore 0.91 -G_M275_IG07: ; bbWeight=0.43, gcrefRegs=0440 {rsi r10}, byrefRegs=0008 {rbx}, byref, isz - xor eax, eax - test r10, r10
+G_M275_IG06: ; bbWeight=0.21, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] + cmp qword ptr [rax], rdx + je SHORT G_M275_IG07 + mov rdx, rsi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFANY + ; gcrRegs -[rdx] + ; gcr arg pop 0 + ;; size=33 bbWeight=0.21 PerfScore 1.24 +G_M275_IG07: ; bbWeight=0.43, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz + test rax, rax
setne al
+ ; gcrRegs -[rax] + movzx rax, al
test al, al jne SHORT G_M275_IG11
- jmp G_M275_IG18 - ;; size=17 bbWeight=0.43 PerfScore 2.04
+ jmp SHORT G_M275_IG17 + ;; size=15 bbWeight=0.43 PerfScore 2.04
G_M275_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[r10]
test rsi, rsi jne SHORT G_M275_IG11 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M275_IG09: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M275_IG09: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rsi] cmp byte ptr [rbx+0x0A], 0
- je G_M275_IG19
+ je SHORT G_M275_IG18
mov rax, 0xD1FFAB1E ; const ptr mov rax, gword ptr [rax] ; gcrRegs +[rax]
- ;; size=23 bbWeight=0.57 PerfScore 3.57
+ ;; size=19 bbWeight=0.57 PerfScore 3.57
G_M275_IG10: ; bbWeight=0.57, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[rbx] add rsp, 40 @@ -102,16 +111,21 @@ G_M275_IG11: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0040 test rax, rax je SHORT G_M275_IG13 ;; size=8 bbWeight=0.43 PerfScore 0.64
-G_M275_IG12: ; bbWeight=0.21, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] - cmp qword ptr [rax], rcx - jne G_M275_IG20 - xor rax, rax - ;; size=21 bbWeight=0.21 PerfScore 0.97 -G_M275_IG13: ; bbWeight=0.43, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref
+G_M275_IG12: ; bbWeight=0.21, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte] + cmp qword ptr [rax], rdx + je SHORT G_M275_IG19 + mov rdx, rsi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte] + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rdx] + ; gcr arg pop 0 + ;; size=33 bbWeight=0.21 PerfScore 1.24 +G_M275_IG13: ; bbWeight=0.43, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz
test rax, rax
- jne G_M275_IG21 - ;; size=9 bbWeight=0.43 PerfScore 0.54
+ jne SHORT G_M275_IG20 + ;; size=5 bbWeight=0.43 PerfScore 0.54
G_M275_IG14: ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[rax] mov rcx, rbx @@ -133,30 +147,12 @@ G_M275_IG15: ; bbWeight=0.43, epilog, nogc, extend G_M275_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref ; gcrRegs -[rax] +[rsi] ; byrRegs +[rbx]
- mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte] - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0 - mov r8, rax - ; gcrRegs +[r8]
+ xor rax, rax + ; gcrRegs +[rax]
jmp G_M275_IG05
- ;; size=26 bbWeight=0 PerfScore 0.00 -G_M275_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rax r8] - mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFANY - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0 - mov r10, rax - ; gcrRegs +[r10] - jmp G_M275_IG07 - ;; size=26 bbWeight=0 PerfScore 0.00 -G_M275_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - ; gcrRegs -[rax r10]
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M275_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -164,29 +160,25 @@ G_M275_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, by call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp G_M275_IG11 - ;; size=31 bbWeight=0 PerfScore 0.00 -G_M275_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M275_IG11 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M275_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] ; byrRegs -[rbx]
- mov rdx, 0xD1FFAB1E ; const ptr - mov rax, gword ptr [rdx]
+ mov rax, 0xD1FFAB1E ; const ptr + mov rax, gword ptr [rax]
; gcrRegs +[rax]
- jmp G_M275_IG10 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M275_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ jmp SHORT G_M275_IG10 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M275_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax] +[rsi] ; byrRegs +[rbx]
- mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte] - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0
+ xor rax, rax + ; gcrRegs +[rax]
test rax, rax
- je G_M275_IG14 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M275_IG21: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M275_IG14 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M275_IG20: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi] ; byrRegs -[rbx] add rsp, 40 @@ -195,7 +187,7 @@ G_M275_IG21: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref ret ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 6, PerfScore 22.32, instruction count 81, allocated bytes for code 324 (MethodHash=03cefeec) for method System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
+; Total bytes of code 284, prolog size 6, PerfScore 23.18, instruction count 78, allocated bytes for code 284 (MethodHash=03cefeec) for method System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
; ============================================================ Unwind Info:

+22 (+11.00%) : 42525.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (Tier1)

@@ -10,20 +10,19 @@ ; Final local variable assignments ; ; V00 this [V00,T06] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 8,203.88) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T02] ( 8,203.88) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T09] ( 3, 2.02) ref -> rdi class-hnd single-def <System.__Canon[]> ; V03 loc1 [V03,T08] ( 4, 2.09) ref -> rdi class-hnd single-def <System.__Canon[]> ; V04 loc2 [V04,T07] ( 5, 4.12) int -> rbp
-; V05 loc3 [V05,T02] ( 6,201.93) ref -> r14 class-hnd <System.__Canon> -; V06 loc4 [V06,T00] ( 6,334.14) int -> r15
+; V05 loc3 [V05,T05] ( 5,135.30) ref -> r14 class-hnd <System.__Canon> +; V06 loc4 [V06,T01] ( 6,334.14) int -> r15
; V07 loc5 [V07,T03] ( 5,199.88) ref -> rcx class-hnd <System.__Canon> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 2, 0 ) int -> rax "guarded devirt return temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo> -; V13 tmp5 [V13,T05] ( 2,133.26) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V14 cse0 [V14,T04] ( 3,199.88) long -> rdx "CSE - aggressive"
+; V12 tmp4 [V12,T04] ( 3,199.88) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V13 rat0 [V13,T00] ( 5,499.71) ref -> rdx "replacement local"
; ; Lcl frame size = 40 @@ -71,47 +70,52 @@ G_M50755_IG05: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=00C ; gcrRegs +[rbx rsi rdi] xor ebp, ebp cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M50755_IG13
+ jle SHORT G_M50755_IG14
;; size=8 bbWeight=0.02 PerfScore 0.10 G_M50755_IG06: ; bbWeight=1.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov edx, ebp - mov r14, gword ptr [rdi+8*rdx+0x10]
+ mov ecx, ebp + mov r14, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[r14] test r14, r14
- je SHORT G_M50755_IG13
+ je SHORT G_M50755_IG14
;; size=12 bbWeight=1.02 PerfScore 3.58 G_M50755_IG07: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz xor r15d, r15d cmp dword ptr [rbx+0x08], 0
- jle SHORT G_M50755_IG12
+ jle SHORT G_M50755_IG13
;; size=9 bbWeight=1 PerfScore 4.25 G_M50755_IG08: ; bbWeight=66.63, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov edx, r15d - mov rcx, gword ptr [rbx+8*rdx+0x10]
+ mov ecx, r15d + mov rcx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo cmp qword ptr [rcx], rdx
- jne SHORT G_M50755_IG15 - mov r8, r14 - ; gcrRegs +[r8] - cmp qword ptr [r8], rdx - jne SHORT G_M50755_IG09 - mov rdx, qword ptr [r14+0x50] - cmp rdx, qword ptr [rcx+0x50]
+ jne SHORT G_M50755_IG18 + mov rdx, r14 + ; gcrRegs +[rdx] + test rdx, rdx
je SHORT G_M50755_IG11
- ;; size=41 bbWeight=66.63 PerfScore 1116.02 -G_M50755_IG09: ; bbWeight=66.63, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx r8] - inc r15d - cmp dword ptr [rbx+0x08], r15d - jg SHORT G_M50755_IG08 - ;; size=9 bbWeight=66.63 PerfScore 283.17 -G_M50755_IG10: ; bbWeight=1.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r14] - jmp SHORT G_M50755_IG12 - ;; size=2 bbWeight=1.02 PerfScore 2.05 -G_M50755_IG11: ; bbWeight=66.63, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref - ; gcrRegs +[r14]
+ ;; size=31 bbWeight=66.63 PerfScore 533.02 +G_M50755_IG09: ; bbWeight=33.31, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo + cmp qword ptr [rdx], rax + je SHORT G_M50755_IG11 + ;; size=15 bbWeight=33.31 PerfScore 141.58 +G_M50755_IG10: ; bbWeight=16.66, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=16.66 PerfScore 4.16 +G_M50755_IG11: ; bbWeight=66.63, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M50755_IG16 + mov rdx, qword ptr [rdx+0x50] + ; gcrRegs -[rdx] + cmp rdx, qword ptr [rcx+0x50] + jne SHORT G_M50755_IG16 + ;; size=15 bbWeight=66.63 PerfScore 483.05 +G_M50755_IG12: ; bbWeight=66.63, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx]
movsxd rdx, r15d mov rcx, rbx ; gcrRegs +[rcx] @@ -121,12 +125,12 @@ G_M50755_IG11: ; bbWeight=66.63, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefR ; gcrRegs -[rcx r8 r14] ; gcr arg pop 0 ;; size=14 bbWeight=66.63 PerfScore 116.60
-G_M50755_IG12: ; bbWeight=1.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG13: ; bbWeight=1.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
inc ebp cmp dword ptr [rdi+0x08], ebp jg SHORT G_M50755_IG06 ;; size=7 bbWeight=1.02 PerfScore 4.35
-G_M50755_IG13: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx] @@ -137,7 +141,7 @@ G_M50755_IG13: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; byrRegs -[rcx] nop ;; size=13 bbWeight=0.02 PerfScore 0.05
-G_M50755_IG14: ; bbWeight=0.02, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.02, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -147,8 +151,18 @@ G_M50755_IG14: ; bbWeight=0.02, epilog, nogc, extend pop r15 ret ;; size=13 bbWeight=0.02 PerfScore 0.10
-G_M50755_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rcx rbx rsi rdi r14]
+G_M50755_IG16: ; bbWeight=66.63, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx rsi rdi r14] + inc r15d + cmp dword ptr [rbx+0x08], r15d + jg SHORT G_M50755_IG08 + ;; size=9 bbWeight=66.63 PerfScore 283.17 +G_M50755_IG17: ; bbWeight=1.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] + jmp SHORT G_M50755_IG13 + ;; size=2 bbWeight=1.02 PerfScore 2.05 +G_M50755_IG18: ; bbWeight=0, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rcx r14]
mov rdx, r14 ; gcrRegs +[rdx] mov rax, qword ptr [rcx] @@ -157,11 +171,11 @@ G_M50755_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=40CA { ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M50755_IG11 - jmp SHORT G_M50755_IG09
+ jne SHORT G_M50755_IG12 + jmp SHORT G_M50755_IG16
;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 18, PerfScore 1546.36, instruction count 75, allocated bytes for code 200 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 222, prolog size 18, PerfScore 1592.17, instruction count 81, allocated bytes for code 222 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================ Unwind Info:

+48 (+12.37%) : 78027.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)

@@ -11,44 +11,43 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]> ; V01 arg1 [V01,T10] ( 12, 250.20) ref -> rsi class-hnd single-def <System.__Canon[]>
-; V02 arg2 [V02,T02] ( 13, 956.11) ref -> rbx class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T15] ( 5, 4 ) int -> r9 single-def -; V04 arg4 [V04,T16] ( 1, 1 ) int -> [rsp+0x70] single-def
+; V02 arg2 [V02,T08] ( 9, 479.55) ref -> rbx class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T16] ( 5, 4 ) int -> r9 single-def +; V04 arg4 [V04,T17] ( 1, 1 ) int -> [rsp+0x70] single-def
; V05 loc0 [V05,T11] ( 11, 248.04) int -> rdi
-; V06 loc1 [V06,T12] ( 13, 12.41) int -> rax -; V07 loc2 [V07,T01] ( 13, 970.02) int -> rbp
+; V06 loc1 [V06,T13] ( 13, 12.41) int -> rax +; V07 loc2 [V07,T02] ( 13, 970.02) int -> rbp
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 6, 476.55) int -> rax "guarded devirt return temp" -; V10 tmp2 [V10,T00] ( 10,1429.66) ref -> rcx "guarded devirt arg temp"
+; V09 tmp1 [V09,T09] ( 6, 476.55) int -> rax "guarded devirt return temp" +; V10 tmp2 [V10,T01] ( 10,1429.66) ref -> rcx "guarded devirt arg temp"
; V11 tmp3 [V11,T03] ( 8, 953.11) ref -> rcx class-hnd exact "guarded devirt this exact temp" <System.String>
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V13 tmp5 [V13,T09] ( 4, 476.55) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String> -; V14 tmp6 [V14,T04] ( 4, 953.11) byref -> rcx "impAppendStmt"
+; V12 tmp4 [V12,T04] ( 8, 953.11) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.String> +; V13 tmp5 [V13,T05] ( 4, 953.11) byref -> rcx "impAppendStmt" +;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp8 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp9 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V20 cse0 [V20,T13] ( 3, 7.21) ref -> rcx "CSE - aggressive" -; V21 cse1 [V21,T07] ( 3, 714.03) ref -> rcx "CSE - aggressive" -; V22 cse2 [V22,T08] ( 3, 707.68) int -> r8 "CSE - aggressive" -; V23 cse3 [V23,T06] ( 6, 714.83) long -> r14 multi-def "CSE - aggressive" -; V24 cse4 [V24,T14] ( 3, 7.15) int -> r8 "CSE - aggressive"
+; V19 cse0 [V19,T14] ( 3, 7.21) ref -> rcx "CSE - aggressive" +; V20 cse1 [V20,T06] ( 3, 714.03) ref -> rcx "CSE - aggressive" +; V21 cse2 [V21,T07] ( 3, 707.68) int -> r8 "CSE - aggressive" +; V22 cse3 [V22,T15] ( 3, 7.15) int -> r8 "CSE - aggressive" +; V23 rat0 [V23,T00] ( 5,1769.21) ref -> rdx "replacement local" +; V24 rat1 [V24,T12] ( 5, 17.87) ref -> rdx "replacement local"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M28111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rdx ; gcrRegs +[rsi] mov rbx, r8 ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=14 bbWeight=1 PerfScore 4.75
G_M28111_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov edi, r9d add edi, dword ptr [rsp+0x70] @@ -59,7 +58,7 @@ G_M28111_IG03: ; bbWeight=0.52, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; gcrRegs -[rbx] mov eax, r9d cmp eax, edi
- jge G_M28111_IG26
+ jge G_M28111_IG33
;; size=11 bbWeight=0.52 PerfScore 0.78 G_M28111_IG04: ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz test rsi, rsi @@ -84,12 +83,12 @@ G_M28111_IG07: ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ;; size=6 bbWeight=2.71 PerfScore 4.06 G_M28111_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi]
- jmp G_M28111_IG26
+ jmp G_M28111_IG33
;; size=5 bbWeight=0.27 PerfScore 0.55 G_M28111_IG09: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] cmp eax, dword ptr [rsi+0x08]
- jae G_M28111_IG30
+ jae G_M28111_IG37
mov r8d, eax cmp gword ptr [rsi+8*r8+0x10], 0 je SHORT G_M28111_IG12 @@ -101,153 +100,180 @@ G_M28111_IG10: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ;; size=6 bbWeight=0.03 PerfScore 0.04 G_M28111_IG11: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi]
- jmp G_M28111_IG26
+ jmp G_M28111_IG33
;; size=5 bbWeight=0.27 PerfScore 0.55 G_M28111_IG12: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 32
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.25 PerfScore 0.92
+ ;; size=9 bbWeight=0.25 PerfScore 0.80
G_M28111_IG13: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx rsi] mov ebp, r9d cmp ebp, edi
- jge G_M28111_IG26
+ jge G_M28111_IG33
;; size=11 bbWeight=0.48 PerfScore 0.72 G_M28111_IG14: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rsi, rsi
- je SHORT G_M28111_IG21
+ je G_M28111_IG24
mov r8d, ebp or r8d, edi
- jl SHORT G_M28111_IG21
+ jl SHORT G_M28111_IG24
cmp dword ptr [rsi+0x08], edi
- jl SHORT G_M28111_IG21 - ;; size=18 bbWeight=0.48 PerfScore 3.23
+ jl SHORT G_M28111_IG24 + ;; size=22 bbWeight=0.48 PerfScore 3.23
G_M28111_IG15: ; bbWeight=239.07, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov r8d, ebp mov rcx, gword ptr [rsi+8*r8+0x10] ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M28111_IG19
+ je SHORT G_M28111_IG22
;; size=13 bbWeight=239.07 PerfScore 836.73 G_M28111_IG16: ; bbWeight=235.89, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
- mov r14, 0xD1FFAB1E ; System.String - cmp qword ptr [rcx], r14 - jne G_M28111_IG31
+ mov r8, 0xD1FFAB1E ; System.String + cmp qword ptr [rcx], r8 + jne G_M28111_IG38
;; size=19 bbWeight=235.89 PerfScore 1002.55 G_M28111_IG17: ; bbWeight=235.89, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz cmp rcx, rbx
- je G_M28111_IG28 - mov rax, rbx - ; gcrRegs +[rax] - cmp qword ptr [rax], r14 - jne SHORT G_M28111_IG19
+ je G_M28111_IG35 + mov rdx, rbx + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M28111_IG20 + ;; size=17 bbWeight=235.89 PerfScore 648.71 +G_M28111_IG18: ; bbWeight=117.95, gcrefRegs=004E {rcx rdx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov r8, 0xD1FFAB1E ; System.String + cmp qword ptr [rdx], r8 + je SHORT G_M28111_IG20 + ;; size=15 bbWeight=117.95 PerfScore 501.28 +G_M28111_IG19: ; bbWeight=58.97, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=58.97 PerfScore 14.74 +G_M28111_IG20: ; bbWeight=235.89, gcrefRegs=004E {rcx rdx rbx rsi}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M28111_IG22
mov r8d, dword ptr [rcx+0x08]
- cmp r8d, dword ptr [rbx+0x08] - jne SHORT G_M28111_IG19
+ cmp r8d, dword ptr [rdx+0x08] + jne SHORT G_M28111_IG22
add rcx, 12 ; gcrRegs -[rcx] ; byrRegs +[rcx] add r8d, r8d
- lea rdx, bword ptr [rbx+0x0C]
+ add rdx, 12 + ; gcrRegs -[rdx]
; byrRegs +[rdx] call [<unknown method>]
- ; gcrRegs -[rax]
; byrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=44 bbWeight=235.89 PerfScore 3656.36 -G_M28111_IG18: ; bbWeight=235.89, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=235.89 PerfScore 2594.84 +G_M28111_IG21: ; bbWeight=235.89, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test eax, eax
- jne SHORT G_M28111_IG28 - ;; size=4 bbWeight=235.89 PerfScore 294.87 -G_M28111_IG19: ; bbWeight=239.07, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M28111_IG35 + ;; size=8 bbWeight=235.89 PerfScore 294.87 +G_M28111_IG22: ; bbWeight=239.07, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
inc ebp cmp ebp, edi jl SHORT G_M28111_IG15 ;; size=6 bbWeight=239.07 PerfScore 358.60
-G_M28111_IG20: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG23: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- jmp SHORT G_M28111_IG26
+ jmp SHORT G_M28111_IG33
;; size=2 bbWeight=0.52 PerfScore 1.03
-G_M28111_IG21: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG24: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi] cmp ebp, dword ptr [rsi+0x08]
- jae SHORT G_M28111_IG30
+ jae G_M28111_IG37
mov r8d, ebp mov rcx, gword ptr [rsi+8*r8+0x10] ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M28111_IG25 - ;; size=18 bbWeight=2.41 PerfScore 18.11 -G_M28111_IG22: ; bbWeight=2.38, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz - mov r14, 0xD1FFAB1E ; System.String - cmp qword ptr [rcx], r14 - jne SHORT G_M28111_IG32
+ je SHORT G_M28111_IG32 + ;; size=22 bbWeight=2.41 PerfScore 18.11 +G_M28111_IG25: ; bbWeight=2.38, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov r8, 0xD1FFAB1E ; System.String + cmp qword ptr [rcx], r8 + jne SHORT G_M28111_IG39
;; size=15 bbWeight=2.38 PerfScore 10.13
-G_M28111_IG23: ; bbWeight=2.38, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG26: ; bbWeight=2.38, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp rcx, rbx
- je SHORT G_M28111_IG28 - mov rax, rbx - ; gcrRegs +[rax] - cmp qword ptr [rax], r14 - jne SHORT G_M28111_IG25
+ je SHORT G_M28111_IG35 + mov rdx, rbx + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M28111_IG29 + ;; size=13 bbWeight=2.38 PerfScore 6.55 +G_M28111_IG27: ; bbWeight=1.19, gcrefRegs=004E {rcx rdx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov r8, 0xD1FFAB1E ; System.String + cmp qword ptr [rdx], r8 + je SHORT G_M28111_IG29 + ;; size=15 bbWeight=1.19 PerfScore 5.06 +G_M28111_IG28: ; bbWeight=0.60, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx]
...

+26 (+12.62%) : 102447.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (Tier1)

@@ -9,23 +9,22 @@ ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T06] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 7, 8.88) ref -> rbx class-hnd single-def <System.__Canon[]> ; V02 loc0 [V02,T09] ( 3, 2.03) ref -> rdi class-hnd single-def <System.__Canon[]> ; V03 loc1 [V03,T12] ( 4, 0.56) ref -> rdi class-hnd single-def <System.__Canon[]> ; V04 loc2 [V04,T11] ( 5, 1.03) int -> rbp
-; V05 loc3 [V05,T00] ( 6, 25.25) ref -> r14 class-hnd <System.__Canon>
+; V05 loc3 [V05,T05] ( 5, 7.25) ref -> r14 class-hnd <System.__Canon>
; V06 loc4 [V06,T03] ( 6, 9.25) int -> r15
-; V07 loc5 [V07,T01] ( 4, 21.38) ref -> rcx class-hnd <System.__Canon>
+; V07 loc5 [V07,T00] ( 4, 21.38) ref -> rcx class-hnd <System.__Canon>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T06] ( 2, 2.25) int -> rax "guarded devirt return temp"
+; V09 tmp1 [V09,T07] ( 2, 2.25) int -> rax "guarded devirt return temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo> ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo> -; V13 tmp5 [V13,T05] ( 2, 2.25) ref -> rax class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> -; V14 cse0 [V14,T10] ( 3, 1.62) int -> r13 "CSE - moderate" -; V15 cse1 [V15,T07] ( 3, 3.38) long -> rax "CSE - aggressive" -; V16 cse2 [V16,T08] ( 3, 3.38) long -> rdx "CSE - aggressive"
+; V12 tmp4 [V12,T01] ( 3, 20.25) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo> +; V13 cse0 [V13,T10] ( 3, 1.62) int -> r13 "CSE - moderate" +; V14 cse1 [V14,T08] ( 3, 3.38) long -> rax "CSE - aggressive" +; V15 rat0 [V15,T04] ( 5, 8.44) ref -> rdx "replacement local"
; ; Lcl frame size = 32 @@ -75,18 +74,18 @@ G_M50755_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=00C ; gcrRegs +[rbx rsi rdi] xor ebp, ebp cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M50755_IG11
+ jle SHORT G_M50755_IG14
;; size=8 bbWeight=0.03 PerfScore 0.13 G_M50755_IG06: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz mov ecx, ebp mov r14, gword ptr [rdi+8*rcx+0x10] ; gcrRegs +[r14] test r14, r14
- je SHORT G_M50755_IG11
+ je SHORT G_M50755_IG14
xor r15d, r15d mov r13d, dword ptr [rbx+0x08] test r13d, r13d
- jle SHORT G_M50755_IG10
+ jle SHORT G_M50755_IG13
;; size=24 bbWeight=0.25 PerfScore 1.75 G_M50755_IG07: ; bbWeight=1.12, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz mov ecx, r15d @@ -95,19 +94,33 @@ G_M50755_IG07: ; bbWeight=1.12, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe mov rax, qword ptr [rcx] mov rdx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo cmp rax, rdx
- jne SHORT G_M50755_IG13 - mov rax, r14 - ; gcrRegs +[rax] - cmp qword ptr [rax], rdx - jne SHORT G_M50755_IG14 - ;; size=34 bbWeight=1.12 PerfScore 11.25 -G_M50755_IG08: ; bbWeight=18, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rdx, qword ptr [r14+0x50]
+ jne SHORT G_M50755_IG16 + mov rdx, r14 + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M50755_IG10 + ;; size=34 bbWeight=1.12 PerfScore 8.16 +G_M50755_IG08: ; bbWeight=0.56, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo + cmp qword ptr [rdx], rax + je SHORT G_M50755_IG10 + ;; size=15 bbWeight=0.56 PerfScore 2.39 +G_M50755_IG09: ; bbWeight=0.28, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=0.28 PerfScore 0.07 +G_M50755_IG10: ; bbWeight=1.12, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M50755_IG17 + ;; size=5 bbWeight=1.12 PerfScore 1.41 +G_M50755_IG11: ; bbWeight=18, gcrefRegs=40CE {rcx rdx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz + mov rdx, qword ptr [rdx+0x50] + ; gcrRegs -[rdx]
cmp rdx, qword ptr [rcx+0x50]
- jne SHORT G_M50755_IG14
+ jne SHORT G_M50755_IG17
;; size=10 bbWeight=18 PerfScore 108.00
-G_M50755_IG09: ; bbWeight=4.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M50755_IG12: ; bbWeight=4.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] movsxd rdx, r15d mov rcx, rbx @@ -118,12 +131,12 @@ G_M50755_IG09: ; bbWeight=4.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe ; gcrRegs -[rcx r8 r14] ; gcr arg pop 0 ;; size=14 bbWeight=4.50 PerfScore 7.88
-G_M50755_IG10: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG13: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
inc ebp cmp dword ptr [rdi+0x08], ebp jg SHORT G_M50755_IG06 ;; size=7 bbWeight=0.25 PerfScore 1.06
-G_M50755_IG11: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx] @@ -134,7 +147,7 @@ G_M50755_IG11: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; byrRegs -[rcx] nop ;; size=13 bbWeight=0.03 PerfScore 0.06
-G_M50755_IG12: ; bbWeight=0.03, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -145,7 +158,7 @@ G_M50755_IG12: ; bbWeight=0.03, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=0.03 PerfScore 0.15
-G_M50755_IG13: ; bbWeight=1.12, gcVars=0000000000000000 {}, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M50755_IG16: ; bbWeight=1.12, gcVars=0000000000000000 {}, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx rbx rsi rdi r14] mov rdx, r14 ; gcrRegs +[rdx] @@ -154,19 +167,19 @@ G_M50755_IG13: ; bbWeight=1.12, gcVars=0000000000000000 {}, gcrefRegs=40C ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M50755_IG09
+ jne SHORT G_M50755_IG12
;; size=14 bbWeight=1.12 PerfScore 7.31
-G_M50755_IG14: ; bbWeight=1.12, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG17: ; bbWeight=1.12, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
inc r15d cmp r13d, r15d
- jg SHORT G_M50755_IG07 - ;; size=8 bbWeight=1.12 PerfScore 1.69 -G_M50755_IG15: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jg G_M50755_IG07 + ;; size=12 bbWeight=1.12 PerfScore 1.69 +G_M50755_IG18: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- jmp SHORT G_M50755_IG10
+ jmp SHORT G_M50755_IG13
;; size=2 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 206, prolog size 20, PerfScore 157.32, instruction count 78, allocated bytes for code 206 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 158.09, instruction count 84, allocated bytes for code 232 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-25 (-33.78%) : 6452.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info:

-25 (-29.07%) : 20816.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Tier1)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, rdx - ;; size=17 bbWeight=1 PerfScore 3.75 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=14 bbWeight=1 PerfScore 3.50 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rdx+0x38] + mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax] mov rax, qword ptr [rax+0x70] call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M60617_IG05 - ;; size=36 bbWeight=1 PerfScore 14.00 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M60617_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
; ============================================================ Unwind Info:

-25 (-27.47%) : 29308.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttributeSystem.__Canon:System.__Canon (Tier1)

@@ -8,14 +8,13 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Reflection.MemberInfo> -; V02 arg1 [V02,T03] ( 3, 3 ) ubyte -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MemberInfo> +; V02 arg1 [V02,T02] ( 3, 3 ) ubyte -> rsi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T06] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp1 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V06 cse0 [V06,T05] ( 3, 3 ) long -> rdi "CSE - aggressive"
; ; Lcl frame size = 48 @@ -25,52 +24,33 @@ G_M29548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - mov rsi, rdx - ; gcrRegs +[rsi] - mov edi, r8d - ;; size=21 bbWeight=1 PerfScore 5.00 -G_M29548_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rbx, rdx + ; gcrRegs +[rbx] + mov esi, r8d + ;; size=18 bbWeight=1 PerfScore 4.75 +G_M29548_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, qword ptr [rcx+0x38] + mov rcx, qword ptr [rdi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- movzx r8, dil - mov rcx, rsi
+ movzx r8, sil + mov rcx, rbx
; gcrRegs +[rcx] call [System.Attribute:GetCustomAttribute(System.Reflection.MemberInfo,System.Type,ubyte):System.Attribute]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M29548_IG05 - ;; size=36 bbWeight=1 PerfScore 10.25 -G_M29548_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M29548_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M29548_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rdi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M29548_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=40 bbWeight=1 PerfScore 12.25 +G_M29548_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -78,7 +58,7 @@ G_M29548_IG06: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 91, prolog size 12, PerfScore 20.44, instruction count 31, allocated bytes for code 91 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
+; Total bytes of code 66, prolog size 12, PerfScore 19.75, instruction count 23, allocated bytes for code 66 (MethodHash=c5378c93) for method System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
; ============================================================ Unwind Info:

+6 (+4.65%) : 51709.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M896_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [(reloc)] cmp ebx, esi
- jge SHORT G_M896_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jge SHORT G_M896_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=33 bbWeight=1 PerfScore 5.75 -G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M896_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M896_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M896_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M896_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M896_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=52 bbWeight=1 PerfScore 9.25 +G_M896_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call [CORINFO_HELP_CHKCASTARRAY] + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M896_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00 +G_M896_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 168 pop rbx @@ -75,7 +66,7 @@ G_M896_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, e ret ;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=984afc7f) for method PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
; ============================================================ Unwind Info:

+6 (+4.65%) : 52573.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M40467_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M40467_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [(reloc)] cmp ebx, esi
- jge SHORT G_M40467_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jge SHORT G_M40467_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=33 bbWeight=1 PerfScore 5.75 -G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M40467_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M40467_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M40467_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M40467_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M40467_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=52 bbWeight=1 PerfScore 9.25 +G_M40467_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call [CORINFO_HELP_CHKCASTARRAY] + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M40467_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00 +G_M40467_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 168 pop rbx @@ -75,7 +66,7 @@ G_M40467_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=dc5f61ec) for method PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
; ============================================================ Unwind Info:

+6 (+4.65%) : 31354.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)

@@ -9,14 +9,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <PerfLabTests.CastingPerf>
-; V01 loc0 [V01,T02] ( 4, 13 ) int -> rbx
+; V01 loc0 [V01,T00] ( 4, 13 ) int -> rbx
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 17 ) ref -> rdx "CASTCLASS eval op1" -; V04 tmp2 [V04,T04] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 27 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V06 cse0 [V06,T03] ( 3, 6 ) int -> rsi "CSE - aggressive" -; V07 cse1 [V07,T05] ( 2, 5 ) ref -> rdi hoist "CSE - aggressive" -; V08 cse2 [V08,T06] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
+; V03 cse0 [V03,T02] ( 3, 6 ) int -> rsi "CSE - aggressive" +; V04 cse1 [V04,T01] ( 3, 6 ) ref -> rdi "CSE - aggressive" +; V05 cse2 [V05,T03] ( 2, 5 ) long -> rbp hoist "CSE - aggressive"
; ; Lcl frame size = 40 @@ -30,42 +27,36 @@ G_M36328_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M36328_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov esi, dword ptr [(reloc)] cmp ebx, esi
- jge SHORT G_M36328_IG07 - mov rcx, 0xD1FFAB1E ; static handle - mov rdi, gword ptr [rcx]
+ jge SHORT G_M36328_IG04 + mov rdx, 0xD1FFAB1E ; static handle + mov rdi, gword ptr [rdx]
; gcrRegs +[rdi]
- mov rbp, 0xD1FFAB1E ; static handle - ;; size=33 bbWeight=1 PerfScore 5.75 -G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M36328_IG06 - ;; size=11 bbWeight=4 PerfScore 7.00 -G_M36328_IG04: ; bbWeight=1, gcrefRegs=0085 {rax rdx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M36328_IG06 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M36328_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call [CORINFO_HELP_CHKCASTARRAY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M36328_IG06: ; bbWeight=4, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz - mov rcx, rbp
+ mov rbp, 0xD1FFAB1E ; static handle + ;; size=52 bbWeight=1 PerfScore 9.25 +G_M36328_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rdx, rdi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call [CORINFO_HELP_CHKCASTARRAY] + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbp
call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rax rdx] inc ebx cmp ebx, esi jl SHORT G_M36328_IG03
- ;; size=17 bbWeight=4 PerfScore 12.00 -G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=4 PerfScore 26.00 +G_M36328_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdi] add rsp, 168 pop rbx @@ -75,7 +66,7 @@ G_M36328_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret ;; size=12 bbWeight=1 PerfScore 3.25
-; Total bytes of code 129, prolog size 35, PerfScore 39.00, instruction count 31, allocated bytes for code 129 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
+; Total bytes of code 135, prolog size 35, PerfScore 43.75, instruction count 29, allocated bytes for code 135 (MethodHash=58d37217) for method PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-13 (-34.21%) : 234145.dasm - CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)

@@ -7,43 +7,28 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <CastExpansionTests>
-; V01 arg1 [V01,T01] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <<unknown class>>
; ; Lcl frame size = 40 G_M3705_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M3705_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M3705_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M3705_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M3705_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rax], rcx - je SHORT G_M3705_IG05 - ;; size=15 bbWeight=0.25 PerfScore 1.06 -G_M3705_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M3705_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M3705_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=16 bbWeight=1 PerfScore 1.50 +G_M3705_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 38, prolog size 4, PerfScore 4.44, instruction count 11, allocated bytes for code 38 (MethodHash=192ff186) for method CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
+; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=192ff186) for method CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
; ============================================================ Unwind Info:

-25 (-33.78%) : 1720.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info:

-22 (-32.35%) : 570145.dasm - Program+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Program+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -21,50 +20,32 @@ G_M51557_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M51557_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M51557_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rcx, qword ptr [rdx+0x38] + mov rbx, qword ptr [rcx] + mov rcx, rbx
mov rdx, r8 ; gcrRegs +[rdx] call CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[rdx r8] +[rax] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M51557_IG05 - ;; size=23 bbWeight=1 PerfScore 6.75 -G_M51557_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M51557_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M51557_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M51557_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M51557_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=30 bbWeight=1 PerfScore 7.25 +G_M51557_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 68, prolog size 10, PerfScore 13.44, instruction count 22, allocated bytes for code 68 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 46, prolog size 10, PerfScore 11.25, instruction count 15, allocated bytes for code 46 (MethodHash=2a46369a) for method Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+34 (+12.19%) : 118301.dasm - System.Reflection.Pointer:Box(ulong,System.Type):System.Object (Instrumented Tier1)

@@ -8,22 +8,22 @@ ; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 3 ) long -> rsi single-def -; V01 arg1 [V01,T01] ( 7, 5.50) ref -> rbx class-hnd single-def <System.Type> -; V02 loc0 [V02,T03] ( 2, 2 ) ref -> rbx class-hnd exact <System.RuntimeType>
+; V00 arg0 [V00,T03] ( 3, 3 ) long -> rsi single-def +; V01 arg1 [V01,T00] ( 7, 6 ) ref -> rbx class-hnd single-def <System.Type> +; V02 loc0 [V02,T04] ( 3, 3 ) ref -> rbx class-hnd exact single-def <System.RuntimeType>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V05 tmp2 [V05,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Pointer> -; V06 tmp3 [V06,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V07 tmp4 [V07,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V08 tmp5 [V08,T11] ( 2, 0 ) int -> rax "guarded devirt return temp" -;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> -;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V11 tmp8 [V11,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V12 tmp9 [V12,T08] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V13 tmp10 [V13,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V14 tmp11 [V14,T10] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V15 cse0 [V15,T04] ( 3, 2 ) long -> rdi "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Pointer> +; V05 tmp2 [V05,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V06 tmp3 [V06,T08] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V07 tmp4 [V07,T06] ( 2, 1 ) int -> rax "guarded devirt return temp" +;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> +;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +; V10 tmp7 [V10,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V11 tmp8 [V11,T10] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V12 tmp9 [V12,T11] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V13 tmp10 [V13,T12] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V14 cse0 [V14,T05] ( 3, 2.50) long -> rdi "CSE - aggressive" +; V15 rat0 [V15,T02] ( 5, 7.50) ref -> rbx "replacement local"
; ; Lcl frame size = 32 @@ -38,12 +38,12 @@ G_M3465_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=13 bbWeight=1 PerfScore 3.75 G_M3465_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test rbx, rbx
- je SHORT G_M3465_IG06
+ je G_M3465_IG12
mov rdi, qword ptr [rbx] mov rcx, 0xD1FFAB1E ; System.RuntimeType cmp rdi, rcx
- jne SHORT G_M3465_IG07 - ;; size=23 bbWeight=1 PerfScore 4.75
+ jne SHORT G_M3465_IG09 + ;; size=27 bbWeight=1 PerfScore 4.75
G_M3465_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -51,9 +51,25 @@ G_M3465_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b ; gcrRegs -[rcx] ; gcr arg pop 0 cmp eax, 15
- jne SHORT G_M3465_IG08
+ jne SHORT G_M3465_IG10
;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M3465_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M3465_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + test rbx, rbx + je SHORT G_M3465_IG07 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M3465_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; System.RuntimeType + cmp qword ptr [rbx], rcx + je SHORT G_M3465_IG07 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M3465_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + xor rbx, rbx + ; gcrRegs +[rbx] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M3465_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + test rbx, rbx + je G_M3465_IG11
mov rcx, 0xD1FFAB1E ; System.Reflection.Pointer call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -70,40 +86,27 @@ G_M3465_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre ; byrRegs -[rcx] mov rax, rdi ; gcrRegs +[rax]
- ;; size=37 bbWeight=1 PerfScore 4.50 -G_M3465_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=46 bbWeight=1 PerfScore 5.75 +G_M3465_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=1 PerfScore 2.75
-G_M3465_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rdi] - mov ecx, 0xC40 - mov rdx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rcx, rax - ; gcrRegs +[rcx] - call [System.ArgumentNullException:Throw(System.String)] - ; gcrRegs -[rax rcx] - ; gcr arg pop 0 - int3 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M3465_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx]
+G_M3465_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rdi] +[rbx]
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rdi+0x60] call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M3465_IG09 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3465_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M3465_IG04 + ;; size=14 bbWeight=0.50 PerfScore 3.25 +G_M3465_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -133,7 +136,7 @@ G_M3465_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx rbx] ; gcr arg pop 0 ;; size=70 bbWeight=0 PerfScore 0.00
-G_M3465_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M3465_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -161,11 +164,23 @@ G_M3465_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rcx] call CORINFO_HELP_THROW ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0 + ;; size=70 bbWeight=0 PerfScore 0.00 +G_M3465_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, 0xC40 + mov rdx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rcx, rax + ; gcrRegs +[rcx] + call [System.ArgumentNullException:Throw(System.String)] + ; gcrRegs -[rax rcx]
; gcr arg pop 0 int3
- ;; size=71 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 279, prolog size 7, PerfScore 17.00, instruction count 69, allocated bytes for code 279 (MethodHash=2f25f276) for method System.Reflection.Pointer:Box(ulong,System.Type):System.Object (Instrumented Tier1)
+; Total bytes of code 313, prolog size 7, PerfScore 24.94, instruction count 76, allocated bytes for code 313 (MethodHash=2f25f276) for method System.Reflection.Pointer:Box(ulong,System.Type):System.Object (Instrumented Tier1)
; ============================================================ Unwind Info:

+33 (+18.86%) : 218989.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

@@ -5,20 +5,19 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 301
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 301
; 2 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 9, 6.93) ref -> rbx class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 5.94) ref -> rsi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T02] ( 6, 4.97) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T06] ( 3, 1.97) int -> rax "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V06 tmp4 [V06,T02] ( 4, 3.92) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String> -; V07 tmp5 [V07,T03] ( 2, 3.93) byref -> rcx single-def "impAppendStmt" -; V08 cse0 [V08,T04] ( 4, 3.92) int -> rdi "CSE - aggressive" -; V09 cse1 [V09,T05] ( 3, 2.95) long -> rcx "CSE - moderate"
+; V05 tmp3 [V05,T03] ( 5, 4.91) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V06 tmp4 [V06,T04] ( 2, 3.93) byref -> rcx single-def "impAppendStmt" +; V07 cse0 [V07,T05] ( 4, 3.92) int -> rdi "CSE - aggressive" +; V08 rat0 [V08,T01] ( 5, 7.38) ref -> rsi "replacement local"
; ; Lcl frame size = 32 @@ -29,45 +28,46 @@ G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 32 mov rbx, rcx ; gcrRegs +[rbx]
- mov rsi, rdx - ; gcrRegs +[rsi] - ;; size=13 bbWeight=1 PerfScore 3.75 -G_M12969_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - cmp rbx, rsi - je SHORT G_M12969_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M12969_IG03: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.50 +G_M12969_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rdx] + cmp rbx, rdx + je G_M12969_IG12 + ;; size=9 bbWeight=1 PerfScore 1.25 +G_M12969_IG03: ; bbWeight=0.99, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M12969_IG06 - ;; size=5 bbWeight=0.99 PerfScore 1.23 -G_M12969_IG04: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - test rsi, rsi - je SHORT G_M12969_IG06
+ je G_M12969_IG14 + ;; size=9 bbWeight=0.99 PerfScore 1.23 +G_M12969_IG04: ; bbWeight=0.98, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je G_M12969_IG14
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rbx], rcx
- jne SHORT G_M12969_IG15
+ jne G_M12969_IG16 + mov rsi, rdx + ; gcrRegs +[rsi] + test rsi, rsi + je SHORT G_M12969_IG07 + ;; size=36 bbWeight=0.98 PerfScore 6.88 +G_M12969_IG05: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdx] + mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [rsi], rcx
- jne SHORT G_M12969_IG14 - ;; size=25 bbWeight=0.98 PerfScore 9.34 -G_M12969_IG05: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M12969_IG08 - ;; size=2 bbWeight=0.98 PerfScore 1.95 -G_M12969_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rsi] - xor eax, eax - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M12969_IG07: ; bbWeight=0.00, epilog, nogc, extend - add rsp, 32 - pop rbx - pop rsi - pop rdi - ret - ;; size=8 bbWeight=0.00 PerfScore 0.01 -G_M12969_IG08: ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rsi]
+ je SHORT G_M12969_IG07 + ;; size=15 bbWeight=0.49 PerfScore 2.09 +G_M12969_IG06: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M12969_IG07: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M12969_IG18 + ;; size=5 bbWeight=0.98 PerfScore 1.23 +G_M12969_IG08: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x08] cmp edi, dword ptr [rsi+0x08]
- jne SHORT G_M12969_IG14
+ jne SHORT G_M12969_IG18
;; size=8 bbWeight=0.98 PerfScore 5.86 G_M12969_IG09: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref mov ecx, 1 @@ -112,28 +112,37 @@ G_M12969_IG13: ; bbWeight=0.01, epilog, nogc, extend pop rdi ret ;; size=8 bbWeight=0.01 PerfScore 0.04
-G_M12969_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12969_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
- jmp SHORT G_M12969_IG10 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M12969_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi]
+ ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M12969_IG15: ; bbWeight=0.00, epilog, nogc, extend + add rsp, 32 + pop rbx + pop rsi + pop rdi + ret + ;; size=8 bbWeight=0.00 PerfScore 0.01 +G_M12969_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdx rbx]
mov rcx, rbx ; gcrRegs +[rcx]
- mov rdx, rsi - ; gcrRegs +[rdx]
mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48]
- ;; size=13 bbWeight=0 PerfScore 0.00 -G_M12969_IG16: ; bbWeight=0, epilog, nogc, extend
+ ;; size=10 bbWeight=0 PerfScore 0.00 +G_M12969_IG17: ; bbWeight=0, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi tail.jmp [rax+0x10]<unknown method> ;; size=11 bbWeight=0 PerfScore 0.00
+G_M12969_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rcx rdx rbx] + xor eax, eax + jmp SHORT G_M12969_IG10 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 13, PerfScore 44.33, instruction count 63, allocated bytes for code 175 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 208, prolog size 10, PerfScore 43.05, instruction count 67, allocated bytes for code 208 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================ Unwind Info:

+47 (+335.71%) : 473853.dasm - T:TestEntryPoint():int (FullOpts)

@@ -11,24 +11,51 @@ ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-;* V03 tmp2 [V03,T00] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> -;* V04 tmp3 [V04,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05,T01] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <<unknown class>>
+;* V03 tmp2 [V03,T01] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +; V04 rat0 [V04,T00] ( 5, 7.50) ref -> rax "replacement local"
; ; Lcl frame size = 40
-G_M32114_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M32114_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32114_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32114_IG05 + ;; size=15 bbWeight=1 PerfScore 1.50 +G_M32114_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; <unknown class> + cmp qword ptr [rax], rcx + je SHORT G_M32114_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M32114_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + xor rax, rax + ; gcrRegs +[rax] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M32114_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + test rax, rax + je SHORT G_M32114_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M32114_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov eax, 100
- ;; size=5 bbWeight=1 PerfScore 0.25 -G_M32114_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M32114_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M32114_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov eax, -1 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M32114_IG09: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 14, prolog size 4, PerfScore 1.75, instruction count 4, allocated bytes for code 14 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
+; Total bytes of code 61, prolog size 4, PerfScore 6.69, instruction count 16, allocated bytes for code 61 (MethodHash=d71e828d) for method T:TestEntryPoint():int (FullOpts)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-30 (-41.67%) : 242959.dasm - CSharpx.Either+<>cDisplayClass13_0`1[System.Canon]:b0():System.Canon:this (FullOpts)

@@ -8,66 +8,38 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 3.25) ref -> rbx this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rsi single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> rdi class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) long -> rcx "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M12636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi - push rsi - push rbp
push rbx
- sub rsp, 40 - mov qword ptr [rsp+0x20], rcx
+ sub rsp, 48 + mov qword ptr [rsp+0x28], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.50 -G_M12636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, gword ptr [rbx+0x08] - ; gcrRegs +[rsi] - mov rdi, rsi - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M12636_IG05 - ;; size=12 bbWeight=1 PerfScore 3.50 -G_M12636_IG03: ; bbWeight=0.25, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - mov rbp, qword ptr [rdi]
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M12636_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbx] call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- cmp rbp, rax - je SHORT G_M12636_IG05 - ;; size=17 bbWeight=0.25 PerfScore 2.06 -G_M12636_IG04: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi]
mov rcx, rax
- mov rdx, rsi
+ mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx] call [CORINFO_HELP_CHKCASTANY]
- ; gcrRegs -[rdx rsi] +[rax]
+ ; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M12636_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rdi - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M12636_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+ nop + ;; size=23 bbWeight=1 PerfScore 10.50 +G_M12636_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 48
pop rbx
- pop rbp - pop rsi - pop rdi
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 72, prolog size 13, PerfScore 15.03, instruction count 27, allocated bytes for code 72 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 14.75, instruction count 13, allocated bytes for code 42 (MethodHash=bbb7cea3) for method CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -75,13 +47,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-25 (-39.68%) : 12473.dasm - Microsoft.FSharp.Core.Operators+Unchecked:UnboxSystem.__Canon:System.__Canon (FullOpts)

@@ -8,61 +8,38 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi - push rsi
push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.50 -G_M7606_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - test rsi, rsi - je SHORT G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rsi]
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M7606_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- cmp rdi, rax - je SHORT G_M7606_IG05 - ;; size=14 bbWeight=0.25 PerfScore 1.56 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
mov rcx, rax mov rdx, rbx ; gcrRegs +[rdx] call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx rbx] +[rax] ; gcr arg pop 0
- mov rsi, rax - ; gcrRegs +[rsi] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rsi - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=19 bbWeight=1 PerfScore 6.75 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx
- pop rsi - pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 11.03, instruction count 23, allocated bytes for code 63 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -70,12 +47,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-25 (-39.68%) : 12950.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValueSystem.Canon,System.Canon:System.__Canon (FullOpts)

@@ -8,61 +8,38 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rbx class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.__Canon>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rax "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rsi class-hnd "spilling QMark2" <System.__Canon>
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 G_M16223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi - push rsi
push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.50 -G_M16223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, rbx - ; gcrRegs +[rsi] - test rsi, rsi - je SHORT G_M16223_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M16223_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rsi]
+ ;; size=13 bbWeight=1 PerfScore 2.50 +G_M16223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- cmp rdi, rax - je SHORT G_M16223_IG05 - ;; size=14 bbWeight=0.25 PerfScore 1.56 -G_M16223_IG04: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
mov rcx, rax mov rdx, rbx ; gcrRegs +[rdx] call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx rbx] +[rax] ; gcr arg pop 0
- mov rsi, rax - ; gcrRegs +[rsi] - ;; size=15 bbWeight=0.12 PerfScore 0.47 -G_M16223_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rsi - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M16223_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=19 bbWeight=1 PerfScore 6.75 +G_M16223_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx
- pop rsi - pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 63, prolog size 12, PerfScore 11.03, instruction count 23, allocated bytes for code 63 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 11.00, instruction count 12, allocated bytes for code 38 (MethodHash=e756c0a0) for method Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -70,12 +47,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-1 (-0.28%) : 139775.dasm - System.Net.Http.Headers.ObjectCollection`1[System.Canon]:Add(System.Canon):this (FullOpts)

@@ -8,42 +8,42 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 14, 9 ) ref -> rbx this class-hnd single-def <System.Net.Http.Headers.ObjectCollection`1[System.__Canon]>
+; V00 this [V00,T00] ( 12, 8 ) ref -> rbx this class-hnd single-def <System.Net.Http.Headers.ObjectCollection`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rsi class-hnd single-def <System.__Canon>
-;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon> -; V03 loc1 [V03,T10] ( 4, 2 ) ref -> rdi class-hnd exact single-def <<unknown class>> -;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> -; V05 loc3 [V05,T04] ( 6, 3 ) int -> rdi -; V06 loc4 [V06,T11] ( 4, 2 ) ref -> r14 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T14] ( 3, 1.50) ref -> r14 class-hnd single-def <System.__Canon> +; V03 loc1 [V03,T06] ( 4, 2 ) ref -> rbp class-hnd exact single-def <<unknown class>> +; V04 loc2 [V04,T07] ( 4, 2 ) ref -> rdi class-hnd single-def <<unknown class>> +; V05 loc3 [V05,T02] ( 6, 3 ) int -> r14 +; V06 loc4 [V06,T08] ( 4, 2 ) ref -> rbp class-hnd exact single-def <<unknown class>>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T07] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1" -; V09 tmp2 [V09,T15] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V10 tmp3 [V10,T03] ( 5, 3.75) ref -> r14 class-hnd "spilling QMark2" <System.__Canon> -; V11 tmp4 [V11,T08] ( 3, 2.25) ref -> rdi single-def "CASTCLASS eval op1" -; V12 tmp5 [V12,T09] ( 3, 2.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V13 tmp6 [V13,T02] ( 7, 6.25) ref -> rbp class-hnd "spilling QMark2" <<unknown class>> -; V14 tmp7 [V14,T12] ( 2, 2 ) long -> rcx "argument with side effect" -; V15 tmp8 [V15,T13] ( 2, 2 ) long -> rcx "argument with side effect" -; V16 tmp9 [V16,T14] ( 2, 2 ) long -> rcx "argument with side effect" -; V17 cse0 [V17,T06] ( 5, 2.50) long -> registers multi-def "CSE - moderate" -; V18 cse1 [V18,T16] ( 3, 1.25) long -> rbp "CSE - conservative" -; V19 cse2 [V19,T05] ( 4, 3 ) ref -> rdi "CSE - aggressive"
+;* V08 tmp1 [V08,T17] ( 0, 0 ) long -> zero-ref "argument with side effect" +; V09 tmp2 [V09,T04] ( 3, 3 ) long -> r14 "argument with side effect" +; V10 tmp3 [V10,T10] ( 2, 2 ) ref -> rdx single-def "argument with side effect" +; V11 tmp4 [V11,T11] ( 2, 2 ) long -> rcx "argument with side effect" +; V12 tmp5 [V12,T12] ( 2, 2 ) long -> rcx "argument with side effect" +; V13 tmp6 [V13,T13] ( 2, 2 ) long -> rcx "argument with side effect" +; V14 cse0 [V14,T15] ( 2, 1 ) long -> r14 "CSE - moderate" +; V15 cse1 [V15,T05] ( 5, 2.50) long -> rbp multi-def "CSE - aggressive" +; V16 cse2 [V16,T16] ( 3, 1.50) int -> r15 "CSE - moderate" +; V17 cse3 [V17,T03] ( 4, 3 ) ref -> rdi "CSE - aggressive" +; V18 cse4 [V18,T09] ( 4, 2 ) long -> rbp "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M5830_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rcx
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rcx
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; gcrRegs +[rsi]
- ;; size=21 bbWeight=1 PerfScore 6.75
+ ;; size=23 bbWeight=1 PerfScore 7.75
G_M5830_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -71,61 +71,51 @@ G_M5830_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { mov dword ptr [rbx+0x10], 1 ;; size=20 bbWeight=0.50 PerfScore 2.38 G_M5830_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx pop rbp pop rsi pop rdi pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M5830_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rsi rdi]
- mov rcx, qword ptr [rbx]
+ mov rbp, qword ptr [rbx] + mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- mov rbp, rax - mov rcx, rbp
+ mov r14, rax + mov rcx, r14
mov rdx, rdi ; gcrRegs +[rdx] call [CORINFO_HELP_ISINSTANCEOFANY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M5830_IG10 - ;; size=32 bbWeight=0.50 PerfScore 5.12 -G_M5830_IG06: ; bbWeight=0.25, gcrefRegs=4049 {rax rbx rsi r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - mov rcx, rbp - cmp qword ptr [r14], rcx - je SHORT G_M5830_IG08 - ;; size=8 bbWeight=0.25 PerfScore 1.06 -G_M5830_IG07: ; bbWeight=0.12, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, r14
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx] ; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14]
- ;; size=12 bbWeight=0.12 PerfScore 0.44 -G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rcx, qword ptr [rbx]
+ test r14, r14 + je SHORT G_M5830_IG07 + mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, rax - mov rcx, rdi
+ mov rbp, rax + mov rcx, rbp
mov edx, 4 call [CORINFO_HELP_NEWARR_1_DIRECT] ; gcrRegs +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - mov rcx, rdi
+ mov rbp, rax + ; gcrRegs +[rbp] + mov rcx, rbp
; gcrRegs +[rcx] mov r8, r14 ; gcrRegs +[r8] @@ -133,7 +123,7 @@ G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00 call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[rax rcx r8 r14] ; gcr arg pop 0
- mov rcx, rdi
+ mov rcx, rbp
; gcrRegs +[rcx] mov r8, rsi ; gcrRegs +[r8] @@ -143,50 +133,77 @@ G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00 ; gcr arg pop 0 lea rcx, bword ptr [rbx+0x08] ; byrRegs +[rcx]
- mov rdx, rdi
+ mov rdx, rbp
; gcrRegs +[rdx] call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rdx rdi]
+ ; gcrRegs -[rdx rbp]
; byrRegs -[rcx] mov dword ptr [rbx+0x10], 2
- ;; size=80 bbWeight=0.50 PerfScore 10.62 -G_M5830_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 48
+ ;; size=127 bbWeight=0.50 PerfScore 16.75 +G_M5830_IG06: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88 -G_M5830_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=13 bbWeight=0.50 PerfScore 2.12 +G_M5830_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
- mov rbp, rdi - ; gcrRegs +[rbp] - mov rcx, qword ptr [rbx]
+ mov rcx, rbp
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- mov r14, rax - mov rcx, r14 - cmp qword ptr [rbp], rcx - je SHORT G_M5830_IG12 - ;; size=24 bbWeight=0.50 PerfScore 4.88 -G_M5830_IG11: ; bbWeight=0.12, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp]
+ mov rbp, rax + mov rcx, rbp
mov rdx, rdi ; gcrRegs +[rdx] call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx rdi] +[rax] ; gcr arg pop 0
+ mov rdi, rax + ; gcrRegs +[rdi] + mov r14d, dword ptr [rbx+0x10] + mov r15d, dword ptr [rdi+0x08] + cmp r15d, r14d + jbe SHORT G_M5830_IG08 + movsxd rdx, r14d + mov rcx, rdi + ; gcrRegs +[rcx] + mov r8, rsi + ; gcrRegs +[r8] + call [CORINFO_HELP_ARRADDR_ST] + ; gcrRegs -[rax rcx rsi rdi r8] + ; gcr arg pop 0 + jmp SHORT G_M5830_IG09 + ;; size=57 bbWeight=0.50 PerfScore 9.12 +G_M5830_IG08: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rsi rdi] + mov rcx, rbp + add r15d, r15d + movsxd rdx, r15d + call [CORINFO_HELP_NEWARR_1_DIRECT] + ; gcrRegs +[rax] + ; gcr arg pop 0
mov rbp, rax ; gcrRegs +[rbp]
- ;; size=12 bbWeight=0.12 PerfScore 0.44 -G_M5830_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov edi, dword ptr [rbx+0x10] - cmp dword ptr [rbp+0x08], edi - jbe SHORT G_M5830_IG13 - movsxd rdx, edi
+ mov rcx, rdi + ; gcrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx] + mov r8d, r14d + call [<unknown method>] + ; gcrRegs -[rax rcx rdx rdi] + ; gcr arg pop 0 + lea rcx, bword ptr [rbx+0x08] + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx] + call [CORINFO_HELP_ASSIGN_REF] + ; gcrRegs -[rdx]
...

+1 (+0.21%) : 243214.dasm - RailwaySharp.ErrorHandling.Result`2[System.Canon,System.Canon]:ToString():System.String:this (FullOpts)

@@ -9,44 +9,42 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 10, 6 ) ref -> rbx this class-hnd single-def <RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]> -;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]> -;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 10, 6.50) ref -> rbx this class-hnd single-def <RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]> +;* V01 loc0 [V01,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]> +;* V02 loc1 [V02,T27] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T05] ( 3, 2.50) long -> rax "fgMakeTemp is creating a new local variable" -;* V05 tmp2 [V05,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <RailwaySharp.ErrorHandling.Bad`2[System.__Canon,System.__Canon]> -; V06 tmp3 [V06,T09] ( 2, 2 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.String> -; V07 tmp4 [V07,T10] ( 2, 2 ) ref -> rbp class-hnd single-def "dup spill" <<unknown class>> -; V08 tmp5 [V08,T11] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V09 tmp6 [V09,T25] ( 2, 1 ) ref -> r15 single-def -;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref single-def -;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def -; V12 tmp9 [V12,T07] ( 4, 2 ) ref -> rbp -; V13 tmp10 [V13,T03] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp11 [V14,T12] ( 2, 2 ) ref -> rbp class-hnd exact single-def "finalizable newobj spill" <<unknown class>> -; V15 tmp12 [V15,T06] ( 3, 2.50) long -> rax "fgMakeTemp is creating a new local variable" -;* V16 tmp13 [V16,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <RailwaySharp.ErrorHandling.Ok`2[System.__Canon,System.__Canon]> -; V17 tmp14 [V17,T13] ( 2, 2 ) ref -> rdi class-hnd single-def "non-inline candidate call" <System.__Canon> -; V18 tmp15 [V18,T14] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.String> -; V19 tmp16 [V19,T15] ( 2, 2 ) ref -> r15 class-hnd single-def "dup spill" <<unknown class>> -; V20 tmp17 [V20,T16] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V21 tmp18 [V21,T27] ( 2, 1 ) ref -> r13 single-def -;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def -;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref single-def -; V25 tmp22 [V25,T08] ( 4, 2 ) ref -> r15 -; V26 tmp23 [V26,T04] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp24 [V27,T17] ( 2, 2 ) ref -> r15 class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
+; V04 tmp1 [V04,T07] ( 2, 2 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.String> +; V05 tmp2 [V05,T08] ( 2, 2 ) ref -> r14 class-hnd single-def "dup spill" <<unknown class>> +; V06 tmp3 [V06,T09] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V07 tmp4 [V07,T24] ( 2, 1 ) ref -> r13 single-def +;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def +;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def +; V10 tmp7 [V10,T05] ( 4, 2 ) ref -> r14 +; V11 tmp8 [V11,T03] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp9 [V12,T10] ( 2, 2 ) ref -> r14 class-hnd exact single-def "finalizable newobj spill" <<unknown class>> +; V13 tmp10 [V13,T11] ( 2, 2 ) ref -> rdi class-hnd single-def "non-inline candidate call" <System.__Canon> +; V14 tmp11 [V14,T12] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt" <System.String> +; V15 tmp12 [V15,T13] ( 2, 2 ) ref -> r13 class-hnd single-def "dup spill" <<unknown class>> +; V16 tmp13 [V16,T14] ( 2, 2 ) ref -> r14 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V17 tmp14 [V17,T25] ( 2, 1 ) ref -> r12 single-def +;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref single-def +;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref single-def +; V21 tmp18 [V21,T06] ( 4, 2 ) ref -> r13 +; V22 tmp19 [V22,T04] ( 4, 4 ) ref -> [rsp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V23 tmp20 [V23,T15] ( 2, 2 ) ref -> r13 class-hnd exact single-def "finalizable newobj spill" <<unknown class>> +; V24 tmp21 [V24,T20] ( 2, 2 ) long -> rcx "argument with side effect" +; V25 tmp22 [V25,T21] ( 2, 2 ) long -> rcx "argument with side effect" +; V26 tmp23 [V26,T16] ( 2, 2 ) ref -> rdx single-def "argument with side effect" +; V27 tmp24 [V27,T17] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V28 tmp25 [V28,T22] ( 2, 2 ) long -> rcx "argument with side effect"
-; V29 tmp26 [V29,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect" -; V30 tmp27 [V30,T19] ( 2, 2 ) ref -> rdx single-def "argument with side effect" -; V31 tmp28 [V31,T23] ( 2, 2 ) long -> rcx "argument with side effect" -; V32 tmp29 [V32,T20] ( 2, 2 ) ref -> rdx single-def "argument with side effect" -; V33 tmp30 [V33,T21] ( 2, 2 ) ref -> r8 single-def "argument with side effect" -; V34 cse0 [V34,T02] ( 8, 4 ) byref -> r14 multi-def "CSE - aggressive" -; V35 cse1 [V35,T01] ( 12, 6 ) long -> rsi multi-def "CSE - aggressive"
+; V29 tmp26 [V29,T23] ( 2, 2 ) long -> rcx "argument with side effect" +; V30 tmp27 [V30,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect" +; V31 tmp28 [V31,T19] ( 2, 2 ) ref -> r8 single-def "argument with side effect" +; V32 cse0 [V32,T02] ( 8, 4 ) byref -> r15 multi-def "CSE - aggressive" +; V33 cse1 [V33,T01] ( 10, 5 ) long -> rsi multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M40528_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 @@ -57,38 +55,32 @@ G_M40528_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbp push rbx
- sub rsp, 40
+ sub rsp, 56 + mov qword ptr [rsp+0x30], rcx
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=24 bbWeight=1 PerfScore 9.50
G_M40528_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x08], 1
- je G_M40528_IG08
+ je G_M40528_IG06
;; size=10 bbWeight=1 PerfScore 4.00 G_M40528_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rsi, qword ptr [rbx] mov rcx, rsi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcr arg pop 0
- cmp rsi, rax - je SHORT G_M40528_IG05 - ;; size=17 bbWeight=0.50 PerfScore 3.25 -G_M40528_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rax mov rdx, rbx ; gcrRegs +[rdx] call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88 -G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx] +[rax]
+ ; gcrRegs -[rcx]
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -101,10 +93,10 @@ G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- mov rbx, rax - ; gcrRegs +[rbx]
+ mov r14, rax + ; gcrRegs +[r14]
mov rcx, rsi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] @@ -113,16 +105,120 @@ G_M40528_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0
- mov r14, rax - ; byrRegs +[r14] - mov r15, gword ptr [r14+0x08] - ; gcrRegs +[r15]
+ mov r15, rax + ; byrRegs +[r15] + mov r13, gword ptr [r15+0x08] + ; gcrRegs +[r13] + mov rcx, qword ptr [(reloc)] ; const ptr + mov r12, gword ptr [rcx] + ; gcrRegs +[r12] + test r13, r13 + jne SHORT G_M40528_IG04 + mov r13, gword ptr [r15] + mov rcx, rsi + call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] + ; byrRegs -[rax] + ; gcr arg pop 0 + mov rcx, rax + call [CORINFO_HELP_NEWFAST] + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov gword ptr [rsp+0x28], rax + ; GC ptr vars +{V22} + mov rcx, rax + ; gcrRegs +[rcx] + mov rdx, r13 + ; gcrRegs +[rdx] + call [CORINFO_HELP_READYTORUN_DELEGATE_CTOR] + ; gcrRegs -[rax rcx rdx r13] + ; gcr arg pop 0 + lea rcx, bword ptr [r15+0x08] + ; byrRegs +[rcx] + mov rdx, gword ptr [rsp+0x28] + ; gcrRegs +[rdx] + call [CORINFO_HELP_ASSIGN_REF] + ; gcrRegs -[rdx] + ; byrRegs -[rcx r15] + mov r13, gword ptr [rsp+0x28] + ; gcrRegs +[r13] + ;; size=169 bbWeight=0.50 PerfScore 31.00 +G_M40528_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=70A8 {rbx rbp rdi r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V22} + mov rcx, rsi + call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] + ; gcr arg pop 0 + mov rcx, rax + mov rdx, r14 + ; gcrRegs +[rdx] + mov r8, r13 + ; gcrRegs +[r8] + call [<unknown method>] + ; gcrRegs -[rdx r8 r13-r14] +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, rbp + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx rdx rbp] + ; gcr arg pop 0 + mov r8, rax + ; gcrRegs +[r8] + mov rcx, r12 + ; gcrRegs +[rcx] + mov rdx, rdi + ; gcrRegs +[rdx] + lea rax, [(reloc)] ; function address + ; gcrRegs -[rax] + ;; size=52 bbWeight=0.50 PerfScore 5.88 +G_M40528_IG05: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 56 + pop rbx + pop rbp + pop rsi + pop rdi + pop r12 + pop r13 + pop r14 + pop r15 + tail.jmp [rax]<unknown method> + ;; size=19 bbWeight=0.50 PerfScore 3.12 +G_M40528_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rcx rdx rdi r8 r12] + mov rsi, qword ptr [rbx] + mov rcx, rsi + call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] + ; gcr arg pop 0 + mov rcx, rax + mov rdx, rbx + ; gcrRegs +[rdx] + call [CORINFO_HELP_CHKCASTANY] + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0 + call [<unknown method>] + ; gcr arg pop 0 + mov rdi, rax + ; gcrRegs +[rdi] + mov rbp, gword ptr [rbx+0x10] + ; gcrRegs +[rbp] + mov rcx, rsi + call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] + ; gcrRegs -[rax] + ; gcr arg pop 0 + mov rcx, rax + call [CORINFO_HELP_GETGENERICS_GCSTATIC_BASE] + ; byrRegs +[rax] + ; gcr arg pop 0 + mov r15, rax + ; byrRegs +[r15]
...

+1 (+0.29%) : 130336.dasm - Microsoft.Internal.Collections.WeakReferenceCollection1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List1[System.__Canon]:this (FullOpts)

@@ -8,22 +8,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 4, 4 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]>
; V01 loc0 [V01,T11] ( 3, 4 ) ref -> rsi class-hnd exact single-def <System.Collections.Generic.List`1[System.__Canon]> ; V02 loc1 [V02 ] ( 6, 11 ) struct (24) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference]>
-; V03 loc2 [V03,T06] ( 2, 8 ) ref -> r14 class-hnd <System.WeakReference> -;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon>
+; V03 loc2 [V03,T05] ( 2, 8 ) ref -> r15 class-hnd <System.WeakReference> +; V04 loc3 [V04,T04] ( 3, 10 ) ref -> rax class-hnd <System.__Canon>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]> -; V07 tmp2 [V07,T01] ( 3, 17 ) ref -> rax "CASTCLASS eval op1" -; V08 tmp3 [V08,T10] ( 3, 5 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V09 tmp4 [V09,T00] ( 5, 23 ) ref -> rdx class-hnd "spilling QMark2" <System.__Canon> -; V10 tmp5 [V10,T03] ( 2, 16 ) long -> r13 "argument with side effect" -; V11 tmp6 [V11,T02] ( 2, 16 ) ref -> rdx "argument with side effect" -; V12 PSPSym [V12,T12] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" -; V13 cse0 [V13,T05] ( 3, 9 ) long -> r15 "CSE - aggressive" -; V14 cse1 [V14,T04] ( 7, 11 ) long -> rdi multi-def "CSE - aggressive" -; V15 cse2 [V15,T09] ( 3, 6 ) long -> rbx "CSE - aggressive"
+; V06 tmp1 [V06,T09] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]> +;* V07 tmp2 [V07,T06] ( 0, 0 ) long -> zero-ref "argument with side effect" +; V08 tmp3 [V08,T01] ( 2, 16 ) ref -> rdx "argument with side effect" +; V09 tmp4 [V09,T00] ( 3, 24 ) long -> r13 "argument with side effect" +; V10 tmp5 [V10,T02] ( 2, 16 ) ref -> rdx "argument with side effect" +; V11 PSPSym [V11,T12] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" +; V12 cse0 [V12,T10] ( 1, 1 ) long -> r14 hoist "CSE - aggressive" +; V13 cse1 [V13,T03] ( 7, 11 ) long -> rdi multi-def "CSE - aggressive" +; V14 cse2 [V14,T07] ( 4, 7 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 80 @@ -46,7 +45,7 @@ G_M63535_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} ;; size=47 bbWeight=1 PerfScore 14.33
-G_M63535_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov rbx, qword ptr [rcx] mov rcx, rbx @@ -82,28 +81,31 @@ G_M63535_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcr arg pop 0 test eax, eax
- je SHORT G_M63535_IG09 - ;; size=24 bbWeight=1 PerfScore 7.00
+ je SHORT G_M63535_IG07 + mov rcx, rbx + call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] + ; gcr arg pop 0 + mov r14, rax + ;; size=36 bbWeight=1 PerfScore 10.50
G_M63535_IG04: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz lea rcx, [rbp-0x50] mov rdx, rdi call [<unknown method>] ; gcrRegs +[rax] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14]
+ mov r15, rax + ; gcrRegs +[r15]
mov rcx, rbx call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] ; gcr arg pop 0
- mov r15, rax - mov r13, r15 - mov rcx, r14
+ mov r13, rax + mov rcx, r15
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx r14] +[rax]
+ ; gcrRegs -[rcx r15] +[rax]
; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx] @@ -113,34 +115,24 @@ G_M63535_IG04: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- test rdx, rdx - je SHORT G_M63535_IG08 - ;; size=66 bbWeight=4 PerfScore 78.00 -G_M63535_IG05: ; bbWeight=1, gcrefRegs=0045 {rax rdx rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, r15 - cmp qword ptr [rdx], rcx - je SHORT G_M63535_IG07 - ;; size=8 bbWeight=1 PerfScore 4.25 -G_M63535_IG06: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdx] - mov rdx, rax - ; gcrRegs +[rdx]
+ mov rcx, r13
call [CORINFO_HELP_CHKCASTANY] ; gcrRegs -[rdx] ; gcr arg pop 0
- mov rdx, rax - ; gcrRegs +[rdx] - ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M63535_IG07: ; bbWeight=2, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ test rax, rax + je SHORT G_M63535_IG06 + ;; size=72 bbWeight=4 PerfScore 90.00 +G_M63535_IG05: ; bbWeight=2, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi ; gcrRegs +[rcx]
+ mov rdx, rax + ; gcrRegs +[rdx]
lea r11, [(reloc)] ; function address call [r11]<unknown method>
- ; gcrRegs -[rcx rdx]
+ ; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=13 bbWeight=2 PerfScore 7.50 -G_M63535_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=2 PerfScore 8.00 +G_M63535_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbp-0x50] mov rdx, rdi call [<unknown method>] @@ -148,7 +140,7 @@ G_M63535_IG08: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr test eax, eax jne SHORT G_M63535_IG04 ;; size=17 bbWeight=4 PerfScore 20.00
-G_M63535_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M63535_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x50] mov rdx, rdi call [<unknown method>] @@ -156,7 +148,7 @@ G_M63535_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr mov rax, rsi ; gcrRegs +[rax] ;; size=16 bbWeight=1 PerfScore 4.00
-G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M63535_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 80 pop rbx pop rsi @@ -167,7 +159,7 @@ G_M63535_IG10: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.75
-G_M63535_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M63535_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax rsi] push rbp push r15 @@ -181,7 +173,7 @@ G_M63535_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x20], rbp lea rbp, [rbp+0x80] ;; size=30 bbWeight=0 PerfScore 0.00
-G_M63535_IG12: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63535_IG10: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rcx, [rbp-0x50] mov rdi, qword ptr [(reloc)] ; System.Collections.Generic.List`1+Enumerator[System.WeakReference] mov rdx, rdi @@ -189,7 +181,7 @@ G_M63535_IG12: ; bbWeight=0, gcVars=0000000000000080 {V00}, gcrefRegs=000 ; gcr arg pop 0 nop ;; size=21 bbWeight=0 PerfScore 0.00
-G_M63535_IG13: ; bbWeight=0, funclet epilog, nogc, extend
+G_M63535_IG11: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -201,7 +193,7 @@ G_M63535_IG13: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 47, PerfScore 163.83, instruction count 107, allocated bytes for code 342 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 343, prolog size 47, PerfScore 173.83, instruction count 106, allocated bytes for code 343 (MethodHash=4d8107d0) for method Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -242,4 +234,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M63535_IG03..G_M63535_IG09) handled by [G_M63535_IG11..END) (fault)
+EH#0: try [G_M63535_IG03..G_M63535_IG07) handled by [G_M63535_IG09..END) (fault)
libraries.pmi.windows.x64.checked.mch
-13 (-32.50%) : 15207.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -19,34 +17,21 @@ G_M7606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M7606_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M7606_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M7606_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M7606_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M7606_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M7606_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M7606_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M7606_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M7606_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=333ae249) for method Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-13 (-32.50%) : 231587.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-20 (-31.25%) : 132117.dasm - Roslyn.Utilities.EnumUtilities:GetValuesubyte:ubyte

@@ -9,53 +9,33 @@ ; Final local variable assignments ; ; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T01] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V02 tmp2 [V02,T02] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V03 tmp3 [V03,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <ubyte[]>
+; V01 tmp1 [V01,T00] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; ; Lcl frame size = 40 G_M58003_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG sub rsp, 40 ;; size=4 bbWeight=1 PerfScore 0.25
-G_M58003_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M58003_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] call [System.RuntimeType:GetEnumValues():System.Array:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - jne SHORT G_M58003_IG05 - ;; size=24 bbWeight=1 PerfScore 4.75 -G_M58003_IG03: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M58003_IG04: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - ret - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M58003_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, gcvars, byref, isz - mov rcx, 0xD1FFAB1E ; ubyte[] - cmp qword ptr [r8], rcx - je SHORT G_M58003_IG03 - ;; size=15 bbWeight=0.25 PerfScore 1.06 -G_M58003_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_CHKCASTARRAY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - jmp SHORT G_M58003_IG03 - ;; size=13 bbWeight=0.12 PerfScore 0.44
+ nop + ;; size=35 bbWeight=1 PerfScore 5.00 +G_M58003_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 40 + ret + ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 64, prolog size 4, PerfScore 8.00, instruction count 16, allocated bytes for code 64 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 6.50, instruction count 9, allocated bytes for code 44 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
; ============================================================ Unwind Info:

+34 (+9.86%) : 294279.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)

@@ -8,29 +8,29 @@ ; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> -; V01 arg1 [V01,T05] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String> -; V02 arg2 [V02,T04] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Type> -; V03 arg3 [V03,T06] ( 3, 3 ) ref -> rbp class-hnd single-def <System.Type[]> -; V04 arg4 [V04,T15] ( 1, 1 ) ref -> [rsp+0x80] class-hnd single-def <System.Type[]> -; V05 arg5 [V05,T12] ( 2, 1.50) int -> r14 single-def
+; V00 this [V00,T04] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl> +; V01 arg1 [V01,T06] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String> +; V02 arg2 [V02,T05] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Type> +; V03 arg3 [V03,T07] ( 3, 3 ) ref -> rbp class-hnd single-def <System.Type[]> +; V04 arg4 [V04,T17] ( 1, 1 ) ref -> [rsp+0x80] class-hnd single-def <System.Type[]> +; V05 arg5 [V05,T14] ( 2, 1.50) int -> r14 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.FieldBuilderImpl> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T01] ( 12, 21 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.FieldBuilderImpl>
-;* V09 tmp2 [V09,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp3 [V10,T00] ( 7, 19 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> -;* V11 tmp4 [V11,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V13 tmp6 [V13,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V15 tmp8 [V15,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V17 tmp10 [V17,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V19 tmp12 [V19,T02] ( 7, 11 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>> -; V20 tmp13 [V20,T11] ( 3, 2.46) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp14 [V21,T10] ( 4, 2.92) int -> rax "Inline stloc first use temp" -; V22 cse0 [V22,T08] ( 3, 3 ) ref -> r15 "CSE - aggressive"
+;* V09 tmp2 [V09,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp3 [V10,T00] ( 9, 21.50) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> +;* V11 tmp4 [V11,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V12 tmp5 [V12,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V14 tmp7 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V15 tmp8 [V15,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V17 tmp10 [V17,T03] ( 7, 11 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>> +; V18 tmp11 [V18,T12] ( 3, 2.46) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V19 tmp12 [V19,T11] ( 4, 2.92) int -> rax "Inline stloc first use temp" +; V20 cse0 [V20,T10] ( 3, 3 ) ref -> r15 "CSE - aggressive" +; V21 rat0 [V21,T09] ( 3, 2.50) ref -> rax "replacement local" +; V22 rat1 [V22,T02] ( 3, 10 ) ref -> rdx "replacement local"
; ; Lcl frame size = 40 @@ -59,7 +59,7 @@ G_M54407_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs= ; gcrRegs -[rcx] ; gcr arg pop 0 cmp gword ptr [rbx+0x40], 0
- jne SHORT G_M54407_IG08
+ jne SHORT G_M54407_IG11
;; size=16 bbWeight=1 PerfScore 7.25 G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz mov rcx, rbx @@ -67,14 +67,34 @@ G_M54407_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe mov r15, 0xD1FFAB1E ; gcrRegs +[r15] cmp rcx, r15
- jne SHORT G_M54407_IG05
+ je SHORT G_M54407_IG11 + mov rax, rcx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M54407_IG08 + ;; size=26 bbWeight=0.50 PerfScore 1.62 +G_M54407_IG04: ; bbWeight=0.25, gcrefRegs=80EB {rax rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rax], rdx + je SHORT G_M54407_IG08 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M54407_IG05: ; bbWeight=0.50, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
jmp SHORT G_M54407_IG08
- ;; size=20 bbWeight=0.50 PerfScore 1.88 -G_M54407_IG04: ; bbWeight=2, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M54407_IG06: ; bbWeight=2, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
cmp rcx, r15
- je SHORT G_M54407_IG07 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M54407_IG05: ; bbWeight=4, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M54407_IG10 + mov rdx, rcx + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M54407_IG08 + ;; size=13 bbWeight=2 PerfScore 5.50 +G_M54407_IG07: ; bbWeight=1, gcrefRegs=80EE {rcx rdx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref + mov rdx, qword ptr [rdx] + ; gcrRegs -[rdx] + ;; size=3 bbWeight=1 PerfScore 2.00 +G_M54407_IG08: ; bbWeight=4, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0xA0] call [rax+0x20]<unknown method> @@ -83,15 +103,15 @@ G_M54407_IG05: ; bbWeight=4, gcrefRegs=80EA {rcx rbx rbp rsi rdi r15}, by mov rcx, rax ; gcrRegs +[rcx] test rcx, rcx
- jne SHORT G_M54407_IG04
+ jne SHORT G_M54407_IG06
;; size=21 bbWeight=4 PerfScore 34.00
-G_M54407_IG06: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG09: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx r15]
- jmp SHORT G_M54407_IG08
+ jmp SHORT G_M54407_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG10: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
test r14b, 16
- jne SHORT G_M54407_IG08
+ jne SHORT G_M54407_IG11
lea rcx, bword ptr [rbx+0x40] ; byrRegs +[rcx] mov rdx, rsi @@ -100,7 +120,7 @@ G_M54407_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe ; gcrRegs -[rdx] ; byrRegs -[rcx] ;; size=18 bbWeight=0.50 PerfScore 1.50
-G_M54407_IG08: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M54407_IG11: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Reflection.Emit.FieldBuilderImpl call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -108,9 +128,9 @@ G_M54407_IG08: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs= mov r15, rax ; gcrRegs +[r15] test byte ptr [(reloc)], 1 ; global ptr
- je G_M54407_IG14
+ je G_M54407_IG17
;; size=31 bbWeight=1 PerfScore 5.50
-G_M54407_IG09: ; bbWeight=1, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG12: ; bbWeight=1, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rdx, gword ptr [rcx] @@ -165,9 +185,9 @@ G_M54407_IG09: ; bbWeight=1, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefR ; gcrRegs +[rdx] mov eax, dword ptr [rcx+0x10] cmp dword ptr [rdx+0x08], eax
- jbe SHORT G_M54407_IG11
+ jbe SHORT G_M54407_IG14
;; size=125 bbWeight=1 PerfScore 28.50
-G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=8006 {rcx rdx r15}, byrefRegs=0000 {}, byref, isz
+G_M54407_IG13: ; bbWeight=0.46, gcrefRegs=8006 {rcx rdx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] lea r8d, [rax+0x01] mov dword ptr [rcx+0x10], r8d @@ -179,9 +199,9 @@ G_M54407_IG10: ; bbWeight=0.46, gcrefRegs=8006 {rcx rdx r15}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] ; byrRegs -[rcx]
- jmp SHORT G_M54407_IG12
+ jmp SHORT G_M54407_IG15
;; size=25 bbWeight=0.46 PerfScore 2.75
-G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=8002 {rcx r15}, byrefRegs=0000 {}, byref
+G_M54407_IG14: ; bbWeight=0.04, gcrefRegs=8002 {rcx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx] mov rdx, r15 ; gcrRegs +[rdx] @@ -189,11 +209,11 @@ G_M54407_IG11: ; bbWeight=0.04, gcrefRegs=8002 {rcx r15}, byrefRegs=0000 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=9 bbWeight=0.04 PerfScore 0.13
-G_M54407_IG12: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M54407_IG15: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rax, r15 ; gcrRegs +[rax] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M54407_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -203,16 +223,16 @@ G_M54407_IG13: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=13 bbWeight=1 PerfScore 4.25
-G_M54407_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref
+G_M54407_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx rbp rsi rdi] mov rcx, 0xD1FFAB1E mov edx, 263 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE ; gcr arg pop 0
- jmp G_M54407_IG09
+ jmp G_M54407_IG12
;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 345, prolog size 12, PerfScore 97.76, instruction count 90, allocated bytes for code 345 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
+; Total bytes of code 379, prolog size 12, PerfScore 104.57, instruction count 100, allocated bytes for code 379 (MethodHash=3e1f2b78) for method System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
; ============================================================ Unwind Info:

+38 (+15.38%) : 294269.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)

@@ -8,23 +8,23 @@ ; 1 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 15, 9 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 19 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp13 [V14,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V15 cse0 [V15,T05] ( 3, 1.50) int -> rcx "CSE - moderate" -; V16 cse1 [V16,T03] ( 3, 3 ) ref -> rsi "CSE - aggressive"
+;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 21.50) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp11 [V12,T12] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V13 cse0 [V13,T07] ( 3, 1.50) int -> rcx "CSE - moderate" +; V14 cse1 [V14,T05] ( 3, 3 ) ref -> rsi "CSE - aggressive" +; V15 rat0 [V15,T04] ( 3, 2.50) ref -> rax "replacement local" +; V16 rat1 [V16,T01] ( 3, 10 ) ref -> rdx "replacement local"
; ; Lcl frame size = 40 @@ -68,21 +68,41 @@ G_M47746_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rcx, gword ptr [rbx+0x58] ; gcrRegs +[rcx] cmp dword ptr [rcx+0x10], 0
- jne SHORT G_M47746_IG11
+ jne G_M47746_IG14
test byte ptr [rbx+0x88], 32
- jne SHORT G_M47746_IG11
+ jne SHORT G_M47746_IG14
mov rcx, rbx mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] cmp rcx, rsi
- jne SHORT G_M47746_IG09 - jmp SHORT G_M47746_IG10 - ;; size=39 bbWeight=0.50 PerfScore 6.88 -G_M47746_IG08: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M47746_IG13 + mov rax, rcx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M47746_IG12 + ;; size=49 bbWeight=0.50 PerfScore 6.62 +G_M47746_IG08: ; bbWeight=0.25, gcrefRegs=004B {rax rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rax], rdx + je SHORT G_M47746_IG12 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M47746_IG09: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M47746_IG12 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M47746_IG10: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp rcx, rsi
- je SHORT G_M47746_IG11 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M47746_IG09: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M47746_IG14 + mov rdx, rcx + ; gcrRegs +[rdx] + test rdx, rdx + je SHORT G_M47746_IG12 + ;; size=13 bbWeight=2 PerfScore 5.50 +G_M47746_IG11: ; bbWeight=1, gcrefRegs=004E {rcx rdx rbx rsi}, byrefRegs=0000 {}, byref + mov rdx, qword ptr [rdx] + ; gcrRegs -[rdx] + ;; size=3 bbWeight=1 PerfScore 2.00 +G_M47746_IG12: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0xA0] call [rax+0x20]<unknown method> @@ -91,17 +111,17 @@ G_M47746_IG09: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 mov rcx, rax ; gcrRegs +[rcx] test rcx, rcx
- jne SHORT G_M47746_IG08
+ jne SHORT G_M47746_IG10
;; size=21 bbWeight=4 PerfScore 34.00
-G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M47746_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx rsi] mov ecx, dword ptr [rbx+0x88] mov edx, ecx and edx, 384 cmp edx, 384
- je SHORT G_M47746_IG11
+ je SHORT G_M47746_IG14
test cl, 32
- jne SHORT G_M47746_IG12
+ jne SHORT G_M47746_IG15
mov rcx, rbx ; gcrRegs +[rcx] mov edx, 6 @@ -109,7 +129,7 @@ G_M47746_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 ;; size=41 bbWeight=0.50 PerfScore 4.25
-G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M47746_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, rbx ; gcrRegs +[rcx] @@ -126,7 +146,7 @@ G_M47746_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M47746_IG03 ;; size=43 bbWeight=0.50 PerfScore 6.75
-G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47746_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -151,7 +171,7 @@ G_M47746_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 6, PerfScore 65.88, instruction count 65, allocated bytes for code 247 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
+; Total bytes of code 285, prolog size 6, PerfScore 72.69, instruction count 75, allocated bytes for code 285 (MethodHash=c0db457d) for method System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
; ============================================================ Unwind Info:

+34 (+26.15%) : 294304.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
+; V00 this [V00,T02] ( 6, 5 ) ref -> rbx this class-hnd single-def <System.Reflection.Emit.TypeBuilderImpl>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T09] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V04 tmp3 [V04,T00] ( 7, 20 ) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> -;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V07 tmp6 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V09 tmp8 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.Emit.TypeBuilderImpl> -;* V11 tmp10 [V11,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> -; V13 tmp12 [V13,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect" -; V14 cse0 [V14,T05] ( 3, 1.50) ref -> rax "CSE - moderate" -; V15 cse1 [V15,T02] ( 3, 4 ) ref -> rsi "CSE - aggressive"
+; V02 tmp1 [V02,T11] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +;* V03 tmp2 [V03,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V04 tmp3 [V04,T00] ( 9, 22.50) ref -> rcx class-hnd "Inline stloc first use temp" <System.Type> +;* V05 tmp4 [V05,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V06 tmp5 [V06,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V08 tmp7 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V09 tmp8 [V09,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Reflection.Emit.TypeBuilderImpl> +; V11 tmp10 [V11,T12] ( 2, 0 ) ref -> rdx single-def "argument with side effect" +; V12 cse0 [V12,T07] ( 3, 1.50) ref -> rax "CSE - moderate" +; V13 cse1 [V13,T03] ( 3, 4 ) ref -> rsi "CSE - aggressive" +; V14 rat0 [V14,T05] ( 3, 2.50) ref -> rax "replacement local" +; V15 rat1 [V15,T01] ( 3, 10 ) ref -> rax "replacement local"
; ; Lcl frame size = 40 @@ -41,18 +41,36 @@ G_M32453_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] cmp rcx, rsi
- jne SHORT G_M32453_IG05
+ je SHORT G_M32453_IG12
;; size=20 bbWeight=1 PerfScore 4.75
-G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx rsi] - jmp SHORT G_M32453_IG09
+G_M32453_IG03: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rax, rcx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32453_IG08 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M32453_IG04: ; bbWeight=0.25, gcrefRegs=004B {rax rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Reflection.Emit.TypeBuilderImpl + cmp qword ptr [rax], rdx + je SHORT G_M32453_IG08 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M32453_IG05: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + jmp SHORT G_M32453_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG04: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx rsi]
+G_M32453_IG06: ; bbWeight=2, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp rcx, rsi
- je SHORT G_M32453_IG07 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M32453_IG05: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M32453_IG10 + mov rax, rcx + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M32453_IG08 + ;; size=13 bbWeight=2 PerfScore 5.50 +G_M32453_IG07: ; bbWeight=1, gcrefRegs=004B {rax rcx rbx rsi}, byrefRegs=0000 {}, byref + mov rax, qword ptr [rax] + ; gcrRegs -[rax] + ;; size=3 bbWeight=1 PerfScore 2.00 +G_M32453_IG08: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0xA0] call [rax+0x20]<unknown method> @@ -61,36 +79,36 @@ G_M32453_IG05: ; bbWeight=4, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 mov rcx, rax ; gcrRegs +[rcx] test rcx, rcx
- jne SHORT G_M32453_IG04
+ jne SHORT G_M32453_IG06
;; size=21 bbWeight=4 PerfScore 34.00
-G_M32453_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rcx rsi]
- jmp SHORT G_M32453_IG09
+ jmp SHORT G_M32453_IG12
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M32453_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M32453_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbx+0x40] ; gcrRegs +[rax] test rax, rax
- je SHORT G_M32453_IG11
+ je SHORT G_M32453_IG14
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M32453_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M32453_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M32453_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M32453_IG13: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M32453_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -115,7 +133,7 @@ G_M32453_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 6, PerfScore 49.75, instruction count 41, allocated bytes for code 130 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
+; Total bytes of code 164, prolog size 6, PerfScore 56.56, instruction count 51, allocated bytes for code 164 (MethodHash=b7cb813a) for method System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-35 (-36.08%) : 539462.dasm - Moq.Mock`1[System.Canon]:get_Object():System.Canon:this (Tier1)

@@ -8,82 +8,56 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 7, 3.75) ref -> rbx this class-hnd single-def <Moq.Mock`1[System.__Canon]>
+; V00 this [V00,T00] ( 5, 3.50) ref -> rcx this class-hnd single-def <Moq.Mock`1[System.__Canon]>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V05 tmp4 [V05,T02] ( 4, 1.62) ref -> rax "guarded devirt return temp" -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]>
+; V02 tmp1 [V02,T02] ( 3, 1.50) ref -> rax "guarded devirt return temp" +;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Moq.Mock`1[System.IO.Stream]> +; V04 cse0 [V04,T01] ( 4, 3 ) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M6043_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rcx - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M6043_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E ; Moq.Mock`1[System.IO.Stream] - cmp qword ptr [rbx], rcx - jne SHORT G_M6043_IG09 - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M6043_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rcx, rbx
+ sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M6043_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
+ mov rbx, qword ptr [rcx] + mov rax, 0xD1FFAB1E ; Moq.Mock`1[System.IO.Stream] + cmp rbx, rax + jne SHORT G_M6043_IG06 + ;; size=18 bbWeight=1 PerfScore 3.50 +G_M6043_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
call [Moq.Mock`1[System.__Canon]:OnGetObject():System.Object:this] ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M6043_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz - mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M6043_IG07 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M6043_IG05: ; bbWeight=0.25, gcrefRegs=0109 {rax rbx r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx] - mov rcx, qword ptr [rcx+0x38]
+ ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M6043_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + mov rcx, qword ptr [rbx+0x38]
mov rcx, qword ptr [rcx] mov rcx, qword ptr [rcx]
- cmp qword ptr [r8], rcx - je SHORT G_M6043_IG07 - ;; size=18 bbWeight=0.25 PerfScore 3.00 -G_M6043_IG06: ; bbWeight=0.12, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M6043_IG07: ; bbWeight=1, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M6043_IG08: ; bbWeight=1, epilog, nogc, extend - add rsp, 48
+ nop + ;; size=19 bbWeight=1 PerfScore 7.50 +G_M6043_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-G_M6043_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax r8] - mov rcx, rbx - ; gcrRegs +[rcx] - mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x58]
+G_M6043_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] +[rcx] + mov rax, qword ptr [rbx+0x58]
call [rax]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 jmp SHORT G_M6043_IG04
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 10, PerfScore 15.06, instruction count 30, allocated bytes for code 97 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
+; Total bytes of code 62, prolog size 5, PerfScore 15.50, instruction count 19, allocated bytes for code 62 (MethodHash=4a40e864) for method Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
; ============================================================ Unwind Info: @@ -96,5 +70,5 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

-25 (-33.78%) : 3538.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (Tier1)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
; ============================================================ Unwind Info:

-13 (-32.50%) : 591942.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (Tier1)

@@ -8,12 +8,10 @@ ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 32624 ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.50) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.25) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 7.50) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -21,34 +19,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.50 PerfScore 4.00 -G_M8451_IG04: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.25 PerfScore 0.25 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 8.50, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
; ============================================================ Unwind Info:

+17 (+22.08%) : 591100.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,13 +10,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rdx class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rdx class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T04] ( 3, 1 ) int -> rbx "guarded devirt return temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rdx "replacement local"
; ; Lcl frame size = 0 @@ -26,57 +25,65 @@ G_M44244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M44244_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] test rcx, rcx
- je SHORT G_M44244_IG10
+ je SHORT G_M44244_IG11
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rcx], rax
- jne SHORT G_M44244_IG06
+ jne SHORT G_M44244_IG07
test rdx, rdx
- je SHORT G_M44244_IG12
+ je SHORT G_M44244_IG05
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rdx], rax
- jne SHORT G_M44244_IG12 - ;; size=5 bbWeight=0.50 PerfScore 2.00 -G_M44244_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M44244_IG05 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M44244_IG04: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M44244_IG05: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M44244_IG13
cmp rdx, rcx
- jne SHORT G_M44244_IG05
+ jne SHORT G_M44244_IG06
mov ebx, 1
- jmp SHORT G_M44244_IG08 - ;; size=12 bbWeight=1 PerfScore 3.50 -G_M44244_IG05: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M44244_IG09 + ;; size=17 bbWeight=1 PerfScore 4.75 +G_M44244_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx jmp <unknown method> ; gcr arg pop 0 ;; size=6 bbWeight=1 PerfScore 2.50
-G_M44244_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG07: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG08: ; bbWeight=0, epilog, nogc, extend
pop rbx tail.jmp [rax+0x10]<unknown method> ;; size=5 bbWeight=0 PerfScore 0.00
-G_M44244_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx] movzx rax, bl ;; size=3 bbWeight=0 PerfScore 0.00
-G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbx ret ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend
pop rbx ret ;; size=2 bbWeight=0 PerfScore 0.00
-G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor ebx, ebx
- jmp SHORT G_M44244_IG08
+ jmp SHORT G_M44244_IG09
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 77, prolog size 1, PerfScore 15.75, instruction count 28, allocated bytes for code 77 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 94, prolog size 1, PerfScore 17.19, instruction count 32, allocated bytes for code 94 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info:

+47 (+23.86%) : 524672.dasm - System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan1[ubyte],System.Span1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (Tier1)

@@ -9,11 +9,11 @@ ; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 5, 4.12) ref -> rdi this class-hnd single-def <System.Security.Cryptography.DSA>
+; V00 this [V00,T03] ( 5, 4.50) ref -> rdi this class-hnd single-def <System.Security.Cryptography.DSA>
; V01 arg1 [V01,T02] ( 4, 6 ) byref -> rsi single-def ; V02 arg2 [V02,T00] ( 5, 8 ) byref -> rbx single-def ;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Security.Cryptography.HashAlgorithmName>
-; V04 arg4 [V04,T13] ( 3, 1 ) byref -> [rsp+0x70] single-def
+; V04 arg4 [V04,T13] ( 3, 1 ) byref -> [rsp+0x80] single-def
; V05 loc0 [V05,T05] ( 4, 4 ) ref -> rax class-hnd single-def <ubyte[]> ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> @@ -33,24 +33,25 @@ ;* V21 tmp15 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V22 tmp16 [V22 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP ; V23 tmp17 [V23,T08] ( 3, 2 ) byref -> rdx "field V08._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T04] ( 5, 4 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
+; V24 tmp18 [V24,T04] ( 5, 4 ) int -> r14 "field V08._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ; V27 tmp21 [V27,T10] ( 2, 2 ) byref -> rcx single-def "field V12._reference (fldOffset=0x0)" P-INDEP ; V28 tmp22 [V28,T12] ( 2, 2 ) int -> r8 "field V12._length (fldOffset=0x8)" P-INDEP ;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]> ;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
-; V31 rat0 [V31,T01] ( 6, 8 ) ref -> rax class-hnd "replacement local" <<unknown class>>
+; V31 rat0 [V31,T01] ( 7, 8 ) ref -> rax "replacement local"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M43209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14 push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rdi, rcx ; gcrRegs +[rdi] mov rsi, rdx @@ -59,36 +60,30 @@ G_M43209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[rbx] mov rbp, r9 ; gcrRegs +[rbp]
- ;; size=22 bbWeight=1 PerfScore 6.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M43209_IG02: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz mov rax, rdi ; gcrRegs +[rax] test rax, rax
- je SHORT G_M43209_IG06
+ je SHORT G_M43209_IG04
;; size=8 bbWeight=1 PerfScore 1.50 G_M43209_IG03: ; bbWeight=0.50, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz mov rdx, 0xD1FFAB1E ; System.Security.Cryptography.Tests.DSATests+OverrideAbstractDSA cmp qword ptr [rax], rdx
- je SHORT G_M43209_IG05 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M43209_IG04: ; bbWeight=0.12, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz - ; gcrRegs -[rax]
+ je SHORT G_M43209_IG09
mov rdx, rdi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rdx] +[rax]
+ ; gcrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M43209_IG06 - ;; size=20 bbWeight=0.12 PerfScore 0.44 -G_M43209_IG05: ; bbWeight=0.38, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref - ; gcrRegs -[rax] - xor rax, rax - ; gcrRegs +[rax] - ;; size=2 bbWeight=0.38 PerfScore 0.09 -G_M43209_IG06: ; bbWeight=1, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ;; size=33 bbWeight=0.50 PerfScore 2.88 +G_M43209_IG04: ; bbWeight=1, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz
test rax, rax
- jne SHORT G_M43209_IG09
+ jne SHORT G_M43209_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M43209_IG05: ; bbWeight=1, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref + ; gcrRegs -[rax]
mov rcx, rdi ; gcrRegs +[rcx] mov rdx, rsi @@ -96,89 +91,112 @@ G_M43209_IG06: ; bbWeight=1, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0048 mov r8, rbp ; gcrRegs +[r8] call [<unknown method>]
- ; gcrRegs -[rcx rbp rdi r8]
+ ; gcrRegs -[rcx rbp rdi r8] +[rax]
; byrRegs -[rdx rsi] ; gcr arg pop 0 test rax, rax
- je SHORT G_M43209_IG11
+ je G_M43209_IG13
lea rdx, bword ptr [rax+0x10] ; byrRegs +[rdx]
- mov edi, dword ptr [rax+0x08] - ;; size=32 bbWeight=1 PerfScore 8.75 -G_M43209_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
+ mov r14d, dword ptr [rax+0x08] + ;; size=32 bbWeight=1 PerfScore 7.50 +G_M43209_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {rdx rbx}, byref, isz
; gcrRegs -[rax] mov rcx, bword ptr [rbx] ; byrRegs +[rcx] mov r8d, dword ptr [rbx+0x08]
- cmp edi, r8d - ja SHORT G_M43209_IG12 - mov r8d, edi
+ cmp r14d, r8d + ja SHORT G_M43209_IG14 + mov r8d, r14d
call [<unknown method>] ; byrRegs -[rcx rdx rbx] ; gcr arg pop 0
- mov r14, bword ptr [rsp+0x70] - ; byrRegs +[r14] - mov dword ptr [r14], edi
+ mov r15, bword ptr [rsp+0x80] + ; byrRegs +[r15] + mov dword ptr [r15], r14d
mov eax, 1
- ;; size=34 bbWeight=1 PerfScore 10.75 -G_M43209_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r14] - add rsp, 32
+ ;; size=37 bbWeight=1 PerfScore 10.75 +G_M43209_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r15] + add rsp, 40
pop rbx pop rbp pop rsi pop rdi pop r14
+ pop r15
ret
- ;; size=11 bbWeight=1 PerfScore 3.75 -G_M43209_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M43209_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
; gcrRegs +[rbp] ; byrRegs +[rbx rsi]
- mov r14, bword ptr [rsp+0x70] - ; byrRegs +[r14]
+ mov r15, bword ptr [rsp+0x80] + ; byrRegs +[r15] + jmp SHORT G_M43209_IG10 + ;; size=10 bbWeight=0.50 PerfScore 1.50 +G_M43209_IG09: ; bbWeight=0, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0048 {rbx rsi}, byref, isz + ; gcrRegs +[rdi] + ; byrRegs -[r15] + mov r15, bword ptr [rsp+0x80] + ; byrRegs +[r15] + xor rax, rax + ; gcrRegs +[rax] + test rax, rax + je SHORT G_M43209_IG12 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M43209_IG10: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=8048 {rbx rsi r15}, byref + ; gcrRegs -[rax rdi]
mov rcx, rbp ; gcrRegs +[rcx] mov rdx, rsi ; byrRegs +[rdx] mov r8, rbx ; byrRegs +[r8]
- mov r9, r14
+ mov r9, r15
; byrRegs +[r9] call [System.Security.Cryptography.CryptographicOperations:TryHashData(System.Security.Cryptography.HashAlgorithmName,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte] ; gcrRegs -[rcx rbp]
- ; byrRegs -[rdx rbx rsi r8-r9 r14]
+ ; byrRegs -[rdx rbx rsi r8-r9 r15]
; gcr arg pop 0 nop
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M43209_IG10: ; bbWeight=0, epilog, nogc, extend - add rsp, 32
+ ;; size=19 bbWeight=0 PerfScore 0.00 +G_M43209_IG11: ; bbWeight=0, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0 PerfScore 0.00 -G_M43209_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz - ; byrRegs +[rbx]
+ ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43209_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00A0 {rbp rdi}, byrefRegs=8048 {rbx rsi r15}, gcvars, byref + ; gcrRegs +[rbp rdi] + ; byrRegs +[rbx rsi r15] + mov bword ptr [rsp+0x80], r15 + jmp G_M43209_IG05 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43209_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs -[rbp rdi] + ; byrRegs -[rsi r15]
xor rdx, rdx ; byrRegs +[rdx]
- xor edi, edi - jmp SHORT G_M43209_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M43209_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor r14d, r14d + jmp SHORT G_M43209_IG06 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M43209_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdx rbx] xor eax, eax
- mov r14, bword ptr [rsp+0x70] - ; byrRegs +[r14] - mov dword ptr [r14], eax - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M43209_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r14] - jmp SHORT G_M43209_IG08
+ mov r15, bword ptr [rsp+0x80] + ; byrRegs +[r15] + mov dword ptr [r15], eax + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M43209_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r15] + jmp SHORT G_M43209_IG07
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 197, prolog size 10, PerfScore 33.66, instruction count 68, allocated bytes for code 197 (MethodHash=79ec5736) for method System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (Tier1)
+; Total bytes of code 244, prolog size 12, PerfScore 36.88, instruction count 76, allocated bytes for code 244 (MethodHash=79ec5736) for method System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -186,14 +204,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0A - CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0C
...

+21 (+28.00%) : 81567.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)

@@ -10,13 +10,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rdx class-hnd single-def <System.Type>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> rdx class-hnd single-def <System.Type>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T04] ( 3, 0.80) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T04] ( 3, 0.55) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType> -; V06 tmp4 [V06,T02] ( 5, 4.50) ref -> rdx class-hnd exact "Inline stloc first use temp" <System.RuntimeType> -; V07 cse0 [V07,T03] ( 3, 2.50) long -> rax "CSE - aggressive"
+; V05 tmp3 [V05,T03] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType> +; V06 rat0 [V06,T01] ( 5, 7.50) ref -> rdx "replacement local"
; ; Lcl frame size = 0 @@ -26,61 +25,69 @@ G_M44244_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { G_M44244_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] test rcx, rcx
- je SHORT G_M44244_IG10
+ je SHORT G_M44244_IG13
mov rax, 0xD1FFAB1E ; System.RuntimeType cmp qword ptr [rcx], rax
- jne SHORT G_M44244_IG12
+ jne SHORT G_M44244_IG09
test rdx, rdx
- je SHORT G_M44244_IG07
+ je SHORT G_M44244_IG04
;; size=25 bbWeight=1 PerfScore 6.75 G_M44244_IG03: ; bbWeight=0.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rdx], rax jne SHORT G_M44244_IG07
- ;; size=5 bbWeight=0.50 PerfScore 2.00
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M44244_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
+ test rdx, rdx + je SHORT G_M44244_IG06
cmp rdx, rcx
- jne SHORT G_M44244_IG06 - ;; size=5 bbWeight=1 PerfScore 1.25
+ jne SHORT G_M44244_IG08 + ;; size=10 bbWeight=1 PerfScore 2.50
G_M44244_IG05: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rcx rdx] mov ebx, 1
- jmp SHORT G_M44244_IG08
+ jmp SHORT G_M44244_IG11
;; size=7 bbWeight=0.55 PerfScore 1.23
-G_M44244_IG06: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs +[rcx rdx]
+G_M44244_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + xor ebx, ebx + jmp SHORT G_M44244_IG11 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M44244_IG07: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rcx] + xor rdx, rdx + ; gcrRegs +[rdx] + jmp SHORT G_M44244_IG04 + ;; size=4 bbWeight=0.25 PerfScore 0.56 +G_M44244_IG08: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx jmp <unknown method> ; gcr arg pop 0 ;; size=6 bbWeight=1 PerfScore 2.50
-G_M44244_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rcx rdx] - xor ebx, ebx - ;; size=2 bbWeight=0.25 PerfScore 0.06 -G_M44244_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movzx rax, bl - ;; size=3 bbWeight=0 PerfScore 0.00 -G_M44244_IG09: ; bbWeight=0, epilog, nogc, extend - pop rbx - ret - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M44244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M44244_IG11: ; bbWeight=0, epilog, nogc, extend - pop rbx - ret - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M44244_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rcx rdx]
+G_M44244_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0xA8] ;; size=10 bbWeight=0 PerfScore 0.00
-G_M44244_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M44244_IG10: ; bbWeight=0, epilog, nogc, extend
pop rbx tail.jmp [rax+0x10]<unknown method> ;; size=5 bbWeight=0 PerfScore 0.00
+G_M44244_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rcx rdx] + movzx rax, bl + ;; size=3 bbWeight=0 PerfScore 0.00 +G_M44244_IG12: ; bbWeight=0, epilog, nogc, extend + pop rbx + ret + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M44244_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M44244_IG14: ; bbWeight=0, epilog, nogc, extend + pop rbx + ret + ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 75, prolog size 1, PerfScore 14.79, instruction count 27, allocated bytes for code 75 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 96, prolog size 1, PerfScore 16.67, instruction count 33, allocated bytes for code 96 (MethodHash=6257532b) for method System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-13 (-32.50%) : 149830.dasm - System.Text.Json.JsonSerializer:UnboxOnWriteSystem.__Canon:System.__Canon (FullOpts)

@@ -7,12 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp2 [V05,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -20,34 +18,21 @@ G_M8451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M8451_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M8451_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M8451_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M8451_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M8451_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M8451_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M8451_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M8451_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=553cdefc) for method System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-13 (-32.50%) : 35571.dasm - LamarCodeGeneration.Util.TypeExtensions:AsSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 4, 3.25) long -> rcx single-def -; V01 arg0 [V01,T02] ( 4, 3.12) ref -> rdx class-hnd single-def <System.Object>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp2 [V04,T00] ( 5, 6.75) ref -> rax class-hnd "spilling QMark2" <System.__Canon>
; ; Lcl frame size = 40 @@ -19,34 +17,21 @@ G_M24927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M24927_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M24927_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov rax, rdx - ; gcrRegs +[rax] - test rax, rax - je SHORT G_M24927_IG05 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M24927_IG03: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] mov rcx, qword ptr [rcx]
- cmp qword ptr [rax], rcx - je SHORT G_M24927_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M24927_IG04: ; bbWeight=0.12, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0
- ;; size=5 bbWeight=0.12 PerfScore 0.12 -G_M24927_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop
- ;; size=1 bbWeight=1 PerfScore 0.25 -G_M24927_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=13 bbWeight=1 PerfScore 5.25 +G_M24927_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 9, PerfScore 6.38, instruction count 13, allocated bytes for code 40 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
+; Total bytes of code 27, prolog size 9, PerfScore 7.75, instruction count 8, allocated bytes for code 27 (MethodHash=d8aa9ea0) for method LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-25 (-30.49%) : 21287.dasm - Newtonsoft.Json.Linq.JToken:ToObjectSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd single-def <Newtonsoft.Json.Linq.JToken> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <Newtonsoft.Json.Linq.JToken> +; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -22,57 +21,38 @@ G_M31157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, rdx - ;; size=17 bbWeight=1 PerfScore 3.75 -G_M31157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=14 bbWeight=1 PerfScore 3.50 +G_M31157_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rdx+0x38] + mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx] call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M31157_IG05 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M31157_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M31157_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M31157_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M31157_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M31157_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=36 bbWeight=1 PerfScore 12.00 +G_M31157_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 82, prolog size 11, PerfScore 18.44, instruction count 27, allocated bytes for code 82 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 57, prolog size 11, PerfScore 17.75, instruction count 19, allocated bytes for code 57 (MethodHash=76ef864a) for method Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+30 (+60.00%) : 96993.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:b_220():this (FullOpts)

@@ -8,25 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataColumnMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataColumnMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataColumnMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rcx "CSE - aggressive"
; ; Lcl frame size = 32
-G_M18245_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx sub rsp, 32 mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18245_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov rdx, gword ptr [rbx+0x10] @@ -36,17 +35,25 @@ G_M18245_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- mov rcx, gword ptr [rbx+0x08] - ; gcrRegs +[rcx] - cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rbx+0x08] + cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
call [System.Data.Common.DataColumnMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- int3 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E + mov rcx, rbx + ; gcrRegs +[rcx] + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + ;; size=64 bbWeight=1 PerfScore 19.25 +G_M18245_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 32 + pop rbx + tail.jmp [rax]System.Data.Common.DataColumnMappingCollection:Remove(System.Data.Common.DataColumnMapping):this + ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 50, prolog size 5, PerfScore 0.00, instruction count 13, allocated bytes for code 50 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
+; Total bytes of code 80, prolog size 5, PerfScore 23.50, instruction count 18, allocated bytes for code 80 (MethodHash=013fb8ba) for method System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
; ============================================================ Unwind Info:

+30 (+60.00%) : 97954.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:b_160():this (FullOpts)

@@ -8,25 +8,24 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 2 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> -; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V06 tmp4 [V06,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V08 cse0 [V08,T04] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMapping[]> +; V05 tmp3 [V05,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V06 tmp4 [V06,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V07 cse0 [V07,T04] ( 2, 2 ) ref -> rcx "CSE - aggressive"
; ; Lcl frame size = 32
-G_M51850_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M51850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx sub rsp, 32 mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 1.50 +G_M51850_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov rdx, gword ptr [rbx+0x10] @@ -36,17 +35,25 @@ G_M51850_IG02: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- mov rcx, gword ptr [rbx+0x08] - ; gcrRegs +[rcx] - cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rbx+0x08] + cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
- int3 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E + mov rcx, rbx + ; gcrRegs +[rcx] + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + ;; size=64 bbWeight=1 PerfScore 19.25 +G_M51850_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 32 + pop rbx + tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Remove(System.Data.Common.DataTableMapping):this + ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 50, prolog size 5, PerfScore 0.00, instruction count 13, allocated bytes for code 50 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
+; Total bytes of code 80, prolog size 5, PerfScore 23.50, instruction count 18, allocated bytes for code 80 (MethodHash=872f3575) for method System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
; ============================================================ Unwind Info:

+33 (+122.22%) : 98031.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>cDisplayClass7_0:b2():this (FullOpts)

@@ -8,31 +8,40 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 3, 2 ) ref -> rcx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> -;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1" -;* V04 tmp3 [V04,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <System.Data.Common.DataTableMapping> -; V06 cse0 [V06,T02] ( 2, 0 ) ref -> rcx "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Data.Common.DataTableMappingCollection> +;* V03 tmp2 [V03,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V04 cse0 [V04,T02] ( 2, 2 ) ref -> rcx "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
-G_M51219_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - sub rsp, 40 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M51219_IG02: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M51219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG + push rbx + sub rsp, 32 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M51219_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- mov rcx, gword ptr [rcx+0x08] - cmp byte ptr [rcx], cl
+ mov rbx, gword ptr [rcx+0x08] + ; gcrRegs +[rbx] + cmp byte ptr [rbx], bl
mov rcx, 0xD1FFAB1E call [System.Data.Common.DataTableMappingCollection:ValidateType(System.Object)] ; gcrRegs -[rcx] ; gcr arg pop 0
- int3 - ;; size=23 bbWeight=0 PerfScore 0.00
+ mov r8, 0xD1FFAB1E + mov rcx, rbx + ; gcrRegs +[rcx] + xor edx, edx + mov rax, 0xD1FFAB1E ; code for System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + ;; size=47 bbWeight=1 PerfScore 9.25 +G_M51219_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 32 + pop rbx + tail.jmp [rax]System.Data.Common.DataTableMappingCollection:Insert(int,System.Data.Common.DataTableMapping):this + ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 27, prolog size 4, PerfScore 0.00, instruction count 6, allocated bytes for code 27 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
+; Total bytes of code 60, prolog size 5, PerfScore 13.25, instruction count 13, allocated bytes for code 60 (MethodHash=20ef37ec) for method System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
; ============================================================ Unwind Info: @@ -40,9 +49,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

realworld.run.windows.x64.checked.mch

-25 (-33.78%) : 677.dasm - System.Activator:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.25) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V03 tmp2 [V03,T03] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V04 tmp3 [V04,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V03 cse0 [V03,T02] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -19,11 +18,10 @@ G_M13946_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rcx
- mov rbx, rcx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rbx, qword ptr [rcx+0x38] + mov rcx, qword ptr [rbx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 @@ -32,39 +30,21 @@ G_M13946_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M13946_IG05 - ;; size=29 bbWeight=1 PerfScore 9.75 -G_M13946_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M13946_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M13946_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M13946_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M13946_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=33 bbWeight=1 PerfScore 11.75 +G_M13946_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 74, prolog size 10, PerfScore 16.44, instruction count 23, allocated bytes for code 74 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 49, prolog size 10, PerfScore 15.75, instruction count 15, allocated bytes for code 49 (MethodHash=5c26c985) for method System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-41 (-30.15%) : 8531.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1int

@@ -8,17 +8,13 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 23.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
+; V00 arg0 [V00,T00] ( 7, 22.50) ref -> rbx class-hnd <FSharp.Compiler.TypedTree+DecisionTree>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.TypedTree+DecisionTree> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 2, 2 ) long -> rax "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T03] ( 5, 5 ) ref -> rcx class-hnd "spilling QMark2" <<unknown class>> -; V07 tmp3 [V07,T02] ( 2, 16 ) long -> rcx "fgMakeTemp is creating a new local variable" -; V08 tmp4 [V08,T01] ( 4, 25 ) ref -> rax class-hnd "spilling QMark2" <<unknown class>> -; V09 tmp5 [V09,T06] ( 2, 2 ) int -> rbx "Inlining Arg" -; V10 tmp6 [V10,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
+; V05 tmp1 [V05,T02] ( 2, 2 ) int -> rbx "Inlining Arg" +; V06 tmp2 [V06,T01] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[int]>
; ; Lcl frame size = 32 @@ -36,7 +32,7 @@ G_M51841_IG02: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M51841_IG08
+ jne SHORT G_M51841_IG06
;; size=23 bbWeight=8 PerfScore 22.00 G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] @@ -47,56 +43,37 @@ G_M51841_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M51841_IG06 - mov rax, rbx - mov rcx, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rax], rcx - je SHORT G_M51841_IG05 - ;; size=41 bbWeight=4 PerfScore 29.00 -G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, rbx - ; gcrRegs +[rax] - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M51841_IG05: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] - mov rbx, gword ptr [rax+0x10] - ; gcrRegs +[rbx]
+ je SHORT G_M51841_IG04 + mov rbx, gword ptr [rbx+0x10]
jmp SHORT G_M51841_IG02
- ;; size=6 bbWeight=4 PerfScore 16.00 -G_M51841_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=29 bbWeight=4 PerfScore 27.00 +G_M51841_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] xor rax, rax ; gcrRegs +[rax] ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M51841_IG05: ; bbWeight=0.50, epilog, nogc, extend + add rsp, 32 + pop rbx + ret + ;; size=6 bbWeight=0.50 PerfScore 0.88 +G_M51841_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx] + mov ebx, dword ptr [rbx+0x10] + ; gcrRegs -[rbx] + mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int] + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov dword ptr [rax+0x08], ebx + ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M51841_IG07: ; bbWeight=0.50, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51841_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - mov rax, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rcx], rax - cmovne rcx, rbx - mov ebx, dword ptr [rcx+0x10] - ; gcrRegs -[rbx] - mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int] - ; gcrRegs -[rcx] - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov dword ptr [rax+0x08], ebx - ;; size=41 bbWeight=0.50 PerfScore 4.00 -G_M51841_IG09: ; bbWeight=0.50, epilog, nogc, extend - add rsp, 32 - pop rbx - ret - ;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 136, prolog size 8, PerfScore 85.00, instruction count 35, allocated bytes for code 136 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
+; Total bytes of code 95, prolog size 8, PerfScore 65.00, instruction count 26, allocated bytes for code 95 (MethodHash=562a357e) for method FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
; ============================================================ Unwind Info:

-25 (-29.07%) : 21452.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,12 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T04] ( 3, 3 ) long -> rsi "CSE - aggressive"
; ; Lcl frame size = 40 @@ -22,60 +21,41 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 40 mov qword ptr [rsp+0x20], rdx
- mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, rdx - ;; size=17 bbWeight=1 PerfScore 3.75 -G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx]
+ mov rbx, rcx + ; gcrRegs +[rbx] + ;; size=14 bbWeight=1 PerfScore 3.50 +G_M60617_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rsi, qword ptr [rdx+0x38] + mov rcx, qword ptr [rsi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rsi
+ mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [rbx]
; gcrRegs -[rax] mov rax, qword ptr [rax+0x70] call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcrRegs -[rcx rdx rbx] +[rax]
; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M60617_IG05 - ;; size=36 bbWeight=1 PerfScore 14.00 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx] - cmp qword ptr [r8], rcx - je SHORT G_M60617_IG05 - ;; size=12 bbWeight=0.25 PerfScore 2.00 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rsi]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=40 bbWeight=1 PerfScore 16.00 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 86, prolog size 11, PerfScore 22.44, instruction count 29, allocated bytes for code 86 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 61, prolog size 11, PerfScore 21.75, instruction count 21, allocated bytes for code 61 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+31 (+0.74%) : 15797.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)

@@ -9,29 +9,29 @@ ; Final local variable assignments ; ; V00 this [V00,T29] ( 20, 25 ) ref -> rbx this class-hnd single-def <Microsoft.ML.Data.TextLoader+Bindings>
-; V01 arg1 [V01,T66] ( 8, 6.50) ref -> [rbp+0x18] class-hnd single-def <Microsoft.ML.Data.TextLoader>
+; V01 arg1 [V01,T67] ( 8, 6.50) ref -> [rbp+0x18] class-hnd single-def <Microsoft.ML.Data.TextLoader>
; V02 arg2 [V02,T30] ( 10, 21 ) ref -> [rbp+0x20] class-hnd single-def <Microsoft.ML.Data.TextLoader+Column[]>
-; V03 arg3 [V03,T78] ( 6, 4.50) ref -> [rbp+0x28] class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V04 arg4 [V04,T117] ( 2, 1 ) ref -> [rbp+0x30] class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> -; V05 loc0 [V05,T94] ( 16, 3.50) ref -> [rbp-0xC0] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
+; V03 arg3 [V03,T79] ( 6, 4.50) ref -> [rbp+0x28] class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V04 arg4 [V04,T119] ( 2, 1 ) ref -> [rbp+0x30] class-hnd single-def <Microsoft.ML.Data.IMultiStreamSource> +; V05 loc0 [V05,T95] ( 16, 3.50) ref -> [rbp-0xC0] class-hnd EH-live spill-single-def <Microsoft.ML.Runtime.IChannel>
; V06 loc1 [V06,T37] ( 8, 20.50) ref -> [rbp-0xC8] class-hnd exact spill-single-def <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V07 loc2 [V07,T65] ( 5, 9 ) ubyte -> rdi
+; V07 loc2 [V07,T66] ( 5, 9 ) ubyte -> rdi
; V08 loc3 [V08,T43] ( 7, 18.50) int -> [rbp-0x3C] ; V09 loc4 [V09 ] ( 8, 4.50) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> ; V10 loc5 [V10,T28] ( 10, 28 ) int -> registers
-; V11 loc6 [V11,T64] ( 3, 9.50) ref -> [rbp-0xD0] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
+; V11 loc6 [V11,T65] ( 3, 9.50) ref -> [rbp-0xD0] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType>
; V12 loc7 [V12,T36] ( 10, 22.50) ref -> [rbp-0xD8] class-hnd <Microsoft.ML.Data.TextLoader+Segment[]> ; V13 loc8 [V13,T53] ( 5, 15 ) ref -> [rbp-0xE0] class-hnd exact spill-single-def <<unknown class>>
-;* V14 loc9 [V14,T119] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
+;* V14 loc9 [V14,T121] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.ML.Data.TextLoader+Column[]>
; V15 loc10 [V15,T46] ( 5, 17 ) int -> [rbp-0x4C]
-; V16 loc11 [V16,T63] ( 3, 10 ) ref -> rcx class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
+; V16 loc11 [V16,T64] ( 3, 10 ) ref -> rcx class-hnd exact <Microsoft.ML.Data.TextLoader+Column>
; V17 loc12 [V17 ] ( 4, 2 ) int -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V18 loc13 [V18 ] ( 4, 2 ) int -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V19 loc14 [V19,T19] ( 12, 45 ) int -> [rbp-0x64] ; V20 loc15 [V20,T20] ( 10, 44 ) ref -> [rbp-0xE8] class-hnd exact spill-single-def <Microsoft.ML.Data.TextLoader+Column>
-; V21 loc16 [V21,T55] ( 4, 12 ) ref -> [rbp-0xF0] class-hnd exact spill-single-def <System.String> -; V22 loc17 [V22,T54] ( 4, 14 ) ref -> [rbp-0xF8] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> -; V23 loc18 [V23,T83] ( 3, 6 ) ubyte -> [rbp-0x68] spill-single-def
+; V21 loc16 [V21,T56] ( 4, 12 ) ref -> [rbp-0xF0] class-hnd exact spill-single-def <System.String> +; V22 loc17 [V22,T55] ( 4, 14 ) ref -> [rbp-0xF8] class-hnd <Microsoft.ML.Data.PrimitiveDataViewType> +; V23 loc18 [V23,T85] ( 3, 6 ) ubyte -> [rbp-0x68] spill-single-def
; V24 loc19 [V24,T21] ( 5, 34 ) ref -> rax class-hnd exact <Microsoft.ML.Data.TextLoader+Segment[]> ; V25 loc20 [V25,T04] ( 8,108 ) int -> rcx ; V26 loc21 [V26,T00] ( 9,160 ) ref -> r9 class-hnd exact <<unknown class>> @@ -45,55 +45,55 @@ ;* V34 loc29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]> ; V35 loc30 [V35,T45] ( 6, 18.50) int -> [rbp-0x70] ; V36 loc31 [V36,T18] ( 8, 60 ) int -> [rbp-0x74]
-;* V37 loc32 [V37,T110] ( 0, 0 ) int -> zero-ref
+;* V37 loc32 [V37,T111] ( 0, 0 ) int -> zero-ref
;* V38 loc33 [V38 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> ;* V39 loc34 [V39 ] ( 0, 0 ) struct (16) zero-ref <Microsoft.ML.Data.TextLoader+Segment> ; V40 OutArgs [V40 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V41 tmp1 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Bindings+<>c__DisplayClass6_0>
-; V42 tmp2 [V42,T71] ( 2, 8 ) ref -> r8 class-hnd "dup spill" <<unknown class>> -; V43 tmp3 [V43,T72] ( 2, 8 ) ref -> [rbp-0x100] class-hnd exact spill-single-def "impSpillLclRefs" <<unknown class>>
+; V42 tmp2 [V42,T72] ( 2, 8 ) ref -> r8 class-hnd "dup spill" <<unknown class>> +; V43 tmp3 [V43,T73] ( 2, 8 ) ref -> [rbp-0x100] class-hnd exact spill-single-def "impSpillLclRefs" <<unknown class>>
;* V44 tmp4 [V44 ] ( 0, 0 ) ref -> zero-ref
-; V45 tmp5 [V45,T67] ( 4, 8 ) ref -> r8
+; V45 tmp5 [V45,T68] ( 4, 8 ) ref -> r8
; V46 tmp6 [V46,T39] ( 5, 20 ) ref -> [rbp-0x108] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V47 tmp7 [V47,T79] ( 3, 6 ) ref -> [rbp-0x110] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V48 tmp8 [V48,T84] ( 3, 6 ) int -> rcx -; V49 tmp9 [V49,T56] ( 3, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
+; V47 tmp7 [V47,T80] ( 3, 6 ) ref -> [rbp-0x110] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V48 tmp8 [V48,T86] ( 3, 6 ) int -> rcx +; V49 tmp9 [V49,T57] ( 3, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <Microsoft.ML.Data.InternalDataKind>
;* V50 tmp10 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impImportAndPushBox" <<unknown class>> ;* V51 tmp11 [V51 ] ( 0, 0 ) ref -> zero-ref ;* V52 tmp12 [V52 ] ( 0, 0 ) ref -> zero-ref ; V53 tmp13 [V53,T50] ( 2, 16 ) int -> r12
-; V54 tmp14 [V54,T122] ( 4, 0 ) ref -> rbx class-hnd exact "dup spill" <<unknown class>> -; V55 tmp15 [V55,T123] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32> -; V56 tmp16 [V56,T124] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
+; V54 tmp14 [V54,T124] ( 4, 0 ) ref -> rbx class-hnd exact "dup spill" <<unknown class>> +; V55 tmp15 [V55,T125] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32> +; V56 tmp16 [V56,T126] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
;* V57 tmp17 [V57 ] ( 0, 0 ) ref -> zero-ref ;* V58 tmp18 [V58 ] ( 0, 0 ) ref -> zero-ref ; V59 tmp19 [V59,T51] ( 2, 16 ) int -> r13
-; V60 tmp20 [V60,T57] ( 3, 12 ) ref -> r13 class-hnd exact "non-inline candidate call" <<unknown class>> -; V61 tmp21 [V61,T73] ( 2, 8 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V60 tmp20 [V60,T58] ( 3, 12 ) ref -> r13 class-hnd exact "non-inline candidate call" <<unknown class>> +; V61 tmp21 [V61,T74] ( 2, 8 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V62 tmp22 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V63 tmp23 [V63,T95] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V64 tmp24 [V64,T74] ( 2, 8 ) ref -> r13 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
+; V63 tmp23 [V63,T96] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V64 tmp24 [V64,T75] ( 2, 8 ) ref -> r13 class-hnd "dup spill" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
;* V65 tmp25 [V65 ] ( 0, 0 ) ref -> zero-ref ;* V66 tmp26 [V66 ] ( 0, 0 ) ref -> zero-ref
-; V67 tmp27 [V67,T62] ( 5, 10 ) ref -> r13
+; V67 tmp27 [V67,T63] ( 5, 10 ) ref -> r13
; V68 tmp28 [V68,T40] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Func`3[Microsoft.ML.Data.TextLoader+Segment,int,ubyte]>
-; V69 tmp29 [V69,T96] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V70 tmp30 [V70,T75] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
+; V69 tmp29 [V69,T97] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V70 tmp30 [V70,T76] ( 2, 8 ) ref -> rdx class-hnd "dup spill" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
;* V71 tmp31 [V71 ] ( 0, 0 ) ref -> zero-ref
-; V72 tmp32 [V72,T68] ( 4, 8 ) ref -> rdx
+; V72 tmp32 [V72,T69] ( 4, 8 ) ref -> rdx
;* V73 tmp33 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ;* V74 tmp34 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.ML.Data.TextLoader+Segment> ; V75 tmp35 [V75,T41] ( 5, 20 ) ref -> [rbp-0x118] class-hnd exact spill-single-def "NewObj constructor temp" <System.Comparison`1[Microsoft.ML.Data.TextLoader+Segment]>
-; V76 tmp36 [V76,T97] ( 3, 3 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V76 tmp36 [V76,T98] ( 3, 3 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V77 tmp37 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V78 tmp38 [V78,T105] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> -; V79 tmp39 [V79,T89] ( 2, 4 ) int -> rdx "Inline return value spill temp"
+; V78 tmp38 [V78,T106] ( 2, 2 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> +; V79 tmp39 [V79,T91] ( 2, 4 ) int -> rdx "Inline return value spill temp"
; V80 tmp40 [V80,T42] ( 3, 20 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
-; V81 tmp41 [V81,T58] ( 3, 12 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>> -; V82 tmp42 [V82,T114] ( 2, 1 ) int -> r8 "Inline return value spill temp" -; V83 tmp43 [V83,T98] ( 3, 3 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V84 tmp44 [V84,T118] ( 2, 1 ) int -> r10 "Inline return value spill temp" -; V85 tmp45 [V85,T102] ( 3, 3 ) int -> r10 "Inlining Arg"
+; V81 tmp41 [V81,T59] ( 3, 12 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>> +; V82 tmp42 [V82,T116] ( 2, 1 ) int -> r8 "Inline return value spill temp" +; V83 tmp43 [V83,T99] ( 3, 3 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> +; V84 tmp44 [V84,T120] ( 2, 1 ) int -> r10 "Inline return value spill temp" +; V85 tmp45 [V85,T103] ( 3, 3 ) int -> r10 "Inlining Arg"
;* V86 tmp46 [V86 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V87 tmp47 [V87,T52] ( 2, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String> ;* V88 tmp48 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -109,109 +109,109 @@ ;* V98 tmp58 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V99 tmp59 [V99,T26] ( 2, 32 ) ubyte -> r9 "Inlining Arg" ;* V100 tmp60 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V101 tmp61 [V101,T80] ( 3, 6 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> -;* V102 tmp62 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V103 tmp63 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.ML.Data.TextLoader+Segment[]> -; V104 tmp64 [V104,T90] ( 2, 4 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V105 tmp65 [V105,T31] ( 6, 24 ) ref -> [rbp-0x120] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> -; V106 tmp66 [V106,T81] ( 3, 6 ) ref -> r11 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V107 tmp67 [V107,T69] ( 4, 8 ) int -> rax "Inline stloc first use temp" -;* V108 tmp68 [V108 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -; V109 tmp69 [V109,T59] ( 3, 12 ) ref -> rax class-hnd exact "Inlining Arg" <<unknown class>> -;* V110 tmp70 [V110 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> -;* V111 tmp71 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V112 tmp72 [V112,T32] ( 3, 24 ) ref -> rax class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V113 tmp73 [V113,T24] ( 4, 32 ) int -> rsi "Inline stloc first use temp" -;* V114 tmp74 [V114 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V115 tmp75 [V115,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V116 tmp76 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> -; V117 tmp77 [V117,T82] ( 3, 6 ) ref -> rdx class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> -; V118 tmp78 [V118,T70] ( 4, 8 ) int -> rcx "Inline stloc first use temp" -;* V119 tmp79 [V119 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> -;* V120 tmp80 [V120 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V121 tmp81 [V121,T115] ( 2, 1 ) int -> rcx "Inline return value spill temp" -; V122 tmp82 [V122,T99] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -; V123 tmp83 [V123,T106] ( 2, 2 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]]> -;* V124 tmp84 [V124 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V125 tmp85 [V125,T03] ( 6,112 ) int -> r10 "field V28.Min (fldOffset=0x0)" P-INDEP -; V126 tmp86 [V126,T05] ( 5,104 ) int -> registers "field V28.Lim (fldOffset=0x4)" P-INDEP -; V127 tmp87 [V127,T13] ( 4, 64 ) ubyte -> registers "field V28.ForceVector (fldOffset=0x8)" P-INDEP -; V128 tmp88 [V128,T104] ( 2, 2.50) int -> [rbp-0x78] spill-single-def "field V32.Min (fldOffset=0x0)" P-INDEP -; V129 tmp89 [V129,T44] ( 5, 28.50) int -> [rbp-0x7C] spill-single-def "field V32.Lim (fldOffset=0x4)" P-INDEP -;* V130 tmp90 [V130 ] ( 0, 0 ) ubyte -> zero-ref "field V32.ForceVector (fldOffset=0x8)" P-INDEP -;* V131 tmp91 [V131 ] ( 0, 0 ) int -> zero-ref "field V39.Min (fldOffset=0x0)" P-INDEP -;* V132 tmp92 [V132 ] ( 0, 0 ) int -> zero-ref "field V39.Lim (fldOffset=0x4)" P-INDEP -;* V133 tmp93 [V133 ] ( 0, 0 ) ubyte -> zero-ref "field V39.ForceVector (fldOffset=0x8)" P-INDEP -;* V134 tmp94 [V134,T111] ( 0, 0 ) ubyte -> zero-ref "field V62.hasValue (fldOffset=0x0)" P-INDEP -; V135 tmp95 [V135,T91] ( 2, 4 ) ubyte -> rcx "field V62.value (fldOffset=0x1)" P-INDEP -; V136 tmp96 [V136,T85] ( 3, 6 ) int -> r8 "field V73.Min (fldOffset=0x0)" P-INDEP -;* V137 tmp97 [V137,T112] ( 0, 0 ) int -> zero-ref "field V73.Lim (fldOffset=0x4)" P-INDEP -;* V138 tmp98 [V138,T113] ( 0, 0 ) ubyte -> zero-ref "field V73.ForceVector (fldOffset=0x8)" P-INDEP -; V139 tmp99 [V139,T33] ( 3, 24 ) int -> rcx "field V74.Min (fldOffset=0x0)" P-INDEP -; V140 tmp100 [V140,T34] ( 3, 24 ) int -> r9 "field V74.Lim (fldOffset=0x4)" P-INDEP -;* V141 tmp101 [V141,T77] ( 0, 0 ) ubyte -> zero-ref "field V74.ForceVector (fldOffset=0x8)" P-INDEP -; V142 tmp102 [V142,T86] ( 3, 6 ) int -> rcx "field V108.Min (fldOffset=0x0)" P-INDEP -; V143 tmp103 [V143,T87] ( 3, 6 ) int -> r9 "field V108.Lim (fldOffset=0x4)" P-INDEP -; V144 tmp104 [V144,T88] ( 3, 6 ) ubyte -> [rbp-0x80] spill-single-def "field V108.ForceVector (fldOffset=0x8)" P-INDEP -;* V145 tmp105 [V145 ] ( 0, 0 ) int -> zero-ref "field V114.Min (fldOffset=0x0)" P-INDEP -;* V146 tmp106 [V146 ] ( 0, 0 ) int -> zero-ref "field V114.Lim (fldOffset=0x4)" P-INDEP -;* V147 tmp107 [V147 ] ( 0, 0 ) ubyte -> zero-ref "field V114.ForceVector (fldOffset=0x8)" P-INDEP -;* V148 tmp108 [V148 ] ( 0, 0 ) int -> zero-ref "field V119.Min (fldOffset=0x0)" P-INDEP -;* V149 tmp109 [V149 ] ( 0, 0 ) int -> zero-ref "field V119.Lim (fldOffset=0x4)" P-INDEP -;* V150 tmp110 [V150 ] ( 0, 0 ) ubyte -> zero-ref "field V119.ForceVector (fldOffset=0x8)" P-INDEP -;* V151 tmp111 [V151,T109] ( 0, 0 ) ref -> zero-ref "V38.[000..008)" -; V152 tmp112 [V152,T06] ( 6, 82 ) int -> [rbp-0x84] "V38.[008..012)" -; V153 tmp113 [V153,T22] ( 3, 34 ) int -> [rbp-0x88] spill-single-def "V38.[012..016)" -; V154 tmp114 [V154,T14] ( 3, 32 ) int -> r9 "V38.[016..020)" -; V155 tmp115 [V155,T15] ( 3, 32 ) int -> [rbp-0x8C] spill-single-def "V38.[020..024)" -;* V156 tmp116 [V156 ] ( 0, 0 ) ubyte -> zero-ref "V38.[024..025)" -;* V157 tmp117 [V157 ] ( 0, 0 ) ref -> zero-ref "V110.[000..008)" -;* V158 tmp118 [V158 ] ( 0, 0 ) int -> zero-ref "V110.[008..012)" -; V159 tmp119 [V159,T92] ( 2, 4 ) int -> r10 "V110.[012..016)" -;* V160 tmp120 [V160 ] ( 0, 0 ) int -> zero-ref "V110.[016..020)" -;* V161 tmp121 [V161 ] ( 0, 0 ) int -> zero-ref "V110.[020..024)" -;* V162 tmp122 [V162 ] ( 0, 0 ) ubyte -> zero-ref "V110.[024..025)" -; V163 tmp123 [V163,T07] ( 3, 96 ) byref -> rcx "Spilling address for field-by-field copy" -; V164 tmp124 [V164,T125] ( 2, 0 ) ref -> rbx "argument with side effect" -; V165 tmp125 [V165,T126] ( 2, 0 ) ref -> r8 "argument with side effect" -; V166 tmp126 [V166,T127] ( 2, 0 ) ref -> rbx "argument with side effect" -; V167 tmp127 [V167,T128] ( 2, 0 ) ref -> r8 "argument with side effect" -; V168 tmp128 [V168,T61] ( 3, 12 ) struct ( 8) [rbp-0x98] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V169 tmp129 [V169,T08] ( 3, 96 ) ref -> r9 "arr expr" -; V170 tmp130 [V170,T129] ( 2, 0 ) ref -> rsi "argument with side effect" -; V171 tmp131 [V171,T130] ( 2, 0 ) ref -> r8 "argument with side effect" -; V172 tmp132 [V172,T02] ( 4,128 ) byref -> r15 "BlockOp address local" -; V173 tmp133 [V173,T131] ( 2, 0 ) ref -> rdx "argument with side effect" -; V174 tmp134 [V174,T132] ( 2, 0 ) ref -> rdx "argument with side effect" -; V175 tmp135 [V175,T133] ( 2, 0 ) ref -> rbx "argument with side effect" -; V176 tmp136 [V176,T134] ( 2, 0 ) ref -> r8 "argument with side effect" -; V177 tmp137 [V177,T135] ( 2, 0 ) ref -> rdx "argument with side effect" -; V178 tmp138 [V178,T60] ( 3, 12 ) ref -> rdx "arr expr" -; V179 tmp139 [V179,T76] ( 2, 8 ) ref -> rdx "argument with side effect" -; V180 tmp140 [V180,T103] ( 3, 3 ) int -> rdx "index expr" -; V181 tmp141 [V181,T100] ( 3, 3 ) byref -> rdx single-def "BlockOp address local" -; V182 tmp142 [V182,T09] ( 3, 96 ) ref -> rcx "arr expr" -; V183 tmp143 [V183 ] ( 12, 96 ) struct (16) [rbp-0xA8] do-not-enreg[XSF] addr-exposed "by-value struct argument" <Microsoft.ML.Data.TextLoader+Segment> -; V184 tmp144 [V184,T12] ( 4, 64 ) byref -> rax "BlockOp address local" -; V185 tmp145 [V185,T47] ( 4, 16 ) byref -> rdx "BlockOp address local" -; V186 tmp146 [V186,T48] ( 4, 16 ) byref -> rdx "BlockOp address local" -; V187 tmp147 [V187,T49] ( 4, 16 ) byref -> rdx "BlockOp address local" -; V188 tmp148 [V188,T107] ( 2, 2 ) ref -> r14 single-def "argument with side effect" -; V189 tmp149 [V189,T108] ( 2, 2 ) ref -> r8 single-def "argument with side effect" -; V190 tmp150 [V190,T101] ( 3, 3 ) ref -> rsi single-def "arr expr" -; V191 tmp151 [V191 ] ( 2, 2 ) struct (16) [rbp-0xB8] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ReadOnlyMemory`1[ushort]> -; V192 tmp152 [V192,T136] ( 2, 0 ) ref -> rbx single-def "argument with side effect" -; V193 tmp153 [V193,T137] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V194 tmp154 [V194,T138] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V195 tmp155 [V195,T139] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V196 tmp156 [V196,T140] ( 2, 0 ) ref -> rbx single-def "argument with side effect" -; V197 tmp157 [V197,T141] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V198 PSPSym [V198,T120] ( 1, 1 ) long -> [rbp-0x130] do-not-enreg[V] "PSPSym" -;* V199 cse0 [V199,T93] ( 0, 0 ) long -> zero-ref multi-def "CSE - conservative" -;* V200 cse1 [V200,T121] ( 0, 0 ) long -> zero-ref "CSE - conservative" -; V201 cse2 [V201,T17] ( 3, 48 ) int -> r9 "CSE - moderate" -; V202 cse3 [V202,T116] ( 3, 1.50) int -> rax "CSE - conservative" -; V203 cse4 [V203,T35] ( 3, 24 ) int -> rdx "CSE - conservative"
+; V101 tmp61 [V101,T81] ( 3, 6 ) ref -> rdx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.ML.Data.TextLoader+Segment]> +;* V102 tmp62 [V102,T112] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V103 tmp63 [V103,T82] ( 3, 6 ) ref -> rcx class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V104 tmp64 [V104,T31] ( 6, 24 ) ref -> [rbp-0x120] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Enumerable+<WhereIterator>d__321`1[Microsoft.ML.Data.TextLoader+Segment]> +; V105 tmp65 [V105,T83] ( 3, 6 ) ref -> r11 class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V106 tmp66 [V106,T70] ( 4, 8 ) int -> rax "Inline stloc first use temp" +;* V107 tmp67 [V107 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +; V108 tmp68 [V108,T60] ( 3, 12 ) ref -> rax class-hnd exact "Inlining Arg" <<unknown class>> +;* V109 tmp69 [V109 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.ML.Data.TextLoader+Segment]> +;* V110 tmp70 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V111 tmp71 [V111,T32] ( 3, 24 ) ref -> rax class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V112 tmp72 [V112,T24] ( 4, 32 ) int -> rsi "Inline stloc first use temp" +;* V113 tmp73 [V113 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V114 tmp74 [V114,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V115 tmp75 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.ML.Data.TextLoader+Segment]> +; V116 tmp76 [V116,T84] ( 3, 6 ) ref -> rdx class-hnd exact "Inline stloc first use temp" <Microsoft.ML.Data.TextLoader+Segment[]> +; V117 tmp77 [V117,T71] ( 4, 8 ) int -> rcx "Inline stloc first use temp" +;* V118 tmp78 [V118 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <Microsoft.ML.Data.TextLoader+Segment> +;* V119 tmp79 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V120 tmp80 [V120,T117] ( 2, 1 ) int -> rcx "Inline return value spill temp"
...

+7 (+2.52%) : 11838.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1FSharp.Compiler.Syntax.SynBinding

@@ -8,25 +8,25 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]>
; V02 loc0 [V02 ] ( 12, 6.50) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.FSharp.Core.CompilerServices.ListCollector`1[FSharp.Compiler.Syntax.SynBinding]> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V05 tmp2 [V05,T06] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V06 tmp3 [V06,T02] ( 3, 5 ) ref -> rax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V08 tmp5 [V08,T04] ( 5, 3.25) ref -> rdx class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V10 tmp7 [V10,T08] ( 3, 1.50) ref -> rax -;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V12 tmp9 [V12,T09] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V13 tmp10 [V13,T07] ( 2, 2 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V14 tmp11 [V14,T10] ( 2, 1 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> -; V15 tmp12 [V15 ] ( 8, 4.50) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP -; V16 tmp13 [V16 ] ( 6, 3.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x8)" P-DEP -; V17 tmp14 [V17,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect" -; V18 cse0 [V18,T05] ( 3, 2.50) long -> rsi "CSE - aggressive"
+; V05 tmp2 [V05,T07] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V06 tmp3 [V06,T03] ( 3, 5 ) ref -> rax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V07 tmp4 [V07,T05] ( 4, 3 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V09 tmp6 [V09,T09] ( 3, 1.50) ref -> rax +;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V11 tmp8 [V11,T10] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V12 tmp9 [V12,T08] ( 2, 2 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V13 tmp10 [V13,T11] ( 2, 1 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding]> +; V14 tmp11 [V14 ] ( 8, 4.50) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V02.Result (fldOffset=0x0)" P-DEP +; V15 tmp12 [V15 ] ( 6, 3.50) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V02.LastCons (fldOffset=0x8)" P-DEP +; V16 tmp13 [V16,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V17 cse0 [V17,T06] ( 3, 2.50) long -> rsi "CSE - aggressive" +; V18 rat0 [V18,T00] ( 5, 7.50) ref -> rdx "replacement local"
; ; Lcl frame size = 56 @@ -50,7 +50,7 @@ G_M4830_IG02: ; bbWeight=1, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, b ; gcrRegs -[r8] ; gcr arg pop 0 test byte ptr [(reloc)], 1 ; global ptr
- je G_M4830_IG13
+ je G_M4830_IG15
;; size=37 bbWeight=1 PerfScore 8.00 G_M4830_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> @@ -65,22 +65,31 @@ G_M4830_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre mov rdx, rax ; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M4830_IG09
+ je SHORT G_M4830_IG06
;; size=40 bbWeight=1 PerfScore 7.25
-G_M4830_IG04: ; bbWeight=0.25, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
+G_M4830_IG04: ; bbWeight=0.50, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] cmp qword ptr [rdx], rcx
- jne SHORT G_M4830_IG09 - ;; size=15 bbWeight=0.25 PerfScore 1.06 -G_M4830_IG05: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M4830_IG06 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M4830_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M4830_IG06: ; bbWeight=1, gcrefRegs=0005 {rax rdx}, byrefRegs=0000 {}, byref, isz + test rdx, rdx + je SHORT G_M4830_IG11 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp gword ptr [rsp+0x28], 0
- jne SHORT G_M4830_IG06
+ jne SHORT G_M4830_IG08
mov rax, rdx ; gcrRegs +[rax]
- jmp SHORT G_M4830_IG07
+ jmp SHORT G_M4830_IG09
;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, gword ptr [rsp+0x30] ; gcrRegs +[rcx] @@ -93,17 +102,17 @@ G_M4830_IG06: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, b mov rax, gword ptr [rsp+0x28] ; gcrRegs +[rax] ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M4830_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rsp+0x28], rcx ;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M4830_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov gword ptr [rsp+0x30], rcx
- jmp SHORT G_M4830_IG12
+ jmp SHORT G_M4830_IG14
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+0x28] mov r8, rax ; gcrRegs +[r8] @@ -112,13 +121,13 @@ G_M4830_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, b ; gcrRegs -[rax r8] ; gcr arg pop 0 cmp gword ptr [rsp+0x28], 0
- jne SHORT G_M4830_IG10
+ jne SHORT G_M4830_IG12
mov rcx, 0xD1FFAB1E ; const ptr mov rax, gword ptr [rcx] ; gcrRegs +[rax]
- jmp SHORT G_M4830_IG12
+ jmp SHORT G_M4830_IG14
;; size=40 bbWeight=0.50 PerfScore 5.62
-G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4830_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, gword ptr [rsp+0x30] ; gcrRegs +[rcx] @@ -137,17 +146,17 @@ G_M4830_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ; gcrRegs +[rcx] mov gword ptr [rsp+0x28], rcx ;; size=39 bbWeight=0.50 PerfScore 3.50
-G_M4830_IG11: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M4830_IG13: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov gword ptr [rsp+0x30], rcx ;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M4830_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M4830_IG14: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 56 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-G_M4830_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M4830_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx] mov rcx, 0xD1FFAB1E mov edx, 0x33EB @@ -156,7 +165,7 @@ G_M4830_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r jmp G_M4830_IG03 ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 278, prolog size 18, PerfScore 39.69, instruction count 63, allocated bytes for code 278 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
+; Total bytes of code 285, prolog size 18, PerfScore 42.06, instruction count 66, allocated bytes for code 285 (MethodHash=e3d9ed21) for method FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
; ============================================================ Unwind Info:

+22 (+6.09%) : 4756.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)

@@ -8,28 +8,27 @@ ; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> -; V01 arg1 [V01,T00] ( 13, 13 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task> -; V02 arg2 [V02,T01] ( 4, 4 ) ubyte -> [rbp+0x20] EH-live single-def
+; V00 this [V00,T02] ( 4, 2.50) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Tasks.ThreadPoolTaskScheduler> +; V01 arg1 [V01,T00] ( 13, 7.50) ref -> rbx class-hnd single-def <System.Threading.Tasks.Task> +; V02 arg2 [V02,T01] ( 5, 3.50) ubyte -> [rbp+0x20] EH-live single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp2 [V05,T06] ( 4, 4 ) ubyte -> rdx "Inline return value spill temp" -; V06 tmp3 [V06,T05] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V07 tmp4 [V07,T11] ( 3, 3 ) ubyte -> rdx "Inline return value spill temp" -; V08 tmp5 [V08,T08] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V05 tmp2 [V05,T06] ( 4, 2 ) ubyte -> rdx "Inline return value spill temp" +; V06 tmp3 [V06,T05] ( 4, 2 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V07 tmp4 [V07,T11] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp" +; V08 tmp5 [V08,T08] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V10 tmp7 [V10,T12] ( 2, 2 ) int -> rdx "Inline stloc first use temp"
+; V10 tmp7 [V10,T12] ( 2, 1 ) int -> rdx "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Object> ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref
-;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V16 tmp13 [V16,T09] ( 2, 4 ) byref -> rdx single-def "argument with side effect" -; V17 PSPSym [V17,T13] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym" -; V18 cse0 [V18,T10] ( 3, 3 ) ref -> rdx "CSE - aggressive" -; V19 rat0 [V19,T07] ( 3, 4 ) byref -> rdx "TLS field access" -; V20 rat1 [V20,T02] ( 3, 6 ) long -> rdx "TLS access" -; V21 rat2 [V21,T03] ( 3, 6 ) long -> rdx "ThreadStaticBlockBase access"
+;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode> +;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V15 tmp12 [V15,T09] ( 2, 2 ) byref -> rdx single-def "argument with side effect" +; V16 PSPSym [V16,T13] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym" +; V17 cse0 [V17,T10] ( 3, 1.50) ref -> rdx "CSE - moderate" +; V18 rat0 [V18,T07] ( 3, 2 ) byref -> rdx "TLS field access" +; V19 rat1 [V19,T03] ( 3, 3 ) long -> rdx "TLS access" +; V20 rat2 [V20,T04] ( 3, 3 ) long -> rdx "ThreadStaticBlockBase access"
; ; Lcl frame size = 40 @@ -45,9 +44,11 @@ G_M14922_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdx ; gcrRegs +[rbx] ;; size=26 bbWeight=1 PerfScore 6.00
-G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
test r8b, r8b
- je SHORT G_M14922_IG04
+ je SHORT G_M14922_IG05 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M14922_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx test rbx, rbx setne cl @@ -59,23 +60,23 @@ G_M14922_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000 ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M14922_IG04
+ jne SHORT G_M14922_IG05
xor eax, eax
- ;; size=34 bbWeight=1 PerfScore 10.50 -G_M14922_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=29 bbWeight=0.50 PerfScore 4.62 +G_M14922_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 2.25 -G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M14922_IG05: ; bbWeight=0.50, gcVars=0000000000000004 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
or dword ptr [rbx+0x34], 0x20000 mov rdx, gword ptr [rbx+0x28] ; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M14922_IG08
+ je SHORT G_M14922_IG09
cmp dword ptr [rdx+0x38], 1
- je SHORT G_M14922_IG07
+ je SHORT G_M14922_IG08
add rdx, 64 ; gcrRegs -[rdx] ; byrRegs +[rdx] @@ -83,27 +84,27 @@ G_M14922_IG04: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000 ; gcrRegs +[rdx] ; byrRegs -[rdx] test rdx, rdx
- je SHORT G_M14922_IG05
+ je SHORT G_M14922_IG06
cmp dword ptr [rdx+0x20], 0 setne dl ; gcrRegs -[rdx] movzx rdx, dl
- jmp SHORT G_M14922_IG06 - ;; size=46 bbWeight=1 PerfScore 20.00 -G_M14922_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M14922_IG07 + ;; size=46 bbWeight=0.50 PerfScore 10.00 +G_M14922_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor edx, edx
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M14922_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M14922_IG09 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M14922_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M14922_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M14922_IG10 + ;; size=2 bbWeight=0.50 PerfScore 1.00 +G_M14922_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edx, 1
- jmp SHORT G_M14922_IG09 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M14922_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M14922_IG10 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M14922_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor edx, edx
- ;; size=2 bbWeight=1 PerfScore 0.25 -G_M14922_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.12 +G_M14922_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test edx, edx sete dl movzx rdx, dl @@ -113,20 +114,20 @@ G_M14922_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr setne al movzx rax, al test edx, eax
- je SHORT G_M14922_IG12
+ je SHORT G_M14922_IG13
mov rdx, qword ptr GS:[0x0058] mov rdx, qword ptr [rdx] cmp dword ptr [rdx+0xD8], 11
- jl SHORT G_M14922_IG11
+ jl SHORT G_M14922_IG12
mov rdx, qword ptr [rdx+0xE0] mov rdx, qword ptr [rdx+0x58] test rdx, rdx
- je SHORT G_M14922_IG11
+ je SHORT G_M14922_IG12
mov rdx, bword ptr [rdx] ; byrRegs +[rdx] add rdx, 16
- ;; size=75 bbWeight=1 PerfScore 21.00 -G_M14922_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
+ ;; size=75 bbWeight=0.50 PerfScore 10.50 +G_M14922_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
add rdx, 104 mov rcx, rbx ; gcrRegs +[rcx] @@ -136,9 +137,9 @@ G_M14922_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, ; gcrRegs -[rcx rbx r8] ; byrRegs -[rdx] ; gcr arg pop 0
- jmp SHORT G_M14922_IG13 - ;; size=18 bbWeight=1 PerfScore 5.75 -G_M14922_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M14922_IG14 + ;; size=18 bbWeight=0.50 PerfScore 2.88 +G_M14922_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] mov ecx, 11 call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED @@ -146,21 +147,21 @@ G_M14922_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rdx, rax ; byrRegs +[rdx]
- jmp SHORT G_M14922_IG10
+ jmp SHORT G_M14922_IG11
;; size=15 bbWeight=0 PerfScore 0.00
-G_M14922_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M14922_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax rdx] mov eax, dword ptr [rbx+0x34] and eax, 0xD1FFAB1E cmp eax, 0xD1FFAB1E
- je SHORT G_M14922_IG13
+ je SHORT G_M14922_IG14
lea rax, bword ptr [rbx+0x34] ; byrRegs +[rax] mov edx, dword ptr [rbx+0x34] or edx, 0xD1FFAB1E xchg dword ptr [rax], edx test edx, 0xD1FFAB1E
- jne SHORT G_M14922_IG13
+ jne SHORT G_M14922_IG14
mov rcx, rbx ; gcrRegs +[rcx] call [<unknown method>] @@ -168,36 +169,10 @@ G_M14922_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; byrRegs -[rax] ; gcr arg pop 0 nop
- ;; size=48 bbWeight=1 PerfScore 31.00 -G_M14922_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rsp - call G_M14922_IG17 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M14922_IG14: ; bbWeight=1, nogc, extend - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M14922_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V00} - mov eax, 1 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M14922_IG16: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M14922_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc - push rbp - push rbx - sub rsp, 40 - mov rbp, qword ptr [rcx+0x20] - mov qword ptr [rsp+0x20], rbp - lea rbp, [rbp+0x30] - ;; size=19 bbWeight=1 PerfScore 5.75 -G_M14922_IG18: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00}
+ ;; size=48 bbWeight=0.50 PerfScore 15.50 +G_M14922_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp+0x20], 0
- je SHORT G_M14922_IG19
+ je SHORT G_M14922_IG15
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] cmp byte ptr [rcx], cl @@ -209,18 +184,51 @@ G_M14922_IG18: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=000 call [System.Threading.PortableThreadPool:NotifyWorkItemProgress():this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=31 bbWeight=1 PerfScore 12.25 -G_M14922_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M14922_IG20: ; bbWeight=1, funclet epilog, nogc, extend
+ ;; size=31 bbWeight=0.50 PerfScore 6.12 +G_M14922_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0.50 PerfScore 0.12
...

smoke_tests.nativeaot.windows.x64.checked.mch

-18 (-30.00%) : 32085.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -21,48 +20,31 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx]
+ mov rbx, qword ptr [rdx] + mov rcx, rbx
mov rdx, r8 ; gcrRegs +[rdx] call CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[rdx r8] +[rax] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M33075_IG05 - ;; size=19 bbWeight=1 PerfScore 4.75 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx] - cmp qword ptr [r8], rcx - je SHORT G_M33075_IG05 - ;; size=8 bbWeight=0.25 PerfScore 1.50 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=26 bbWeight=1 PerfScore 5.25 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 60, prolog size 10, PerfScore 10.94, instruction count 20, allocated bytes for code 60 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

-18 (-30.00%) : 10222.dasm - Generics+TestDelegateFatFunctionPointers:OtherGenericSystem.__Canon:System.__Canon:this (FullOpts)

@@ -8,12 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <Generics+TestDelegateFatFunctionPointers>
-; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V05 tmp2 [V05,T04] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V06 tmp3 [V06,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V04 tmp1 [V04,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V05 cse0 [V05,T03] ( 3, 3 ) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 48 @@ -21,48 +20,31 @@ G_M33075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rdx
- mov rbx, rdx - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 2.25 +G_M33075_IG02: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- mov rcx, qword ptr [rbx]
+ mov rbx, qword ptr [rdx] + mov rcx, rbx
mov rdx, r8 ; gcrRegs +[rdx] call CORINFO_HELP_ISINSTANCEOFANY ; gcrRegs -[rdx r8] +[rax] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M33075_IG05 - ;; size=19 bbWeight=1 PerfScore 4.75 -G_M33075_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx] - cmp qword ptr [r8], rcx - je SHORT G_M33075_IG05 - ;; size=8 bbWeight=0.25 PerfScore 1.50 -G_M33075_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, rbx
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M33075_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M33075_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=26 bbWeight=1 PerfScore 5.25 +G_M33075_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 60, prolog size 10, PerfScore 10.94, instruction count 20, allocated bytes for code 60 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
+; Total bytes of code 42, prolog size 10, PerfScore 9.25, instruction count 14, allocated bytes for code 42 (MethodHash=24df7ecc) for method Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

-18 (-23.38%) : 13255.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (FullOpts)

@@ -7,13 +7,11 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo> -; V01 TypeCtx [V01,T01] ( 5, 4.25) long -> rbx single-def
+; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Reflection.MethodInfo> +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 4.25) ref -> rax single-def "CASTCLASS eval op1" -; V04 tmp2 [V04,T05] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable" -; V05 tmp3 [V05,T00] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <System.__Canon> -; V06 tmp4 [V06,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V03 tmp1 [V03,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
; ; Lcl frame size = 40 @@ -26,7 +24,7 @@ G_M60617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rsi] mov rbx, rdx ;; size=17 bbWeight=1 PerfScore 3.75
-G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbx] call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE ; gcrRegs +[rax] @@ -40,39 +38,22 @@ G_M60617_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr call [rax+0xE8]<unknown method> ; gcrRegs -[rcx rdx rsi] +[rax] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - test r8, r8 - je SHORT G_M60617_IG05 - ;; size=31 bbWeight=1 PerfScore 10.00 -G_M60617_IG03: ; bbWeight=0.25, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx] - cmp qword ptr [r8], rcx - je SHORT G_M60617_IG05 - ;; size=8 bbWeight=0.25 PerfScore 1.50 -G_M60617_IG04: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8]
mov rdx, rax ; gcrRegs +[rdx]
+ mov rcx, qword ptr [rbx]
call CORINFO_HELP_CHKCASTANY ; gcrRegs -[rdx] ; gcr arg pop 0
- mov r8, rax - ; gcrRegs +[r8] - ;; size=11 bbWeight=0.12 PerfScore 0.19 -G_M60617_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, r8 - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M60617_IG06: ; bbWeight=1, epilog, nogc, extend
+ nop + ;; size=35 bbWeight=1 PerfScore 12.00 +G_M60617_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 77, prolog size 11, PerfScore 17.94, instruction count 26, allocated bytes for code 77 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
+; Total bytes of code 59, prolog size 11, PerfScore 18.00, instruction count 20, allocated bytes for code 59 (MethodHash=a5831336) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info:

+7 (+5.47%) : 15724.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,16 +7,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 5.25) ref -> rsi class-hnd exact <System.Text.UnicodeEncoding>
+; V00 this [V00,T01] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> +; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object> +; V02 loc0 [V02,T02] ( 8, 5 ) ref -> rsi class-hnd exact single-def <System.Text.UnicodeEncoding>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Text.UnicodeEncoding> -;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> -; V08 tmp5 [V08,T03] ( 3, 3 ) ref -> rcx single-def "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 3 ) ref -> rcx "virtual vtable call"
+;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> +; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect" +; V08 rat0 [V08,T00] ( 5, 7.50) ref -> rsi "replacement local" +; V09 rat1 [V09,T05] ( 3, 3 ) ref -> rcx "virtual vtable call"
; ; Lcl frame size = 32 @@ -33,15 +33,24 @@ G_M7325_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, mov rsi, rdx ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7325_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M7325_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- lea rcx, [(reloc)] ; System.Text.UnicodeEncoding
+ lea rcx, [(reloc)]
cmp qword ptr [rsi], rcx
- jne SHORT G_M7325_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M7325_IG05 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M7325_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M7325_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M7325_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M7325_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -56,13 +65,13 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs -[rcx] ; gcr arg pop 0 cmp edi, eax
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rcx, byte ptr [rbx+0x27] cmp cl, byte ptr [rsi+0x27]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rcx, byte ptr [rbx+0x26] cmp cl, byte ptr [rsi+0x26]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rsi+0x10] @@ -72,25 +81,25 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG08
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rdx, gword ptr [rsi+0x18] ; gcrRegs +[rdx] mov rax, qword ptr [rcx] ;; size=77 bbWeight=0.50 PerfScore 20.12
-G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi tail.jmp [rax+0x20]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M7325_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7325_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx rbx rsi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi @@ -98,7 +107,7 @@ G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=8 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 128, prolog size 7, PerfScore 29.62, instruction count 46, allocated bytes for code 128 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 135, prolog size 7, PerfScore 32.06, instruction count 49, allocated bytes for code 135 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info:

+7 (+5.47%) : 18396.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)

@@ -7,16 +7,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object> -; V02 loc0 [V02,T01] ( 9, 5.25) ref -> rsi class-hnd exact <System.Text.UnicodeEncoding>
+; V00 this [V00,T01] ( 8, 5 ) ref -> rbx this class-hnd exact single-def <System.Text.UnicodeEncoding> +; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Object> +; V02 loc0 [V02,T02] ( 8, 5 ) ref -> rsi class-hnd exact single-def <System.Text.UnicodeEncoding>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.Text.UnicodeEncoding> -;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> -;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> -; V08 tmp5 [V08,T03] ( 3, 3 ) ref -> rcx single-def "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 3 ) ref -> rcx "virtual vtable call"
+;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.EncoderFallback> +;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.DecoderFallback> +; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect" +; V08 rat0 [V08,T00] ( 5, 7.50) ref -> rsi "replacement local" +; V09 rat1 [V09,T05] ( 3, 3 ) ref -> rcx "virtual vtable call"
; ; Lcl frame size = 32 @@ -33,15 +33,24 @@ G_M7325_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, mov rsi, rdx ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7325_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M7325_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- lea rcx, [(reloc)] ; System.Text.UnicodeEncoding
+ lea rcx, [(reloc)]
cmp qword ptr [rsi], rcx
- jne SHORT G_M7325_IG06 - ;; size=12 bbWeight=0.25 PerfScore 1.12 -G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M7325_IG05 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M7325_IG04: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + ;; size=2 bbWeight=0.25 PerfScore 0.06 +G_M7325_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + test rsi, rsi + je SHORT G_M7325_IG08 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M7325_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -56,13 +65,13 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs -[rcx] ; gcr arg pop 0 cmp edi, eax
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rcx, byte ptr [rbx+0x27] cmp cl, byte ptr [rsi+0x27]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
movzx rcx, byte ptr [rbx+0x26] cmp cl, byte ptr [rsi+0x26]
- jne SHORT G_M7325_IG06
+ jne SHORT G_M7325_IG08
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] mov rdx, gword ptr [rsi+0x10] @@ -72,25 +81,25 @@ G_M7325_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M7325_IG06
+ je SHORT G_M7325_IG08
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] mov rdx, gword ptr [rsi+0x18] ; gcrRegs +[rdx] mov rax, qword ptr [rcx] ;; size=77 bbWeight=0.50 PerfScore 20.12
-G_M7325_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi pop rdi tail.jmp [rax+0x20]<unknown method> ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M7325_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7325_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdx rbx rsi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M7325_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi @@ -98,7 +107,7 @@ G_M7325_IG07: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=8 bbWeight=0.50 PerfScore 1.38
-; Total bytes of code 128, prolog size 7, PerfScore 29.62, instruction count 46, allocated bytes for code 128 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 135, prolog size 7, PerfScore 32.06, instruction count 49, allocated bytes for code 135 (MethodHash=9c87e362) for method System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info:

+15 (+6.28%) : 28941.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)

@@ -10,33 +10,33 @@ ; V00 this [V00,T00] ( 7, 7 ) byref -> rbx this single-def ;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def ;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 arg3 [V03,T01] ( 10, 5.33) ref -> rsi class-hnd single-def <System.IFormatProvider>
+; V03 arg3 [V03,T01] ( 12, 6.33) ref -> rsi class-hnd single-def <System.IFormatProvider>
; V04 arg4 [V04,T06] ( 1, 2 ) byref -> rdi single-def ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06,T12] ( 0, 0 ) byref -> zero-ref single-def ;* V07 tmp2 [V07,T11] ( 0, 0 ) byref -> zero-ref ; V08 tmp3 [V08,T05] ( 3, 2 ) int -> rdi ; V09 tmp4 [V09,T08] ( 3, 1.50) ubyte -> rdi "Inline return value spill temp"
-; V10 tmp5 [V10,T03] ( 2, 2 ) ref -> rcx class-hnd exact "spilling QMark2" <System.Globalization.CultureInfo> -; V11 tmp6 [V11,T09] ( 2, 1 ) int -> rcx -; V12 tmp7 [V12,T10] ( 4, 1 ) ref -> rax "guarded devirt return temp" -; V13 tmp8 [V13,T04] ( 4, 2 ) ref -> rdx single-def "guarded devirt arg temp" -;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> -; V17 tmp12 [V17,T13] ( 3, 0.83) ref -> rax "guarded devirt return temp" -; V18 tmp13 [V18,T07] ( 3, 1.67) ref -> rdx single-def "guarded devirt arg temp" -;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> -;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> -;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo>
+; V10 tmp5 [V10,T09] ( 2, 1 ) int -> rcx +; V11 tmp6 [V11,T10] ( 4, 1 ) ref -> rax "guarded devirt return temp" +; V12 tmp7 [V12,T04] ( 4, 2 ) ref -> rdx single-def "guarded devirt arg temp" +;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +; V16 tmp11 [V16,T13] ( 3, 0.83) ref -> rax "guarded devirt return temp" +; V17 tmp12 [V17,T07] ( 3, 1.67) ref -> rdx single-def "guarded devirt arg temp" +;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.NumberFormatInfo> +;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.CultureInfo> +;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Globalization.DateTimeFormatInfo> +;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP -;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP -;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ushort]> -; V29 cse0 [V29,T02] ( 6, 2.83) long -> rdi "CSE - aggressive"
+;* V25 tmp20 [V25 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP +;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP +;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ushort]> +; V28 cse0 [V28,T03] ( 6, 2.83) long -> rdi multi-def "CSE - aggressive" +; V29 rat0 [V29,T02] ( 5, 3.75) ref -> rcx "replacement local"
; ; Lcl frame size = 32 @@ -80,46 +80,59 @@ G_M17405_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, G_M17405_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref ; gcrRegs -[rsi] xor edi, edi
- jmp G_M17405_IG18
+ jmp G_M17405_IG21
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M17405_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz ; gcrRegs +[rsi] mov rcx, rsi ; gcrRegs +[rcx]
- mov rdi, qword ptr [rcx] - lea rcx, [(reloc)] ; System.Globalization.CultureInfo
+ test rcx, rcx + je SHORT G_M17405_IG10 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M17405_IG08: ; bbWeight=0.25, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref, isz + lea rdx, [(reloc)] + cmp qword ptr [rcx], rdx + je SHORT G_M17405_IG10 + ;; size=12 bbWeight=0.25 PerfScore 1.12 +G_M17405_IG09: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rcx]
- cmp rdi, rcx - jne SHORT G_M17405_IG13
+ xor rcx, rcx + ; gcrRegs +[rcx] + ;; size=2 bbWeight=0.12 PerfScore 0.03 +G_M17405_IG10: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref, isz + test rcx, rcx + je SHORT G_M17405_IG16
lea rdx, gword ptr [(reloc)] ; gcrRegs +[rdx]
+ mov rdi, qword ptr [rsi]
lea rcx, [(reloc)]
+ ; gcrRegs -[rcx]
cmp rdi, rcx
- jne SHORT G_M17405_IG09 - ;; size=37 bbWeight=0.50 PerfScore 3.12 -G_M17405_IG08: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jne SHORT G_M17405_IG12 + ;; size=27 bbWeight=0.50 PerfScore 2.75 +G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] call System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- jmp SHORT G_M17405_IG12
+ jmp SHORT G_M17405_IG15
;; size=10 bbWeight=0.17 PerfScore 0.55
-G_M17405_IG09: ; bbWeight=0.33, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M17405_IG12: ; bbWeight=0.33, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax] +[rdx] lea rcx, [(reloc)] cmp rdi, rcx
- jne SHORT G_M17405_IG11
+ jne SHORT G_M17405_IG14
;; size=12 bbWeight=0.33 PerfScore 0.58
-G_M17405_IG10: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M17405_IG13: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] call System.Globalization.CultureInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0
- jmp SHORT G_M17405_IG12
+ jmp SHORT G_M17405_IG15
;; size=10 bbWeight=0.17 PerfScore 0.54
-G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+G_M17405_IG14: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax] +[rdx] mov rcx, rsi ; gcrRegs +[rcx] @@ -127,12 +140,12 @@ G_M17405_IG11: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 ; gcrRegs -[rcx rdx] +[rax] ; gcr arg pop 0 ;; size=8 bbWeight=0.17 PerfScore 0.21
-G_M17405_IG12: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M17405_IG15: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz
xor ecx, ecx test rax, rax sete cl test cl, cl
- jne SHORT G_M17405_IG13
+ jne SHORT G_M17405_IG16
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -141,25 +154,26 @@ G_M17405_IG12: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 ;; size=31 bbWeight=0.50 PerfScore 2.38
-G_M17405_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M17405_IG16: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + mov rdi, qword ptr [rsi]
lea rcx, [(reloc)] ; System.Globalization.CultureInfo cmp rdi, rcx
- je SHORT G_M17405_IG17
+ je SHORT G_M17405_IG20
lea rdx, gword ptr [(reloc)] ; gcrRegs +[rdx] lea rcx, [(reloc)] cmp rdi, rcx
- jne SHORT G_M17405_IG15 - ;; size=31 bbWeight=0.50 PerfScore 2.00 -G_M17405_IG14: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jne SHORT G_M17405_IG18 + ;; size=34 bbWeight=0.50 PerfScore 3.00 +G_M17405_IG17: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] call System.Globalization.NumberFormatInfo:GetFormat(System.Type):System.Object:this ; gcrRegs -[rcx rdx rsi] +[rax] ; gcr arg pop 0
- jmp SHORT G_M17405_IG16
+ jmp SHORT G_M17405_IG19
;; size=10 bbWeight=0.17 PerfScore 0.55
-G_M17405_IG15: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+G_M17405_IG18: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax] +[rdx rsi] mov rcx, rsi ; gcrRegs +[rcx] @@ -167,20 +181,20 @@ G_M17405_IG15: ; bbWeight=0.17, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 ; gcrRegs -[rcx rdx rsi] +[rax] ; gcr arg pop 0 ;; size=8 bbWeight=0.17 PerfScore 0.21
-G_M17405_IG16: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref, isz
+G_M17405_IG19: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref, isz
xor edi, edi test rax, rax setne dil
- jmp SHORT G_M17405_IG18
+ jmp SHORT G_M17405_IG21
;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M17405_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M17405_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax] xor edi, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17405_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M17405_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov byte ptr [rbx+0x14], dil ;; size=4 bbWeight=1 PerfScore 1.00
-G_M17405_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M17405_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rsi @@ -188,7 +202,7 @@ G_M17405_IG19: ; bbWeight=1, epilog, nogc, extend ret ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 239, prolog size 7, PerfScore 32.63, instruction count 70, allocated bytes for code 239 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
+; Total bytes of code 254, prolog size 7, PerfScore 35.16, instruction count 76, allocated bytes for code 254 (MethodHash=d7afbc02) for method System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 1,752 1,017 654 81 -15,895 +19,234
benchmarks.run.windows.x64.checked.mch 110 78 28 4 -1,403 +1,250
benchmarks.run_pgo.windows.x64.checked.mch 1,716 748 943 25 -10,298 +24,653
benchmarks.run_tiered.windows.x64.checked.mch 31 23 7 1 -453 +47
coreclr_tests.run.windows.x64.checked.mch 952 470 290 192 -8,277 +163,316
libraries.crossgen2.windows.x64.checked.mch 1,121 1,119 2 0 -30,735 +2
libraries.pmi.windows.x64.checked.mch 627 556 51 20 -12,489 +1,762
libraries_tests.run.windows.x64.Release.mch 6,211 3,067 2,523 621 -46,898 +86,150
librariestestsnotieredcompilation.run.windows.x64.Release.mch 902 725 153 24 -17,683 +11,363
realworld.run.windows.x64.checked.mch 162 146 6 10 -3,144 +231
smoke_tests.nativeaot.windows.x64.checked.mch 78 37 39 2 -558 +308
13,662 7,986 4,696 980 -147,833 +308,316

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 124,423 61,702 62,721 0 (0.00%) 4,867 (3.76%)
benchmarks.run.windows.x64.checked.mch 26,223 4 26,219 0 (0.00%) 1,703 (6.10%)
benchmarks.run_pgo.windows.x64.checked.mch 99,338 50,327 49,011 0 (0.00%) 3,845 (3.73%)
benchmarks.run_tiered.windows.x64.checked.mch 52,985 36,872 16,113 0 (0.00%) 526 (0.98%)
coreclr_tests.run.windows.x64.checked.mch 565,381 341,481 223,900 1 (0.00%) 9,004 (1.57%)
libraries.crossgen2.windows.x64.checked.mch 243,723 15 243,708 1 (0.00%) 8 (0.00%)
libraries.pmi.windows.x64.checked.mch 279,868 6 279,862 1 (0.00%) 29,360 (9.49%)
libraries_tests.run.windows.x64.Release.mch 652,298 485,046 167,252 0 (0.00%) 29,126 (4.27%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 278,156 21,924 256,232 0 (0.00%) 42,380 (13.22%)
realworld.run.windows.x64.checked.mch 31,876 3 31,873 0 (0.00%) 4,734 (12.93%)
smoke_tests.nativeaot.windows.x64.checked.mch 30,525 11 30,514 0 (0.00%) 1,863 (5.75%)
2,384,796 997,391 1,387,405 3 (0.00%) 127,416 (5.07%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41148955 (overridden on cmd)
Total bytes of diff: 41152294 (overridden on cmd)
Total bytes of delta: 3339 (0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         422 : 58361.dasm (5.42 % of base)
         420 : 64687.dasm (5.31 % of base)
         415 : 77873.dasm (5.34 % of base)
         405 : 68821.dasm (5.21 % of base)
         388 : 54998.dasm (4.90 % of base)
         357 : 28834.dasm (4.54 % of base)
         312 : 50310.dasm (14.12 % of base)
         311 : 68044.dasm (13.88 % of base)
         309 : 71320.dasm (13.75 % of base)
         303 : 69570.dasm (13.79 % of base)
         303 : 78616.dasm (13.79 % of base)
         300 : 71875.dasm (13.73 % of base)
         187 : 21360.dasm (4.85 % of base)
         187 : 29750.dasm (4.85 % of base)
         187 : 34143.dasm (4.85 % of base)
         187 : 23223.dasm (4.85 % of base)
         187 : 24617.dasm (4.85 % of base)
         187 : 77226.dasm (4.85 % of base)
         187 : 9219.dasm (4.85 % of base)
         187 : 22022.dasm (4.85 % of base)

Top file improvements (bytes):
        -129 : 48342.dasm (-8.27 % of base)
        -112 : 99096.dasm (-2.27 % of base)
        -104 : 115453.dasm (-3.05 % of base)
         -93 : 116648.dasm (-2.18 % of base)
         -93 : 84286.dasm (-2.18 % of base)
         -93 : 117646.dasm (-2.18 % of base)
         -89 : 128976.dasm (-1.40 % of base)
         -85 : 116652.dasm (-5.77 % of base)
         -85 : 117707.dasm (-5.77 % of base)
         -85 : 67929.dasm (-2.27 % of base)
         -85 : 84141.dasm (-5.77 % of base)
         -85 : 101797.dasm (-5.75 % of base)
         -85 : 119313.dasm (-5.75 % of base)
         -82 : 69527.dasm (-5.57 % of base)
         -82 : 46554.dasm (-5.57 % of base)
         -82 : 52239.dasm (-5.57 % of base)
         -82 : 60152.dasm (-5.57 % of base)
         -82 : 71342.dasm (-5.57 % of base)
         -82 : 82508.dasm (-5.57 % of base)
         -82 : 49849.dasm (-5.57 % of base)

92 total files with Code Size differences (55 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         422 (5.42 % of base) : 58361.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         420 (5.31 % of base) : 64687.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         415 (5.34 % of base) : 77873.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         405 (5.21 % of base) : 68821.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         388 (4.90 % of base) : 54998.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         357 (4.54 % of base) : 28834.dasm - Benchmarks.Middleware.MiddlewareHelpers:RenderFortunesHtml(System.Collections.Generic.IEnumerable`1[Benchmarks.Data.Fortune],Microsoft.AspNetCore.Http.HttpContext,System.Text.Encodings.Web.HtmlEncoder):System.Threading.Tasks.Task (Tier1)
         312 (14.12 % of base) : 50310.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         311 (13.88 % of base) : 68044.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         309 (13.75 % of base) : 71320.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         303 (13.79 % of base) : 69570.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         303 (13.79 % of base) : 78616.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         300 (13.73 % of base) : 71875.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         187 (4.85 % of base) : 21360.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 29750.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 34143.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 23223.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 24617.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 77226.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 9219.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)
         187 (4.85 % of base) : 22022.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier1-OSR)

Top method improvements (bytes):
        -129 (-8.27 % of base) : 48342.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Instrumented Tier1)
        -112 (-2.27 % of base) : 99096.dasm - Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11:MoveNext():this (Instrumented Tier1)
        -104 (-3.05 % of base) : 115453.dasm - Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11:MoveNext():this (Tier1)
         -93 (-2.18 % of base) : 116648.dasm - Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11:MoveNext():this (Tier1)
         -93 (-2.18 % of base) : 84286.dasm - Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11:MoveNext():this (Tier1)
         -93 (-2.18 % of base) : 117646.dasm - Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11:MoveNext():this (Tier1)
         -89 (-1.40 % of base) : 128976.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:Next(byref,byref,byref,byref):System.Threading.Tasks.Task:this (Tier1)
         -85 (-2.27 % of base) : 67929.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker:Next(byref,byref,byref,byref):System.Threading.Tasks.Task:this (Tier1)
         -85 (-5.77 % of base) : 116652.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -85 (-5.77 % of base) : 117707.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -85 (-5.77 % of base) : 84141.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -85 (-5.75 % of base) : 101797.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -85 (-5.75 % of base) : 119313.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 69527.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 46554.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 52239.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 60152.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 71342.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 82508.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)
         -82 (-5.57 % of base) : 49849.dasm - Microsoft.AspNetCore.Routing.EndpointMiddleware:Invoke(Microsoft.AspNetCore.Http.HttpContext):System.Threading.Tasks.Task:this (Tier1)

Top method regressions (percentages):
         312 (14.12 % of base) : 50310.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         311 (13.88 % of base) : 68044.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
          82 (13.83 % of base) : 85248.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
         303 (13.79 % of base) : 69570.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         303 (13.79 % of base) : 78616.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         309 (13.75 % of base) : 71320.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
         300 (13.73 % of base) : 71875.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker:InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult):System.Threading.Tasks.Task:this (Tier1)
          79 (13.72 % of base) : 102003.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          79 (13.72 % of base) : 119427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          53 (13.62 % of base) : 69157.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          53 (13.62 % of base) : 78248.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          53 (13.62 % of base) : 35011.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          53 (13.62 % of base) : 58857.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          72 (13.38 % of base) : 113154.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          72 (13.38 % of base) : 127733.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          72 (13.38 % of base) : 67024.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          72 (13.38 % of base) : 53973.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
          54 (13.30 % of base) : 58910.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          54 (13.30 % of base) : 41572.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1-OSR)
          94 (13.22 % of base) : 78252.dasm - Microsoft.Extensions.Internal.ClosedGenericMatcher:GetGenericInstantiation(System.Type,System.Type):System.Type (Tier1-OSR)

Top method improvements (percentages):
         -25 (-33.33 % of base) : 1367.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -34 (-31.48 % of base) : 45428.dasm - Microsoft.Extensions.Internal.PropertyHelper:CallPropertySetter[System.__Canon,System.__Canon](System.Action`2[System.__Canon,System.__Canon],System.Object,System.Object) (Tier1)
         -25 (-30.49 % of base) : 46684.dasm - Microsoft.EntityFrameworkCore.Infrastructure.Internal.InfrastructureExtensions:GetService[System.__Canon](Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure`1[System.IServiceProvider]):System.__Canon (Tier1)
         -25 (-30.49 % of base) : 120649.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
         -25 (-27.78 % of base) : 115697.dasm - OrchardCore.Abstractions.Pooling.PoolingJsonSerializer:Deserialize[System.__Canon](System.String):System.__Canon:this (Tier1)
         -32 (-27.12 % of base) : 61474.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.ClrPropertySetter`2[System.__Canon,System.__Canon]:SetClrValue(System.Object,System.Object):this (FullOpts)
         -32 (-27.12 % of base) : 76983.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.ClrPropertySetter`2[System.__Canon,System.__Canon]:SetClrValue(System.Object,System.Object):this (Tier1)
         -26 (-24.30 % of base) : 113928.dasm - Microsoft.AspNetCore.Builder.ApplicationBuilder:GetProperty[System.__Canon](System.String):System.__Canon:this (Tier1)
         -37 (-23.87 % of base) : 126572.dasm - Markdig.Renderers.MarkdownObjectRenderer`2[System.__Canon,System.__Canon]:Write(Markdig.Renderers.RendererBase,Markdig.Syntax.MarkdownObject):this (FullOpts)
         -13 (-23.64 % of base) : 63106.dasm - Microsoft.EntityFrameworkCore.Internal.ScopedDbContextLease`1[System.__Canon]:get_Context():System.__Canon:this (FullOpts)
         -13 (-23.64 % of base) : 46672.dasm - Microsoft.EntityFrameworkCore.Internal.ScopedDbContextLease`1[System.__Canon]:get_Context():System.__Canon:this (Tier1)
         -13 (-23.64 % of base) : 124661.dasm - YesSql.Indexes.GroupedEnumerable`2[System.__Canon,System.__Canon]:get_Key():System.__Canon:this (FullOpts)
         -27 (-22.69 % of base) : 45064.dasm - Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions:GetRequiredService[System.__Canon](System.IServiceProvider):System.__Canon (Tier1)
         -18 (-21.18 % of base) : 45747.dasm - Microsoft.AspNetCore.Mvc.Razor.Infrastructure.DefaultTagHelperActivator+Cache`1[System.__Canon]:Create(System.IServiceProvider):System.__Canon (Tier1)
         -13 (-19.40 % of base) : 126272.dasm - Fluid.Accessors.PropertyInfoAccessor+Invoker`2[System.__Canon,System.__Canon]:Invoke(System.Object):System.Object:this (FullOpts)
         -13 (-19.40 % of base) : 114665.dasm - Fluid.Accessors.PropertyInfoAccessor+Invoker`2[System.__Canon,System.__Canon]:Invoke(System.Object):System.Object:this (Tier1)
         -13 (-19.40 % of base) : 123749.dasm - YesSql.Serialization.PropertyInfoAccessor+Invoker`2[System.__Canon,System.__Canon]:Invoke(System.Object):System.Object:this (FullOpts)
         -50 (-19.16 % of base) : 69345.dasm - Microsoft.AspNetCore.Mvc.Filters.FilterCursor:GetNextFilter[System.__Canon,System.__Canon]():Microsoft.AspNetCore.Mvc.Filters.FilterCursorItem`2[System.__Canon,System.__Canon]:this (Tier1)
         -50 (-19.16 % of base) : 59393.dasm - Microsoft.AspNetCore.Mvc.Filters.FilterCursor:GetNextFilter[System.__Canon,System.__Canon]():Microsoft.AspNetCore.Mvc.Filters.FilterCursorItem`2[System.__Canon,System.__Canon]:this (Tier1)
         -50 (-19.16 % of base) : 67065.dasm - Microsoft.AspNetCore.Mvc.Filters.FilterCursor:GetNextFilter[System.__Canon,System.__Canon]():Microsoft.AspNetCore.Mvc.Filters.FilterCursorItem`2[System.__Canon,System.__Canon]:this (Tier1)


benchmarks.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7349829 (overridden on cmd)
Total bytes of diff: 7349676 (overridden on cmd)
Total bytes of delta: -153 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         224 : 6081.dasm (10.22 % of base)
         107 : 22343.dasm (46.93 % of base)
          65 : 14703.dasm (7.40 % of base)
          62 : 15104.dasm (6.53 % of base)
          61 : 6049.dasm (8.58 % of base)
          58 : 13044.dasm (10.66 % of base)
          58 : 26066.dasm (13.55 % of base)
          58 : 27180.dasm (12.61 % of base)
          54 : 26911.dasm (13.17 % of base)
          54 : 27889.dasm (9.85 % of base)
          54 : 14131.dasm (9.18 % of base)
          54 : 25735.dasm (13.99 % of base)
          54 : 26605.dasm (12.24 % of base)
          54 : 27496.dasm (11.42 % of base)
          51 : 5826.dasm (2.21 % of base)
          51 : 6051.dasm (2.46 % of base)
          51 : 6056.dasm (2.34 % of base)
          19 : 9684.dasm (2.62 % of base)
          11 : 4839.dasm (2.66 % of base)
          10 : 22046.dasm (0.51 % of base)

Top file improvements (bytes):
         -64 : 7386.dasm (-1.76 % of base)
         -57 : 13386.dasm (-2.02 % of base)
         -37 : 9017.dasm (-4.95 % of base)
         -36 : 19220.dasm (-5.74 % of base)
         -34 : 12563.dasm (-11.56 % of base)
         -34 : 20467.dasm (-14.11 % of base)
         -34 : 12457.dasm (-3.51 % of base)
         -29 : 17321.dasm (-3.35 % of base)
         -26 : 685.dasm (-10.44 % of base)
         -26 : 21666.dasm (-6.99 % of base)
         -26 : 22442.dasm (-14.77 % of base)
         -26 : 9046.dasm (-7.85 % of base)
         -25 : 18270.dasm (-27.78 % of base)
         -25 : 2269.dasm (-29.07 % of base)
         -25 : 3742.dasm (-12.44 % of base)
         -25 : 687.dasm (-33.78 % of base)
         -23 : 12409.dasm (-3.75 % of base)
         -23 : 7906.dasm (-23.47 % of base)
         -21 : 6061.dasm (-5.68 % of base)
         -21 : 9263.dasm (-2.24 % of base)

62 total files with Code Size differences (36 improved, 26 regressed), 4 unchanged.

Top method regressions (bytes):
         224 (10.22 % of base) : 6081.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
         107 (46.93 % of base) : 22343.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          65 (7.40 % of base) : 14703.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          62 (6.53 % of base) : 15104.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
          61 (8.58 % of base) : 6049.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          58 (13.55 % of base) : 26066.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          58 (12.61 % of base) : 27180.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          58 (10.66 % of base) : 13044.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
          54 (13.99 % of base) : 25735.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          54 (12.24 % of base) : 26605.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          54 (13.17 % of base) : 26911.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          54 (11.42 % of base) : 27496.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          54 (9.85 % of base) : 27889.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          54 (9.18 % of base) : 14131.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          51 (2.46 % of base) : 6051.dasm - System.Collections.Perf_DefaultFrozenDictionary:Setup():this (FullOpts)
          51 (2.21 % of base) : 5826.dasm - System.Collections.Perf_LengthBucketsFrozenDictionary:Setup():this (FullOpts)
          51 (2.34 % of base) : 6056.dasm - System.Collections.Perf_SingleCharFrozenDictionary:Setup():this (FullOpts)
          19 (2.62 % of base) : 9684.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):this (FullOpts)
          11 (2.66 % of base) : 4839.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (FullOpts)
          10 (0.51 % of base) : 22046.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (bytes):
         -64 (-1.76 % of base) : 7386.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -57 (-2.02 % of base) : 13386.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -37 (-4.95 % of base) : 9017.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -36 (-5.74 % of base) : 19220.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -34 (-14.11 % of base) : 20467.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -34 (-3.51 % of base) : 12457.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (FullOpts)
         -34 (-11.56 % of base) : 12563.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateElement(System.Xml.Serialization.XmlMapping):System.String:this (FullOpts)
         -29 (-3.35 % of base) : 17321.dasm - System.Xml.XmlNode:AppendChild(System.Xml.XmlNode):System.Xml.XmlNode:this (FullOpts)
         -26 (-14.77 % of base) : 22442.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -26 (-10.44 % of base) : 685.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (FullOpts)
         -26 (-6.99 % of base) : 21666.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (FullOpts)
         -26 (-7.85 % of base) : 9046.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -25 (-27.78 % of base) : 18270.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -25 (-33.78 % of base) : 687.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -25 (-29.07 % of base) : 2269.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -25 (-12.44 % of base) : 3742.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -23 (-23.47 % of base) : 7906.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -23 (-3.75 % of base) : 12409.dasm - System.Xml.Serialization.ContextAwareTables`1[System.__Canon]:GetOrCreateValue(System.Type,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
         -21 (-2.24 % of base) : 9263.dasm - Newtonsoft.Json.Utilities.ExpressionReflectionDelegateFactory:CreateSet[System.__Canon](System.Reflection.PropertyInfo):System.Action`2[System.__Canon,System.__Canon]:this (FullOpts)
         -21 (-5.68 % of base) : 6061.dasm - System.Collections.Sort`1[System.__Canon]:GenerateValues():System.__Canon[]:this (FullOpts)

Top method regressions (percentages):
         107 (46.93 % of base) : 22343.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Interop.StructureToPtr+NonBlittableStruct](long):Interop.StructureToPtr+NonBlittableStruct (FullOpts)
          54 (13.99 % of base) : 25735.dasm - System.Tests.Perf_Array:ArrayCreate1D():System.Array:this (FullOpts)
          58 (13.55 % of base) : 26066.dasm - System.Tests.Perf_Array:ArrayCreate2D():System.Array:this (FullOpts)
          54 (13.17 % of base) : 26911.dasm - System.Tests.Perf_Array:SetupArrayAssign1D():this (FullOpts)
          58 (12.61 % of base) : 27180.dasm - System.Tests.Perf_Array:SetupArrayAssign2D():this (FullOpts)
          54 (12.24 % of base) : 26605.dasm - System.Tests.Perf_Array:ArrayCreate3D():System.Array:this (FullOpts)
          54 (11.42 % of base) : 27496.dasm - System.Tests.Perf_Array:SetupArrayAssign3D():this (FullOpts)
          58 (10.66 % of base) : 13044.dasm - System.Tests.Perf_Array:SetupArrayRetrieve2D():this (FullOpts)
         224 (10.22 % of base) : 6081.dasm - System.Collections.Perf_SubstringFrozenDictionary:Setup():this (FullOpts)
          54 (9.85 % of base) : 27889.dasm - System.Tests.Perf_Array:SetupArrayRetrieve1D():this (FullOpts)
          54 (9.18 % of base) : 14131.dasm - System.Tests.Perf_Array:SetupArrayRetrieve3D():this (FullOpts)
          61 (8.58 % of base) : 6049.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          65 (7.40 % of base) : 14703.dasm - System.Tests.Perf_Array:SetupArrayCopy2D():this (FullOpts)
          62 (6.53 % of base) : 15104.dasm - System.Tests.Perf_Array:SetupArrayCopy3D():this (FullOpts)
           5 (5.00 % of base) : 12855.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (FullOpts)
           5 (5.00 % of base) : 27344.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (FullOpts)
           5 (5.00 % of base) : 14753.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
           5 (5.00 % of base) : 15037.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
           5 (5.00 % of base) : 16788.dasm - PerfLabTests.CastingPerf:IntObj():this (FullOpts)
           5 (5.00 % of base) : 26749.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (FullOpts)

Top method improvements (percentages):
         -25 (-33.78 % of base) : 687.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -13 (-32.50 % of base) : 2767.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-29.07 % of base) : 2269.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -25 (-27.78 % of base) : 18270.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -18 (-26.47 % of base) : 9785.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (FullOpts)
         -13 (-25.00 % of base) : 5972.dasm - System.Collections.TryGetValueFalse`2+<>c[System.__Canon,System.__Canon]:<Setup>b__10_1(System.__Canon):System.__Canon:this (FullOpts)
         -23 (-23.47 % of base) : 7906.dasm - Sigil.NonGeneric.Emit:CreateDelegate[System.__Canon](byref,int):System.__Canon:this (FullOpts)
         -13 (-19.12 % of base) : 7191.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -13 (-17.33 % of base) : 18932.dasm - System.Xml.Base64Decoder:SetNextOutputBuffer(System.Array,int,int):this (FullOpts)
         -15 (-16.48 % of base) : 19430.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -19 (-15.97 % of base) : 8995.dasm - System.Text.Json.Serialization.Converters.ListOfTConverter`2[System.__Canon,System.__Canon]:Add(byref,byref):this (FullOpts)
         -16 (-15.84 % of base) : 14165.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,int,System.__Canon]:Add(int,byref,System.Text.Json.JsonSerializerOptions,byref):this (FullOpts)
         -26 (-14.77 % of base) : 22442.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -13 (-14.29 % of base) : 16240.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:DataContractJsonSerializer_():System.__Canon:this (FullOpts)
         -13 (-14.29 % of base) : 6516.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:DataContractSerializer_():System.__Canon:this (FullOpts)
         -13 (-14.29 % of base) : 13803.dasm - MicroBenchmarks.Serializers.Xml_FromStream`1[System.__Canon]:XmlSerializer_():System.__Canon:this (FullOpts)
         -34 (-14.11 % of base) : 20467.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -16 (-13.11 % of base) : 14839.dasm - System.Xml.Linq.XDocument:GetFirstNode[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-12.87 % of base) : 8732.dasm - System.Diagnostics.Tracing.Statics:GetCustomAttribute[System.__Canon](System.Type):System.__Canon (FullOpts)
         -14 (-12.84 % of base) : 13486.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:Add(byref,byref):this (FullOpts)


benchmarks.run_pgo.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31419594 (overridden on cmd)
Total bytes of diff: 31433949 (overridden on cmd)
Total bytes of delta: 14355 (0.05 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         129 : 90485.dasm (22.01 % of base)
         129 : 102740.dasm (22.01 % of base)
         129 : 20702.dasm (22.01 % of base)
         129 : 24115.dasm (22.01 % of base)
         129 : 31002.dasm (22.01 % of base)
         129 : 49233.dasm (22.01 % of base)
         129 : 76187.dasm (22.01 % of base)
         129 : 56509.dasm (22.01 % of base)
         129 : 81574.dasm (22.01 % of base)
         121 : 21004.dasm (22.20 % of base)
         121 : 46613.dasm (22.20 % of base)
         121 : 78207.dasm (22.20 % of base)
         121 : 23390.dasm (22.20 % of base)
         121 : 71296.dasm (22.20 % of base)
         121 : 95069.dasm (22.20 % of base)
         121 : 76248.dasm (22.20 % of base)
         121 : 85719.dasm (22.20 % of base)
         121 : 44172.dasm (22.20 % of base)
         121 : 98263.dasm (22.20 % of base)
         121 : 98936.dasm (22.20 % of base)

Top file improvements (bytes):
         -85 : 68917.dasm (-2.37 % of base)
         -40 : 55542.dasm (-12.35 % of base)
         -37 : 30513.dasm (-10.28 % of base)
         -34 : 23649.dasm (-9.52 % of base)
         -34 : 35865.dasm (-9.52 % of base)
         -34 : 47387.dasm (-9.52 % of base)
         -34 : 82201.dasm (-9.52 % of base)
         -34 : 39289.dasm (-9.52 % of base)
         -34 : 89074.dasm (-9.52 % of base)
         -34 : 9205.dasm (-9.52 % of base)
         -33 : 91646.dasm (-10.22 % of base)
         -33 : 95276.dasm (-10.22 % of base)
         -33 : 29494.dasm (-10.22 % of base)
         -33 : 93456.dasm (-10.22 % of base)
         -33 : 98127.dasm (-10.22 % of base)
         -32 : 77765.dasm (-5.76 % of base)
         -32 : 67624.dasm (-5.18 % of base)
         -31 : 23803.dasm (-7.91 % of base)
         -31 : 56851.dasm (-7.91 % of base)
         -30 : 35841.dasm (-8.67 % of base)

67 total files with Code Size differences (30 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         129 (22.01 % of base) : 90485.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 102740.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 20702.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 24115.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 31002.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 49233.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 76187.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 56509.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 81574.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 21004.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 46613.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 78207.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 23390.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 71296.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 95069.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 76248.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 85719.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 44172.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 98263.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 98936.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)

Top method improvements (bytes):
         -85 (-2.37 % of base) : 68917.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
         -40 (-12.35 % of base) : 55542.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
         -37 (-10.28 % of base) : 30513.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 23649.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 35865.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 47387.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 39289.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 82201.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 89074.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 9205.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 91646.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 95276.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 29494.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 93456.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 98127.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -32 (-5.76 % of base) : 77765.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -32 (-5.18 % of base) : 67624.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         -31 (-7.91 % of base) : 23803.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -31 (-7.91 % of base) : 56851.dasm - System.Linq.EnumerableSorter`1[System.__Canon]:ComputeMap(System.__Canon[],int):int[]:this (Tier1)
         -30 (-8.67 % of base) : 35841.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)

Top method regressions (percentages):
         121 (22.20 % of base) : 21004.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 46613.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 78207.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 23390.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 71296.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 95069.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 76248.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 85719.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 44172.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 98263.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         121 (22.20 % of base) : 98936.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 90485.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 102740.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 20702.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 24115.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 31002.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 49233.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 76187.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 56509.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
         129 (22.01 % of base) : 81574.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)

Top method improvements (percentages):
         -25 (-33.78 % of base) : 8114.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -18 (-17.82 % of base) : 67693.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -40 (-12.35 % of base) : 55542.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:AsTask():System.Threading.Tasks.Task`1[ubyte]:this (Tier1)
         -13 (-10.83 % of base) : 73724.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -37 (-10.28 % of base) : 30513.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 91646.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 95276.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 29494.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 93456.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -33 (-10.22 % of base) : 98127.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 23649.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 35865.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 47387.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 39289.dasm - System.Threading.Tasks.ValueTask:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 82201.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 89074.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -34 (-9.52 % of base) : 9205.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
         -20 (-9.22 % of base) : 74637.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -20 (-8.97 % of base) : 63976.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -30 (-8.67 % of base) : 35841.dasm - System.Threading.Tasks.ValueTask:ThrowIfCompletedUnsuccessfully():this (Tier1)


benchmarks.run_tiered.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 12005303 (overridden on cmd)
Total bytes of diff: 12004897 (overridden on cmd)
Total bytes of delta: -406 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          11 : 50526.dasm (2.66 % of base)
           6 : 23645.dasm (4.65 % of base)
           6 : 28433.dasm (4.65 % of base)
           6 : 27573.dasm (4.65 % of base)
           6 : 31354.dasm (4.65 % of base)
           6 : 51709.dasm (4.65 % of base)
           6 : 52573.dasm (4.65 % of base)

Top file improvements (bytes):
         -34 : 44611.dasm (-14.11 % of base)
         -29 : 4591.dasm (-10.14 % of base)
         -26 : 42805.dasm (-6.99 % of base)
         -26 : 4595.dasm (-10.44 % of base)
         -26 : 44207.dasm (-14.77 % of base)
         -25 : 29308.dasm (-27.47 % of base)
         -25 : 45788.dasm (-12.44 % of base)
         -25 : 6452.dasm (-33.78 % of base)
         -25 : 20816.dasm (-29.07 % of base)
         -20 : 44545.dasm (-10.42 % of base)
         -19 : 44197.dasm (-5.18 % of base)
         -18 : 13236.dasm (-7.93 % of base)
         -18 : 42004.dasm (-17.82 % of base)
         -16 : 27156.dasm (-4.88 % of base)
         -16 : 45007.dasm (-10.67 % of base)
         -14 : 43017.dasm (-2.99 % of base)
         -13 : 2654.dasm (-3.67 % of base)
         -13 : 41906.dasm (-2.52 % of base)
         -13 : 51273.dasm (-9.35 % of base)
         -13 : 44850.dasm (-11.02 % of base)

30 total files with Code Size differences (23 improved, 7 regressed), 1 unchanged.

Top method regressions (bytes):
          11 (2.66 % of base) : 50526.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)
           6 (4.65 % of base) : 23645.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
           6 (4.65 % of base) : 52573.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
           6 (4.65 % of base) : 27573.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
           6 (4.65 % of base) : 28433.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
           6 (4.65 % of base) : 31354.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
           6 (4.65 % of base) : 51709.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)

Top method improvements (bytes):
         -34 (-14.11 % of base) : 44611.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -29 (-10.14 % of base) : 4591.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -26 (-14.77 % of base) : 44207.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -26 (-10.44 % of base) : 4595.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -26 (-6.99 % of base) : 42805.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -25 (-33.78 % of base) : 6452.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -25 (-27.47 % of base) : 29308.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -25 (-29.07 % of base) : 20816.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -25 (-12.44 % of base) : 45788.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -20 (-10.42 % of base) : 44545.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -19 (-5.18 % of base) : 44197.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -18 (-17.82 % of base) : 42004.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -18 (-7.93 % of base) : 13236.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -16 (-10.67 % of base) : 45007.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -16 (-4.88 % of base) : 27156.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier1)
         -14 (-2.99 % of base) : 43017.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
         -13 (-11.02 % of base) : 44850.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -13 (-2.52 % of base) : 41906.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -13 (-8.39 % of base) : 36418.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -13 (-10.16 % of base) : 42297.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)

Top method regressions (percentages):
           6 (4.65 % of base) : 23645.dasm - PerfLabTests.CastingPerf:FooObjIsDescendant():this (Tier1-OSR)
           6 (4.65 % of base) : 52573.dasm - PerfLabTests.CastingPerf:FooObjIsFoo2():this (Tier1-OSR)
           6 (4.65 % of base) : 27573.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (Tier1-OSR)
           6 (4.65 % of base) : 28433.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (Tier1-OSR)
           6 (4.65 % of base) : 31354.dasm - PerfLabTests.CastingPerf:IntObj():this (Tier1-OSR)
           6 (4.65 % of base) : 51709.dasm - PerfLabTests.CastingPerf:ObjObjIsFoo():this (Tier1-OSR)
          11 (2.66 % of base) : 50526.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[System.__Canon]:<.cctor>b__4_0(System.Object):this (Tier1)

Top method improvements (percentages):
         -25 (-33.78 % of base) : 6452.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -25 (-29.07 % of base) : 20816.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (Tier1)
         -25 (-27.47 % of base) : 29308.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -18 (-17.82 % of base) : 42004.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
         -26 (-14.77 % of base) : 44207.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -34 (-14.11 % of base) : 44611.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -25 (-12.44 % of base) : 45788.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (Tier1)
         -13 (-11.02 % of base) : 44850.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetPublicSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbol):System.__Canon (Tier1)
         -16 (-10.67 % of base) : 45007.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -26 (-10.44 % of base) : 4595.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
         -20 (-10.42 % of base) : 44545.dasm - Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -13 (-10.16 % of base) : 42297.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedAtZero[System.__Canon](byref):System.__Canon:this (Tier1)
         -29 (-10.14 % of base) : 4591.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (Tier1)
         -13 (-9.35 % of base) : 51273.dasm - System.Text.Json.Reflection.ReflectionExtensions:GetUniqueCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -13 (-8.50 % of base) : 43427.dasm - PerfLabTests.CastingPerf:FooObjCastIfIsa():this (Tier1-OSR)
         -13 (-8.39 % of base) : 36418.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRed[System.__Canon](byref,int):System.__Canon:this (Tier1)
         -18 (-7.93 % of base) : 13236.dasm - ProtoBuf.ProtoReader+State:DeserializeRootImpl[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -26 (-6.99 % of base) : 42805.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.__Canon[],int):this (Tier1)
         -19 (-5.18 % of base) : 44197.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -16 (-4.88 % of base) : 27156.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:ComputeKeys(System.__Canon[],int):this (Tier1)

30 total methods with Code Size differences (23 improved, 7 regressed).


coreclr_tests.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 370205685 (overridden on cmd)
Total bytes of diff: 370360724 (overridden on cmd)
Total bytes of delta: 155039 (0.04 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
        6873 : 555491.dasm (40.68 % of base)
        6638 : 554393.dasm (38.33 % of base)
        6635 : 555460.dasm (37.62 % of base)
        6627 : 555090.dasm (38.63 % of base)
        6583 : 556116.dasm (37.29 % of base)
        6519 : 554876.dasm (32.47 % of base)
        6518 : 555566.dasm (35.98 % of base)
        6482 : 554262.dasm (33.83 % of base)
        6479 : 554186.dasm (36.86 % of base)
        6395 : 555522.dasm (35.56 % of base)
        6387 : 554426.dasm (35.04 % of base)
        6331 : 555948.dasm (32.00 % of base)
        6323 : 556279.dasm (33.55 % of base)
        6318 : 555058.dasm (34.78 % of base)
        6255 : 554803.dasm (33.16 % of base)
        6252 : 554361.dasm (34.06 % of base)
        6218 : 556188.dasm (31.66 % of base)
        6185 : 555720.dasm (35.01 % of base)
        6179 : 555758.dasm (32.72 % of base)
        6163 : 556311.dasm (33.56 % of base)

Top file improvements (bytes):
         -92 : 372286.dasm (-1.34 % of base)
         -92 : 370150.dasm (-1.34 % of base)
         -57 : 198878.dasm (-1.78 % of base)
         -44 : 505715.dasm (-20.95 % of base)
         -44 : 232865.dasm (-2.42 % of base)
         -42 : 375541.dasm (-4.07 % of base)
         -40 : 371300.dasm (-11.30 % of base)
         -39 : 369900.dasm (-2.00 % of base)
         -38 : 372976.dasm (-1.04 % of base)
         -38 : 373030.dasm (-1.04 % of base)
         -38 : 373190.dasm (-1.04 % of base)
         -37 : 368314.dasm (-3.73 % of base)
         -37 : 371779.dasm (-3.73 % of base)
         -37 : 480139.dasm (-4.65 % of base)
         -36 : 475493.dasm (-5.74 % of base)
         -35 : 273150.dasm (-0.95 % of base)
         -35 : 371423.dasm (-2.29 % of base)
         -34 : 105918.dasm (-1.66 % of base)
         -34 : 273186.dasm (-0.92 % of base)
         -34 : 476934.dasm (-14.11 % of base)

75 total files with Code Size differences (49 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
        6873 (40.68 % of base) : 555491.dasm - Generated938:CalliTest() (FullOpts)
        6638 (38.33 % of base) : 554393.dasm - Generated906:CalliTest() (FullOpts)
        6635 (37.62 % of base) : 555460.dasm - Generated937:CalliTest() (FullOpts)
        6627 (38.63 % of base) : 555090.dasm - Generated926:CalliTest() (FullOpts)
        6583 (37.29 % of base) : 556116.dasm - Generated957:CalliTest() (FullOpts)
        6519 (32.47 % of base) : 554876.dasm - Generated920:CalliTest() (FullOpts)
        6518 (35.98 % of base) : 555566.dasm - Generated940:CalliTest() (FullOpts)
        6482 (33.83 % of base) : 554262.dasm - Generated902:CalliTest() (FullOpts)
        6479 (36.86 % of base) : 554186.dasm - Generated900:CalliTest() (FullOpts)
        6395 (35.56 % of base) : 555522.dasm - Generated939:CalliTest() (FullOpts)
        6387 (35.04 % of base) : 554426.dasm - Generated907:CalliTest() (FullOpts)
        6331 (32.00 % of base) : 555948.dasm - Generated952:CalliTest() (FullOpts)
        6323 (33.55 % of base) : 556279.dasm - Generated962:CalliTest() (FullOpts)
        6318 (34.78 % of base) : 555058.dasm - Generated925:CalliTest() (FullOpts)
        6255 (33.16 % of base) : 554803.dasm - Generated918:CalliTest() (FullOpts)
        6252 (34.06 % of base) : 554361.dasm - Generated905:CalliTest() (FullOpts)
        6218 (31.66 % of base) : 556188.dasm - Generated959:CalliTest() (FullOpts)
        6185 (35.01 % of base) : 555720.dasm - Generated945:CalliTest() (FullOpts)
        6179 (32.72 % of base) : 555758.dasm - Generated946:CalliTest() (FullOpts)
        6163 (33.56 % of base) : 556311.dasm - Generated963:CalliTest() (FullOpts)

Top method improvements (bytes):
         -92 (-1.34 % of base) : 372286.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
         -92 (-1.34 % of base) : 370150.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier1-OSR)
         -57 (-1.78 % of base) : 198878.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -44 (-20.95 % of base) : 505715.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -44 (-2.42 % of base) : 232865.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Tier1)
         -42 (-4.07 % of base) : 375541.dasm - InterlockedCompareExchange1:PosTest2[System.__Canon]():ubyte:this (FullOpts)
         -40 (-11.30 % of base) : 371300.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ManifestMetadataTableNode:EnsureModuleIndexable(Internal.TypeSystem.ModuleDesc):this (Tier1)
         -39 (-2.00 % of base) : 369900.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.SignatureBuilder:EmitInstantiatedTypeSignature(Internal.TypeSystem.InstantiatedType,ILCompiler.DependencyAnalysis.ReadyToRun.SignatureContext):this (Tier1)
         -38 (-1.04 % of base) : 372976.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -38 (-1.04 % of base) : 373030.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -38 (-1.04 % of base) : 373190.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -37 (-3.73 % of base) : 368314.dasm - Internal.TypeSystem.DebugNameFormatter:AssemblyQualify(System.Text.StringBuilder,Internal.TypeSystem.DefType,int) (Tier1)
         -37 (-3.73 % of base) : 371779.dasm - Internal.TypeSystem.DebugNameFormatter:AssemblyQualify(System.Text.StringBuilder,Internal.TypeSystem.DefType,int) (Tier1)
         -37 (-4.65 % of base) : 480139.dasm - Newtonsoft.Json.Utilities.ReflectionUtils:GetAttributes(System.Object,System.Type,ubyte):System.Attribute[] (FullOpts)
         -36 (-5.74 % of base) : 475493.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -35 (-2.29 % of base) : 371423.dasm - ILCompiler.LazyGenericsSupport+GraphBuilder:<.ctor>g__WalkFormals|0_0(Internal.TypeSystem.InstantiatedType,ubyte):this (Tier1)
         -35 (-0.95 % of base) : 273150.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -34 (-14.11 % of base) : 476934.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -34 (-1.66 % of base) : 105918.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
         -34 (-0.92 % of base) : 273186.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

Top method regressions (percentages):
          47 (335.71 % of base) : 473853.dasm - T:TestEntryPoint():int (FullOpts)
         107 (46.93 % of base) : 462507.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ComWrappersTests.Common.VtblPtr](long):ComWrappersTests.Common.VtblPtr (FullOpts)
         290 (43.48 % of base) : 336081.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
        6873 (40.68 % of base) : 555491.dasm - Generated938:CalliTest() (FullOpts)
        6627 (38.63 % of base) : 555090.dasm - Generated926:CalliTest() (FullOpts)
        6638 (38.33 % of base) : 554393.dasm - Generated906:CalliTest() (FullOpts)
        6635 (37.62 % of base) : 555460.dasm - Generated937:CalliTest() (FullOpts)
        6583 (37.29 % of base) : 556116.dasm - Generated957:CalliTest() (FullOpts)
        6479 (36.86 % of base) : 554186.dasm - Generated900:CalliTest() (FullOpts)
        6518 (35.98 % of base) : 555566.dasm - Generated940:CalliTest() (FullOpts)
        6395 (35.56 % of base) : 555522.dasm - Generated939:CalliTest() (FullOpts)
        6387 (35.04 % of base) : 554426.dasm - Generated907:CalliTest() (FullOpts)
        6185 (35.01 % of base) : 555720.dasm - Generated945:CalliTest() (FullOpts)
        6318 (34.78 % of base) : 555058.dasm - Generated925:CalliTest() (FullOpts)
        6252 (34.06 % of base) : 554361.dasm - Generated905:CalliTest() (FullOpts)
        6482 (33.83 % of base) : 554262.dasm - Generated902:CalliTest() (FullOpts)
        6163 (33.56 % of base) : 556311.dasm - Generated963:CalliTest() (FullOpts)
        6323 (33.55 % of base) : 556279.dasm - Generated962:CalliTest() (FullOpts)
        6108 (33.20 % of base) : 554295.dasm - Generated903:CalliTest() (FullOpts)
        6255 (33.16 % of base) : 554803.dasm - Generated918:CalliTest() (FullOpts)

Top method improvements (percentages):
         -13 (-34.21 % of base) : 234145.dasm - CastExpansionTests:CastToArray(System.Object):System.Object:this (Tier1)
         -25 (-33.78 % of base) : 1720.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -22 (-32.35 % of base) : 570145.dasm - Program+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -13 (-31.71 % of base) : 234029.dasm - Program:CastToArray(System.Object):int[] (Tier1)
         -13 (-30.23 % of base) : 234140.dasm - CastExpansionTests:CastToGeneric[System.__Canon](System.Object):System.Object:this (Tier1)
         -25 (-26.04 % of base) : 451717.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -25 (-26.04 % of base) : 278523.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -28 (-24.78 % of base) : 512149.dasm - My:foo[System.__Canon](ubyte,System.Object):System.Object (FullOpts)
         -25 (-23.58 % of base) : 462518.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (FullOpts)
         -25 (-23.58 % of base) : 234134.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
         -44 (-20.95 % of base) : 505715.dasm - JitTest_castclass_ldlen_array_il.Test:Main():int (FullOpts)
         -17 (-20.24 % of base) : 558580.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (FullOpts)
         -13 (-19.12 % of base) : 463263.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -19 (-17.43 % of base) : 367558.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -19 (-17.43 % of base) : 371328.dasm - Internal.TypeSystem.MetadataTypeSystemContext:ComputeHasStaticConstructor(Internal.TypeSystem.TypeDesc):ubyte:this (Tier1)
         -13 (-17.33 % of base) : 517602.dasm - Program+<>c__5`1[System.__Canon]:<GetCustomAttributes>b__5_0(Program+CustomAttributeData):System.__Canon:this (FullOpts)
         -15 (-16.48 % of base) : 475703.dasm - Microsoft.CodeAnalysis.SyntaxNode:CloneNodeAsRoot[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.SyntaxTree):System.__Canon (FullOpts)
         -20 (-15.87 % of base) : 241332.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (Tier1)
         -26 (-14.77 % of base) : 478829.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -21 (-14.58 % of base) : 467983.dasm - MyCounter`1[System.__Canon]:Decrement[System.__Canon]():this (FullOpts)


libraries.crossgen2.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39483308 (overridden on cmd)
Total bytes of diff: 39452575 (overridden on cmd)
Total bytes of delta: -30733 (-0.08 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           1 : 130336.dasm (0.29 % of base)
           1 : 243214.dasm (0.21 % of base)

Top file improvements (bytes):
        -208 : 243468.dasm (-14.04 % of base)
        -201 : 142022.dasm (-4.21 % of base)
        -195 : 243467.dasm (-13.97 % of base)
        -191 : 145853.dasm (-29.48 % of base)
        -191 : 145857.dasm (-28.51 % of base)
        -182 : 243465.dasm (-13.89 % of base)
        -169 : 243463.dasm (-13.81 % of base)
        -158 : 12504.dasm (-20.73 % of base)
        -158 : 12505.dasm (-20.23 % of base)
        -156 : 243461.dasm (-13.71 % of base)
        -143 : 243459.dasm (-13.59 % of base)
        -143 : 38282.dasm (-17.52 % of base)
        -140 : 123258.dasm (-11.60 % of base)
        -130 : 243457.dasm (-13.46 % of base)
        -122 : 217902.dasm (-10.06 % of base)
        -121 : 145855.dasm (-23.68 % of base)
        -117 : 243455.dasm (-13.30 % of base)
        -114 : 142081.dasm (-5.27 % of base)
        -114 : 145848.dasm (-23.65 % of base)
        -113 : 8949.dasm (-47.08 % of base)

83 total files with Code Size differences (81 improved, 2 regressed), 0 unchanged.

Top method regressions (bytes):
           1 (0.29 % of base) : 130336.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
           1 (0.21 % of base) : 243214.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)

Top method improvements (bytes):
        -208 (-14.04 % of base) : 243468.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -201 (-4.21 % of base) : 142022.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
        -195 (-13.97 % of base) : 243467.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -191 (-29.48 % of base) : 145853.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -191 (-28.51 % of base) : 145857.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -182 (-13.89 % of base) : 243465.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -169 (-13.81 % of base) : 243463.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -158 (-20.73 % of base) : 12504.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -158 (-20.23 % of base) : 12505.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
        -156 (-13.71 % of base) : 243461.dasm - CommandLine.ParserResultExtensions:MapResult[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](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -143 (-13.59 % of base) : 243459.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -143 (-17.52 % of base) : 38282.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -140 (-11.60 % of base) : 123258.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -130 (-13.46 % of base) : 243457.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -122 (-10.06 % of base) : 217902.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)
        -121 (-23.68 % of base) : 145855.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -117 (-13.30 % of base) : 243455.dasm - CommandLine.ParserResultExtensions:MapResult[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon](CommandLine.ParserResult`1[System.Object],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.Collections.Generic.IEnumerable`1[CommandLine.Error],System.__Canon]):System.__Canon (FullOpts)
        -114 (-23.65 % of base) : 145848.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
        -114 (-5.27 % of base) : 142081.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
        -113 (-47.08 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)

Top method regressions (percentages):
           1 (0.29 % of base) : 130336.dasm - Microsoft.Internal.Collections.WeakReferenceCollection`1[System.__Canon]:AliveItemsToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
           1 (0.21 % of base) : 243214.dasm - RailwaySharp.ErrorHandling.Result`2[System.__Canon,System.__Canon]:ToString():System.String:this (FullOpts)

Top method improvements (percentages):
        -113 (-47.08 % of base) : 8949.dasm - Microsoft.FSharp.Core.FSharpRef`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -30 (-41.67 % of base) : 242959.dasm - CSharpx.Either+<>c__DisplayClass13_0`1[System.__Canon]:<Cast>b__0():System.__Canon:this (FullOpts)
        -102 (-39.69 % of base) : 8964.dasm - Microsoft.FSharp.Core.FSharpOption`1[System.__Canon]:CompareTo(System.Object,System.Collections.IComparer):int:this (FullOpts)
         -25 (-39.68 % of base) : 12950.dasm - Microsoft.FSharp.Core.LanguagePrimitives:EnumOfValue[System.__Canon,System.__Canon](System.__Canon):System.__Canon (FullOpts)
         -25 (-39.68 % of base) : 12473.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-39.68 % of base) : 142714.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-37.88 % of base) : 123322.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:GetSymbolInternal[System.__Canon](Microsoft.CodeAnalysis.ISymbol):System.__Canon:this (FullOpts)
         -25 (-37.88 % of base) : 189600.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -25 (-37.88 % of base) : 164784.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Single():System.__Canon:this (FullOpts)
         -25 (-37.88 % of base) : 224823.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         -23 (-35.94 % of base) : 243399.dasm - CSharpx.Either:GetLeft[System.__Canon,System.__Canon](CSharpx.Either`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -25 (-35.21 % of base) : 221100.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -25 (-35.21 % of base) : 214561.dasm - System.Linq.ParallelQuery`1+<>c__1`1[System.__Canon,System.__Canon]:<Cast>b__1_0(System.__Canon):System.__Canon:this (FullOpts)
         -23 (-34.33 % of base) : 142736.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.__Canon,System.__Canon,System.__Canon]:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -51 (-32.48 % of base) : 142094.dasm - System.Text.Json.Serialization.Converters.ImmutableDictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -51 (-32.48 % of base) : 142064.dasm - System.Text.Json.Serialization.Converters.ImmutableEnumerableOfTConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -35 (-31.53 % of base) : 142073.dasm - System.Text.Json.Serialization.Converters.FSharpListConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -35 (-31.53 % of base) : 142098.dasm - System.Text.Json.Serialization.Converters.FSharpMapConverter`3[System.__Canon,System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -35 (-31.53 % of base) : 142074.dasm - System.Text.Json.Serialization.Converters.FSharpSetConverter`2[System.__Canon,System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts)
         -25 (-31.25 % of base) : 228799.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:get_Items():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)


libraries.pmi.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45446626 (overridden on cmd)
Total bytes of diff: 45435899 (overridden on cmd)
Total bytes of delta: -10727 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         171 : 192254.dasm (4.77 % of base)
         111 : 274647.dasm (23.72 % of base)
         107 : 225354.dasm (8.36 % of base)
         104 : 32801.dasm (41.27 % of base)
         104 : 32803.dasm (40.78 % of base)
         104 : 32804.dasm (37.01 % of base)
         100 : 32800.dasm (40.00 % of base)
         100 : 32802.dasm (40.32 % of base)
         100 : 32805.dasm (40.00 % of base)
          65 : 121441.dasm (3.20 % of base)
          51 : 178876.dasm (2.38 % of base)
          51 : 145096.dasm (2.38 % of base)
          44 : 214066.dasm (4.65 % of base)
          38 : 294269.dasm (15.38 % of base)
          36 : 293985.dasm (8.74 % of base)
          34 : 294017.dasm (6.23 % of base)
          34 : 294279.dasm (9.86 % of base)
          34 : 294304.dasm (26.15 % of base)
          34 : 114602.dasm (1.93 % of base)
          31 : 192244.dasm (3.20 % of base)

Top file improvements (bytes):
        -425 : 257113.dasm (-23.57 % of base)
        -284 : 103171.dasm (-9.70 % of base)
        -238 : 86918.dasm (-7.79 % of base)
        -235 : 147371.dasm (-8.47 % of base)
        -235 : 181123.dasm (-8.47 % of base)
        -148 : 297593.dasm (-25.83 % of base)
        -143 : 99497.dasm (-12.79 % of base)
        -139 : 57034.dasm (-9.97 % of base)
        -126 : 220082.dasm (-38.65 % of base)
        -116 : 219437.dasm (-8.06 % of base)
        -112 : 220084.dasm (-6.53 % of base)
         -84 : 15487.dasm (-13.15 % of base)
         -84 : 15494.dasm (-12.75 % of base)
         -77 : 152861.dasm (-1.74 % of base)
         -76 : 17264.dasm (-17.43 % of base)
         -74 : 212417.dasm (-18.73 % of base)
         -64 : 234212.dasm (-1.71 % of base)
         -57 : 33052.dasm (-7.77 % of base)
         -54 : 15651.dasm (-11.02 % of base)
         -54 : 15660.dasm (-10.89 % of base)

80 total files with Code Size differences (52 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
         171 (4.77 % of base) : 192254.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
         111 (23.72 % of base) : 274647.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
         107 (8.36 % of base) : 225354.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
         104 (40.78 % of base) : 32803.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         104 (41.27 % of base) : 32801.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         104 (37.01 % of base) : 32804.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
         100 (40.32 % of base) : 32802.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         100 (40.00 % of base) : 32805.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         100 (40.00 % of base) : 32800.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
          65 (3.20 % of base) : 121441.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:XmlThreadSafetyElement(ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax (FullOpts)
          51 (2.38 % of base) : 178876.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          51 (2.38 % of base) : 145096.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:GetMethodsByName():System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CodeGen.CompilationTestData+MethodData]:this (FullOpts)
          44 (4.65 % of base) : 214066.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
          38 (15.38 % of base) : 294269.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          36 (8.74 % of base) : 293985.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          34 (1.93 % of base) : 114602.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlStringUnQuoted():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          34 (6.23 % of base) : 294017.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
          34 (9.86 % of base) : 294279.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          34 (26.15 % of base) : 294304.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
          31 (3.20 % of base) : 192244.dasm - System.Linq.Expressions.Expression:NewArrayInit(System.Type,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.NewArrayExpression (FullOpts)

Top method improvements (bytes):
        -425 (-23.57 % of base) : 257113.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -284 (-9.70 % of base) : 103171.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:AppendUseSiteInfo(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -238 (-7.79 % of base) : 86918.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -235 (-8.47 % of base) : 181123.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -235 (-8.47 % of base) : 147371.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__42:MoveNext():this (FullOpts)
        -148 (-25.83 % of base) : 297593.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
        -143 (-12.79 % of base) : 99497.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -139 (-9.97 % of base) : 57034.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
        -126 (-38.65 % of base) : 220082.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
        -116 (-8.06 % of base) : 219437.dasm - System.Xml.Serialization.SchemaObjectWriter:Write54_XmlSchemaSequence(System.Xml.Schema.XmlSchemaSequence):this (FullOpts)
        -112 (-6.53 % of base) : 220084.dasm - System.Xml.Serialization.XmlSchemas:GetSchemaItem(System.Xml.Schema.XmlSchemaObject,System.String,System.String):System.String (FullOpts)
         -84 (-13.15 % of base) : 15487.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2520[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
         -84 (-12.75 % of base) : 15494.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2543-1[System.__Canon](System.Type,Microsoft.FSharp.Core.Unit):System.__Canon (FullOpts)
         -77 (-1.74 % of base) : 152861.dasm - Newtonsoft.Json.JsonTextReader+<DoReadAsBytesAsync>d__42:MoveNext():this (FullOpts)
         -76 (-17.43 % of base) : 17264.dasm - System.Data.XSDSchema:GetParticleItems(System.Xml.Schema.XmlSchemaParticle):System.Xml.Schema.XmlSchemaObjectCollection (FullOpts)
         -74 (-18.73 % of base) : 212417.dasm - System.Xml.Schema.Compiler:CanonicalizeParticle(System.Xml.Schema.XmlSchemaParticle,ubyte):System.Xml.Schema.XmlSchemaParticle:this (FullOpts)
         -64 (-1.71 % of base) : 234212.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -57 (-7.77 % of base) : 33052.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:As[System.__Canon]():System.__Canon:this (FullOpts)
         -54 (-10.89 % of base) : 15660.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericOneDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)
         -54 (-11.02 % of base) : 15651.dasm - Microsoft.FSharp.Core.LanguagePrimitives+GenericZeroDynamicImplTable`1[System.__Canon]:.cctor() (FullOpts)

Top method regressions (percentages):
         104 (41.27 % of base) : 32801.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
         104 (40.78 % of base) : 32803.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         100 (40.32 % of base) : 32802.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
         100 (40.00 % of base) : 32805.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         100 (40.00 % of base) : 32800.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
         104 (37.01 % of base) : 32804.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
          34 (26.15 % of base) : 294304.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         111 (23.72 % of base) : 274647.dasm - System.Formats.Asn1.AsnWriter:WriteNamedBitList(System.Enum,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
          38 (15.38 % of base) : 294269.dasm - System.Reflection.Emit.TypeBuilderImpl:CreateTypeInfoCore():System.Reflection.TypeInfo:this (FullOpts)
          34 (9.86 % of base) : 294279.dasm - System.Reflection.Emit.TypeBuilderImpl:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (FullOpts)
          36 (8.74 % of base) : 293985.dasm - System.Reflection.Emit.EnumBuilderImpl:DefineLiteralCore(System.String,System.Object):System.Reflection.Emit.FieldBuilder:this (FullOpts)
         107 (8.36 % of base) : 225354.dasm - System.Security.Cryptography.Pkcs.Asn1.PkiStatusInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this (FullOpts)
          30 (6.48 % of base) : 306096.dasm - Xunit.Sdk.CollectionException:FormatInnerException(System.Exception):System.String (FullOpts)
          34 (6.23 % of base) : 294017.dasm - System.Reflection.Emit.EnumBuilderImpl:.ctor(System.String,System.Type,int,System.Reflection.Emit.ModuleBuilderImpl):this (FullOpts)
           5 (4.95 % of base) : 188408.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
           5 (4.95 % of base) : 270252.dasm - System.Data.Common.DbConnectionPoolKey:Equals(System.Object):ubyte:this (FullOpts)
         171 (4.77 % of base) : 192254.dasm - System.Linq.Expressions.Expression:ValidateNewArgs(System.Reflection.ConstructorInfo,byref,byref) (FullOpts)
          11 (4.68 % of base) : 259763.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:AddRange[System.__Canon](System.ReadOnlySpan`1[System.__Canon]):this (FullOpts)
          44 (4.65 % of base) : 214066.dasm - System.Xml.Schema.XmlSchemaValidator:GetExpectedAttributes():System.Xml.Schema.XmlSchemaAttribute[]:this (FullOpts)
          16 (3.51 % of base) : 192239.dasm - System.Linq.Expressions.Expression:IsCompatible(System.Reflection.MethodBase,System.Linq.Expressions.Expression[]):ubyte (FullOpts)

Top method improvements (percentages):
        -126 (-38.65 % of base) : 220082.dasm - System.Xml.Serialization.XmlSchemas:ItemName(System.Xml.Schema.XmlSchemaObject):System.String (FullOpts)
         -13 (-32.50 % of base) : 15207.dasm - Microsoft.FSharp.Core.Operators+Unchecked:Unbox[System.__Canon](System.Object):System.__Canon (FullOpts)
         -13 (-32.50 % of base) : 231587.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -20 (-31.25 % of base) : 165996.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -20 (-31.25 % of base) : 132117.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -25 (-30.49 % of base) : 241917.dasm - CommandLine.Infrastructure.ReflectionHelper:CreateDefaultImmutableInstance[System.__Canon](System.Type[]):System.__Canon (FullOpts)
         -25 (-30.49 % of base) : 152265.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
         -45 (-29.22 % of base) : 220003.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -25 (-29.07 % of base) : 268196.dasm - System.Composition.Hosting.Util.MethodInfoExtensions:CreateStaticDelegate[System.__Canon](System.Reflection.MethodInfo):System.__Canon (FullOpts)
         -18 (-28.57 % of base) : 286923.dasm - System.Net.Dns:GetHostAddressesCore(System.Net.IPAddress,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
         -18 (-28.57 % of base) : 286920.dasm - System.Net.Dns:GetHostAddressesCore(System.String,int,System.Nullable`1[long]):System.Net.IPAddress[] (FullOpts)
         -25 (-28.41 % of base) : 58061.dasm - Microsoft.VisualBasic.Conversion:CTypeDynamic[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-27.78 % of base) : 245567.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (FullOpts)
         -25 (-27.78 % of base) : 149504.dasm - Newtonsoft.Json.JsonConvert:DeserializeObject[System.__Canon](System.String,Newtonsoft.Json.JsonSerializerSettings):System.__Canon (FullOpts)
         -25 (-27.78 % of base) : 152273.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon](Newtonsoft.Json.JsonSerializer):System.__Canon:this (FullOpts)
         -18 (-27.27 % of base) : 21892.dasm - System.Data.Common.DbDataReader:GetFieldValue[System.__Canon](int):System.__Canon:this (FullOpts)
         -20 (-25.97 % of base) : 305897.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -20 (-25.97 % of base) : 305911.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
        -148 (-25.83 % of base) : 297593.dasm - System.Runtime.Serialization.Formatters.Binary.PrimitiveArray:.ctor(int,System.Array):this (FullOpts)
         -25 (-25.77 % of base) : 149762.dasm - Newtonsoft.Json.JsonSerializer:Deserialize[System.__Canon](Newtonsoft.Json.JsonReader):System.__Canon:this (FullOpts)


libraries_tests.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 249593901 (overridden on cmd)
Total bytes of diff: 249633153 (overridden on cmd)
Total bytes of delta: 39252 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         784 : 202839.dasm (5.72 % of base)
         780 : 387325.dasm (5.73 % of base)
         633 : 479068.dasm (4.22 % of base)
         570 : 414771.dasm (17.53 % of base)
         496 : 671847.dasm (3.82 % of base)
         476 : 261488.dasm (3.66 % of base)
         462 : 413784.dasm (22.46 % of base)
         459 : 189326.dasm (17.80 % of base)
         453 : 189441.dasm (15.02 % of base)
         364 : 260978.dasm (2.42 % of base)
         364 : 315342.dasm (2.42 % of base)
         364 : 457953.dasm (2.42 % of base)
         364 : 665544.dasm (2.42 % of base)
         364 : 247815.dasm (2.42 % of base)
         364 : 261973.dasm (2.42 % of base)
         347 : 381212.dasm (2.24 % of base)
         347 : 680376.dasm (2.24 % of base)
         347 : 391848.dasm (2.24 % of base)
         347 : 410172.dasm (2.24 % of base)
         347 : 540900.dasm (2.24 % of base)

Top file improvements (bytes):
        -377 : 211517.dasm (-2.54 % of base)
        -170 : 174965.dasm (-3.23 % of base)
        -140 : 218518.dasm (-3.61 % of base)
        -126 : 262088.dasm (-3.82 % of base)
        -118 : 354547.dasm (-4.30 % of base)
        -117 : 261292.dasm (-3.69 % of base)
        -107 : 603966.dasm (-1.70 % of base)
        -106 : 522564.dasm (-9.93 % of base)
        -105 : 673475.dasm (-3.19 % of base)
        -102 : 375407.dasm (-3.18 % of base)
        -102 : 676332.dasm (-3.35 % of base)
        -102 : 678606.dasm (-3.18 % of base)
        -102 : 253938.dasm (-3.10 % of base)
        -100 : 116404.dasm (-3.15 % of base)
         -99 : 122091.dasm (-3.10 % of base)
         -99 : 669681.dasm (-3.09 % of base)
         -99 : 272845.dasm (-3.17 % of base)
         -99 : 671854.dasm (-3.09 % of base)
         -99 : 656014.dasm (-3.10 % of base)
         -99 : 257462.dasm (-3.09 % of base)

98 total files with Code Size differences (46 improved, 52 regressed), 20 unchanged.

Top method regressions (bytes):
         784 (5.72 % of base) : 202839.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         780 (5.73 % of base) : 387325.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         633 (4.22 % of base) : 479068.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         570 (17.53 % of base) : 414771.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (Tier0-FullOpts)
         496 (3.82 % of base) : 671847.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         476 (3.66 % of base) : 261488.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         462 (22.46 % of base) : 413784.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
         459 (17.80 % of base) : 189326.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (Tier0-FullOpts)
         453 (15.02 % of base) : 189441.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (Tier0-FullOpts)
         364 (2.42 % of base) : 260978.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         364 (2.42 % of base) : 315342.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         364 (2.42 % of base) : 457953.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         364 (2.42 % of base) : 665544.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         364 (2.42 % of base) : 247815.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         364 (2.42 % of base) : 261973.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         347 (2.24 % of base) : 381212.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         347 (2.24 % of base) : 680376.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         347 (2.24 % of base) : 391848.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         347 (2.24 % of base) : 410172.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         347 (2.24 % of base) : 540900.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
        -377 (-2.54 % of base) : 211517.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -170 (-3.23 % of base) : 174965.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (Tier1)
        -140 (-3.61 % of base) : 218518.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
        -126 (-3.82 % of base) : 262088.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -118 (-4.30 % of base) : 354547.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
        -117 (-3.69 % of base) : 261292.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -107 (-1.70 % of base) : 603966.dasm - System.Text.Json.Serialization.JsonDictionaryConverter`3[System.Text.Json.Serialization.Tests.StructWrapperForIDictionary,System.__Canon,System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
        -106 (-9.93 % of base) : 522564.dasm - System.Security.Cryptography.X509Certificates.CertificateExtensionsCommon:GetPrivateKey[System.__Canon](System.Security.Cryptography.X509Certificates.X509Certificate2,System.Predicate`1[System.Security.Cryptography.X509Certificates.X509Certificate2]):System.__Canon (Tier1)
        -105 (-3.19 % of base) : 673475.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -102 (-3.18 % of base) : 375407.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -102 (-3.35 % of base) : 676332.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -102 (-3.18 % of base) : 678606.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -102 (-3.10 % of base) : 253938.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
        -100 (-3.15 % of base) : 116404.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.10 % of base) : 122091.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.09 % of base) : 669681.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.17 % of base) : 272845.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.09 % of base) : 671854.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.10 % of base) : 656014.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
         -99 (-3.09 % of base) : 257462.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

Top method regressions (percentages):
         287 (43.22 % of base) : 505459.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
         277 (41.72 % of base) : 416365.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineFieldCore(System.String,System.Type,System.Type[],System.Type[],int):System.Reflection.Emit.FieldBuilder:this (Tier1)
         155 (39.44 % of base) : 507155.dasm - System.Security.AccessControl.GenericAce:CreateFromBinaryForm(ubyte[],int):System.Security.AccessControl.GenericAce (Tier1-OSR)
         246 (38.80 % of base) : 505454.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
         177 (28.10 % of base) : 416367.dasm - System.Reflection.Emit.RuntimeTypeBuilder:IsSubclassOf(System.Type):ubyte:this (Tier1)
          21 (28.00 % of base) : 81567.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          67 (26.48 % of base) : 346765.dasm - System.Linq.Enumerable:Concat[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]] (Tier1)
          47 (23.86 % of base) : 524672.dasm - System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (Tier1)
         100 (23.36 % of base) : 417607.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
         100 (23.36 % of base) : 489418.dasm - System.Reflection.RuntimeModule:ConvertToTypeHandleArray(System.Type[]):System.RuntimeTypeHandle[] (Tier1)
         462 (22.46 % of base) : 413784.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (Tier0-FullOpts)
          17 (22.08 % of base) : 89529.dasm - Microsoft.Interop.ManagedTypeInfo:op_Equality(Microsoft.Interop.ManagedTypeInfo,Microsoft.Interop.ManagedTypeInfo):ubyte (Tier1)
          17 (22.08 % of base) : 118163.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 419051.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 642081.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 346085.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 503608.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 539095.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          17 (22.08 % of base) : 591100.dasm - System.Dynamic.Utils.TypeUtils:AreEquivalent(System.Type,System.Type):ubyte (Tier1)
          14 (21.21 % of base) : 81464.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)

Top method improvements (percentages):
         -35 (-36.08 % of base) : 539462.dasm - Moq.Mock`1[System.__Canon]:get_Object():System.__Canon:this (Tier1)
         -25 (-33.78 % of base) : 3538.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (Tier1)
         -13 (-32.50 % of base) : 577219.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -13 (-32.50 % of base) : 591942.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (Tier1)
         -25 (-27.78 % of base) : 118786.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance[System.__Canon](System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -25 (-27.47 % of base) : 41297.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (Tier1)
         -32 (-27.12 % of base) : 419113.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (Tier1)
         -50 (-26.88 % of base) : 172776.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
         -18 (-26.47 % of base) : 257842.dasm - System.Threading.AsyncLocal`1[System.__Canon]:get_Value():System.__Canon:this (Tier1)
         -25 (-26.04 % of base) : 118012.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (Tier1)
         -25 (-26.04 % of base) : 217682.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (Tier1)
         -20 (-25.97 % of base) : 120118.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (Tier1)
         -20 (-25.97 % of base) : 118324.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (Tier1)
         -24 (-24.49 % of base) : 53674.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (Tier1)
         -23 (-23.96 % of base) : 118144.dasm - Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests:CreateInstance[System.__Canon](Microsoft.Extensions.DependencyInjection.Specification.DependencyInjectionSpecificationTests+CreateInstanceFunc,System.IServiceProvider,System.Object[]):System.__Canon (Tier1)
         -25 (-23.58 % of base) : 118109.dasm - Xunit.Assert:Throws[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
         -25 (-23.58 % of base) : 309861.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Func`1[System.Object]):System.__Canon (Tier1)
         -16 (-23.53 % of base) : 336305.dasm - (dynamicClass):lambda_method101(System.Runtime.CompilerServices.Closure):long (FullOpts)
         -18 (-23.38 % of base) : 58363.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)
         -18 (-23.08 % of base) : 617314.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder`1[System.__Canon]:get_Item(int):System.__Canon:this (Tier1)


librariestestsnotieredcompilation.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 108545965 (overridden on cmd)
Total bytes of diff: 108539645 (overridden on cmd)
Total bytes of delta: -6320 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         835 : 174673.dasm (23.01 % of base)
         508 : 174627.dasm (15.74 % of base)
         489 : 64482.dasm (18.21 % of base)
         480 : 64593.dasm (15.50 % of base)
         460 : 174718.dasm (21.53 % of base)
         460 : 64471.dasm (21.53 % of base)
         423 : 175096.dasm (17.98 % of base)
         195 : 174695.dasm (3.60 % of base)
         174 : 174392.dasm (3.15 % of base)
         174 : 174393.dasm (4.15 % of base)
         174 : 173937.dasm (3.15 % of base)
         174 : 173938.dasm (4.15 % of base)
         153 : 174564.dasm (4.07 % of base)
         149 : 218091.dasm (3.82 % of base)
         148 : 236625.dasm (9.15 % of base)
         146 : 145088.dasm (10.86 % of base)
         117 : 318224.dasm (2.56 % of base)
         115 : 174296.dasm (4.78 % of base)
         115 : 174688.dasm (5.72 % of base)
         115 : 174659.dasm (4.59 % of base)

Top file improvements (bytes):
        -425 : 66691.dasm (-23.57 % of base)
        -259 : 213596.dasm (-16.55 % of base)
        -259 : 202412.dasm (-16.55 % of base)
        -255 : 174913.dasm (-14.42 % of base)
        -238 : 174907.dasm (-13.58 % of base)
        -235 : 8209.dasm (-8.66 % of base)
        -220 : 174031.dasm (-11.03 % of base)
        -218 : 23056.dasm (-8.09 % of base)
        -217 : 23032.dasm (-9.08 % of base)
        -208 : 3018.dasm (-7.26 % of base)
        -190 : 23389.dasm (-9.21 % of base)
        -189 : 15762.dasm (-10.19 % of base)
        -189 : 15819.dasm (-10.31 % of base)
        -169 : 213616.dasm (-12.70 % of base)
        -169 : 201832.dasm (-12.70 % of base)
        -153 : 174909.dasm (-11.65 % of base)
        -144 : 13838.dasm (-13.15 % of base)
        -136 : 51654.dasm (-5.11 % of base)
        -136 : 45827.dasm (-5.11 % of base)
        -136 : 7600.dasm (-5.11 % of base)

88 total files with Code Size differences (52 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         835 (23.01 % of base) : 174673.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         508 (15.74 % of base) : 174627.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWithArrayPropertyHavingChoice:Read3_Item(ubyte,ubyte):SerializationTypes.TypeWithArrayPropertyHavingChoice:this (FullOpts)
         489 (18.21 % of base) : 64482.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         480 (15.50 % of base) : 64593.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPurchaseOrder:Read4_PurchaseOrder(ubyte,ubyte):PurchaseOrder:this (FullOpts)
         460 (21.53 % of base) : 64471.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         460 (21.53 % of base) : 174718.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         423 (17.98 % of base) : 175096.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
         195 (3.60 % of base) : 174695.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfArrayOfInt():System.Object:this (FullOpts)
         174 (4.15 % of base) : 174393.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         174 (4.15 % of base) : 173938.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         174 (3.15 % of base) : 174392.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         174 (3.15 % of base) : 173937.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderXmlSerializerAttributes:Read3_XmlSerializerAttributes(ubyte,ubyte):SerializationTypes.XmlSerializerAttributes:this (FullOpts)
         153 (4.07 % of base) : 174564.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeWith2DArrayProperty2:Read3_TypeWith2DArrayProperty2(ubyte,ubyte):SerializationTypes.TypeWith2DArrayProperty2:this (FullOpts)
         149 (3.82 % of base) : 218091.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
         148 (9.15 % of base) : 236625.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainTests:SystemTrustCertificateWithCustomRootTrust(ubyte) (FullOpts)
         146 (10.86 % of base) : 145088.dasm - System.Linq.Tests.ToLookupTests+<DebuggerAttributesValid_Data>d__25:MoveNext():ubyte:this (FullOpts)
         117 (2.56 % of base) : 318224.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:.ctor(System.Object[]):this (FullOpts)
         115 (4.78 % of base) : 174296.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read1_Object(ubyte,ubyte):System.Object:this (FullOpts)
         115 (4.59 % of base) : 174659.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObject:Read2_Object(ubyte,ubyte):System.Object:this (FullOpts)
         115 (5.72 % of base) : 174688.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderObjectArray:Read2_ArrayOfAnyType():System.Object:this (FullOpts)

Top method improvements (bytes):
        -425 (-23.57 % of base) : 66691.dasm - System.CodeDom.Compiler.CodeGenerator:GenerateExpression(System.CodeDom.CodeExpression):this (FullOpts)
        -259 (-16.55 % of base) : 213596.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -259 (-16.55 % of base) : 202412.dasm - System.Tests.ArrayTests:Sort_Array_Array_Generic[System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],System.__Canon[]) (FullOpts)
        -255 (-14.42 % of base) : 174913.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write28_XmlSchemaSimpleTypeRestriction(System.String,System.String,System.Xml.Schema.XmlSchemaSimpleTypeRestriction,ubyte,ubyte):this (FullOpts)
        -238 (-13.58 % of base) : 174907.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write59_XmlSchemaComplexType(System.String,System.String,System.Xml.Schema.XmlSchemaComplexType,ubyte,ubyte):this (FullOpts)
        -235 (-8.66 % of base) : 8209.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -220 (-11.03 % of base) : 174031.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write63_XmlSchema(System.String,System.String,System.Xml.Schema.XmlSchema,ubyte,ubyte):this (FullOpts)
        -218 (-8.09 % of base) : 23056.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+<GetProjectsThatCouldReferenceTypeAsync>d__10:MoveNext():this (FullOpts)
        -217 (-9.08 % of base) : 23032.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+SymbolSet+<DetermineInitialUpSymbolsAsync>d__10:MoveNext():this (FullOpts)
        -208 (-7.26 % of base) : 3018.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -190 (-9.21 % of base) : 23389.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine:GetProjectsToSearchAsync(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISymbol],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Project]]:this (FullOpts)
        -189 (-10.19 % of base) : 15762.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatThisProjectTransitivelyDependsOn_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -189 (-10.31 % of base) : 15819.dasm - Microsoft.CodeAnalysis.ProjectDependencyGraph:GetProjectsThatTransitivelyDependOnThisProject_NoLock(Microsoft.CodeAnalysis.ProjectId):System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.ProjectId]:this (FullOpts)
        -169 (-12.70 % of base) : 213616.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
        -169 (-12.70 % of base) : 201832.dasm - System.Tests.ArrayTests:Sort_Array_Generic[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[]) (FullOpts)
        -153 (-11.65 % of base) : 174909.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSchema:Write57_Item(System.String,System.String,System.Xml.Schema.XmlSchemaComplexContentExtension,ubyte,ubyte):this (FullOpts)
        -144 (-13.15 % of base) : 13838.dasm - Microsoft.CodeAnalysis.Shared.Utilities.AbstractSpeculationAnalyzer`8[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Conversion]:ReplacementChangesSemanticsForNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode):ubyte:this (FullOpts)
        -136 (-5.11 % of base) : 51654.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -136 (-5.11 % of base) : 45827.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -136 (-5.11 % of base) : 7600.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)

Top method regressions (percentages):
          33 (122.22 % of base) : 98031.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest2+<>c__DisplayClass7_0:<Insert>b__2():this (FullOpts)
          30 (60.00 % of base) : 96993.dasm - System.Data.Tests.Common.DataColumnMappingCollectionTest:<RemoveException1>b__22_0():this (FullOpts)
          30 (60.00 % of base) : 97954.dasm - System.Data.Tests.Common.DataTableMappingCollectionTest:<RemoveException1>b__16_0():this (FullOpts)
         107 (42.63 % of base) : 101906.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[Microsoft.Win32.UnsafeNativeMethods+EvtVariant](long):Microsoft.Win32.UnsafeNativeMethods+EvtVariant (FullOpts)
         108 (33.23 % of base) : 146129.dasm - System.Linq.Tests.SelectTests:EmptyWithIndexedSelector():this (FullOpts)
         111 (29.13 % of base) : 120766.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__2():this (FullOpts)
         111 (28.83 % of base) : 120761.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__0():this (FullOpts)
         111 (27.27 % of base) : 120792.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__1():this (FullOpts)
         111 (27.14 % of base) : 120791.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass6_0:<VerifyWriteNamedBitList_Null>b__0():this (FullOpts)
         111 (26.18 % of base) : 120767.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__3():this (FullOpts)
          34 (26.15 % of base) : 187012.dasm - System.Reflection.Emit.TypeBuilderImpl:get_UnderlyingSystemType():System.Type:this (FullOpts)
         111 (25.93 % of base) : 120765.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList+<>c__DisplayClass5_0:<VerifyWriteNamedBitList_FlagsEnumRequired>b__1():this (FullOpts)
         835 (23.01 % of base) : 174673.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderInt32Array:Read1_ArrayOfArrayOfInt():System.Object:this (FullOpts)
         107 (22.34 % of base) : 120770.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList(int,System.String,System.Enum) (FullOpts)
         460 (21.53 % of base) : 64471.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read3_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         460 (21.53 % of base) : 174718.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderTypeHasArrayOfASerializedAsB:Read3_TypeHasArrayOfASerializedAsB(ubyte,ubyte):SerializationTypes.TypeHasArrayOfASerializedAsB:this (FullOpts)
         107 (20.11 % of base) : 120787.dasm - System.Formats.Asn1.Tests.Writer.WriteNamedBitList:VerifyWriteNamedBitList_WithTag(int,System.String,System.Enum) (FullOpts)
         489 (18.21 % of base) : 64482.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderOrchestra:Read5_Orchestra(ubyte,ubyte):Orchestra:this (FullOpts)
         423 (17.98 % of base) : 175096.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1:Read2_Item(ubyte,ubyte):XmlMembersMappingTypeHavingIntArray:this (FullOpts)
          38 (16.74 % of base) : 146343.dasm - System.Linq.Tests.DistinctTests+<>c__DisplayClass26_0:<DistinctBy_SourceNull_ThrowsArgumentNullException>b__0():System.Object:this (FullOpts)

Top method improvements (percentages):
         -13 (-32.50 % of base) : 35571.dasm - LamarCodeGeneration.Util.TypeExtensions:As[System.__Canon](System.Object):System.__Canon (FullOpts)
         -13 (-32.50 % of base) : 149830.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-30.49 % of base) : 21287.dasm - Newtonsoft.Json.Linq.JToken:ToObject[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-30.23 % of base) : 30414.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.BindingHelperInfo+Builder+<>c:<ToIncrementalValue>b__7_2[System.__Canon](Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):System.__Canon:this (FullOpts)
         -45 (-29.22 % of base) : 174345.dasm - System.Xml.Serialization.XmlSchemaImporter:IsMixed(System.Xml.Schema.XmlSchemaType):ubyte (FullOpts)
         -26 (-27.37 % of base) : 174942.dasm - System.Xml.Schema.XmlSchemaSimpleType:get_DerivedFrom():System.Xml.XmlQualifiedName:this (FullOpts)
         -18 (-27.27 % of base) : 9768.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxRewriter:VisitListElement[System.__Canon](System.__Canon):System.__Canon:this (FullOpts)
         -18 (-27.27 % of base) : 97262.dasm - System.Data.Common.DbDataReader:GetFieldValue[System.__Canon](int):System.__Canon:this (FullOpts)
         -32 (-27.12 % of base) : 63086.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.__Canon]:<GetSetMemberValueDelegateWithType>b__0(System.Object,System.Object):this (FullOpts)
         -25 (-26.88 % of base) : 36234.dasm - Grace.DependencyInjection.Impl.BaseExportLocatorScope:Locate[System.__Canon]():System.__Canon:this (FullOpts)
         -51 (-26.15 % of base) : 3327.dasm - Microsoft.VisualStudio.Composition.ExportProvider:CastValueTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -25 (-26.04 % of base) : 17403.dasm - Xunit.Assert:Throws[System.__Canon](System.Action):System.__Canon (FullOpts)
         -25 (-26.04 % of base) : 17467.dasm - Xunit.Assert:ThrowsAny[System.__Canon](System.Action):System.__Canon (FullOpts)
         -20 (-25.97 % of base) : 77605.dasm - Xunit.Assert:IsAssignableFrom[System.__Canon](System.Object):System.__Canon (FullOpts)
         -20 (-25.97 % of base) : 133698.dasm - Xunit.Assert:IsType[System.__Canon](System.Object):System.__Canon (FullOpts)
         -13 (-25.49 % of base) : 91417.dasm - System.Composition.Hosting.Providers.Metadata.MetadataViewProvider+<>c__1`1[System.__Canon]:<GetMetadataViewProvider>b__1_0(System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.__Canon:this (FullOpts)
         -18 (-25.35 % of base) : 49273.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -18 (-25.35 % of base) : 48032.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -13 (-25.00 % of base) : 140949.dasm - System.Linq.ParallelQuery`1+<>c__2`1[System.__Canon,System.__Canon]:<OfType>b__2_1(System.__Canon):System.__Canon:this (FullOpts)
         -17 (-25.00 % of base) : 315713.dasm - System.Threading.Tasks.Tests.TaskRunSyncTest:DisposeScheduler(System.Threading.Tasks.TaskScheduler) (FullOpts)


realworld.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9896125 (overridden on cmd)
Total bytes of diff: 9893212 (overridden on cmd)
Total bytes of delta: -2913 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         107 : 36319.dasm (42.13 % of base)
          54 : 18836.dasm (3.91 % of base)
          31 : 15797.dasm (0.74 % of base)
          22 : 4756.dasm (6.09 % of base)
          10 : 31708.dasm (0.53 % of base)
           7 : 11838.dasm (2.52 % of base)

Top file improvements (bytes):
        -166 : 35211.dasm (-31.44 % of base)
        -136 : 22595.dasm (-5.12 % of base)
        -103 : 35940.dasm (-30.93 % of base)
         -51 : 35011.dasm (-16.19 % of base)
         -46 : 28330.dasm (-5.23 % of base)
         -45 : 32962.dasm (-9.43 % of base)
         -43 : 34646.dasm (-22.87 % of base)
         -42 : 30524.dasm (-6.06 % of base)
         -42 : 36500.dasm (-18.50 % of base)
         -41 : 35207.dasm (-12.97 % of base)
         -41 : 8531.dasm (-30.15 % of base)
         -40 : 34651.dasm (-16.81 % of base)
         -40 : 6885.dasm (-3.01 % of base)
         -40 : 13004.dasm (-18.87 % of base)
         -40 : 7407.dasm (-7.34 % of base)
         -39 : 34621.dasm (-2.20 % of base)
         -36 : 18976.dasm (-5.74 % of base)
         -34 : 22819.dasm (-14.11 % of base)
         -31 : 34616.dasm (-19.25 % of base)
         -31 : 7275.dasm (-5.81 % of base)

55 total files with Code Size differences (49 improved, 6 regressed), 10 unchanged.

Top method regressions (bytes):
         107 (42.13 % of base) : 36319.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](long):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
          54 (3.91 % of base) : 18836.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
          31 (0.74 % of base) : 15797.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          22 (6.09 % of base) : 4756.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
          10 (0.53 % of base) : 31708.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)
           7 (2.52 % of base) : 11838.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)

Top method improvements (bytes):
        -166 (-31.44 % of base) : 35211.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
        -136 (-5.12 % of base) : 22595.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:AppendUseSiteDiagnostics(Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,byref):ubyte (FullOpts)
        -103 (-30.93 % of base) : 35940.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -51 (-16.19 % of base) : 35011.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object:this (FullOpts)
         -46 (-5.23 % of base) : 28330.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAwaitableInfo(Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -45 (-9.43 % of base) : 32962.dasm - System.Management.Automation.SessionStateScope:CreateFunction(System.String,System.Management.Automation.ScriptBlock,System.Management.Automation.FunctionInfo,int,System.Management.Automation.ExecutionContext,System.String):System.Management.Automation.FunctionInfo (FullOpts)
         -43 (-22.87 % of base) : 34646.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -42 (-6.06 % of base) : 30524.dasm - Microsoft.CodeAnalysis.CSharp.AsyncMethodBuilderMemberCollection:TryGetBuilderMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory,System.Nullable`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,byref):ubyte (FullOpts)
         -42 (-18.50 % of base) : 36500.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -41 (-30.15 % of base) : 8531.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -41 (-12.97 % of base) : 35207.dasm - System.Management.Automation.Interpreter.FuncCallInstruction`4[System.__Canon,System.__Canon,ubyte,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -40 (-7.34 % of base) : 7407.dasm - FSharp.Compiler.CheckDeclarations+TcDeclarations:SplitTyconDefn(FSharp.Compiler.Syntax.SynTypeDefn):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]] (FullOpts)
         -40 (-18.87 % of base) : 13004.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
         -40 (-3.01 % of base) : 6885.dasm - FSharp.Compiler.Lexer:endline(FSharp.Compiler.ParseHelpers+LexerEndlineContinuation,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -40 (-16.81 % of base) : 34651.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -39 (-2.20 % of base) : 34621.dasm - System.Management.Automation.ScriptBlock:BindArgumentsForScriptblockInvoke(System.Management.Automation.RuntimeDefinedParameter[],System.Object[],System.Management.Automation.ExecutionContext,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable],System.Management.Automation.MutableTuple):System.Object[] (FullOpts)
         -36 (-5.74 % of base) : 18976.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithAnnotationsGreen[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxAnnotation]):System.__Canon (FullOpts)
         -34 (-14.11 % of base) : 22819.dasm - Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this (FullOpts)
         -31 (-5.81 % of base) : 7275.dasm - FSharp.Compiler.ParseAndCheckInputs:GetScopedPragmasForHashDirective(FSharp.Compiler.Syntax.ParsedHashDirective):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma] (FullOpts)
         -31 (-19.25 % of base) : 34616.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)

Top method regressions (percentages):
         107 (42.13 % of base) : 36319.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Runtime.InteropServices.ComTypes.ELEMDESC](long):System.Runtime.InteropServices.ComTypes.ELEMDESC (FullOpts)
          22 (6.09 % of base) : 4756.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)
          54 (3.91 % of base) : 18836.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:.ctor(int,ubyte,int,System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String]):this (FullOpts)
           7 (2.52 % of base) : 11838.dasm - FSharp.Compiler.SyntaxTreeOps:unionBindingAndMembers(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynBinding] (FullOpts)
          31 (0.74 % of base) : 15797.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
          10 (0.53 % of base) : 31708.dasm - Microsoft.Cci.MetadataWriter:PopulateDeclSecurityTableRowsFor(System.Reflection.Metadata.EntityHandle,System.Collections.Generic.IEnumerable`1[Microsoft.Cci.SecurityAttribute]):this (FullOpts)

Top method improvements (percentages):
         -25 (-33.78 % of base) : 677.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
        -166 (-31.44 % of base) : 35211.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`6[System.__Canon,ubyte,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
        -103 (-30.93 % of base) : 35940.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -41 (-30.15 % of base) : 8531.dasm - FSharp.Compiler.TypedTreeOps:targetOfSuccessDecisionTree(FSharp.Compiler.TypedTree+DecisionTree):Microsoft.FSharp.Core.FSharpOption`1[int] (FullOpts)
         -25 (-29.07 % of base) : 21452.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-27.27 % of base) : 35363.dasm - System.Management.Automation.Language.GetSafeValueVisitor:VisitArrayExpression(System.Management.Automation.Language.ArrayExpressionAst):System.Object:this (FullOpts)
         -13 (-25.49 % of base) : 35289.dasm - System.Management.Automation.PSTypeExtensions+<>c__7`1[System.__Canon]:<GetCustomAttributes>b__7_1(System.Object):System.__Canon:this (FullOpts)
         -18 (-25.35 % of base) : 19748.dasm - Microsoft.CodeAnalysis.GreenNodeExtensions:WithDiagnosticsGreen[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.DiagnosticInfo[]):System.__Canon (FullOpts)
         -23 (-23.71 % of base) : 9534.dasm - FSharp.Compiler.TypedTree+ValFlags:WithRecursiveValInfo(FSharp.Compiler.TypedTree+ValRecursiveScopeInfo):FSharp.Compiler.TypedTree+ValFlags:this (FullOpts)
         -43 (-22.87 % of base) : 34646.dasm - System.Management.Automation.Interpreter.ActionCallInstruction`2[System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -31 (-19.25 % of base) : 34616.dasm - System.Management.Automation.LanguagePrimitives:ConvertTo[System.__Canon](System.Object):System.__Canon (FullOpts)
         -13 (-19.12 % of base) : 32853.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -40 (-18.87 % of base) : 13004.dasm - FSharp.Compiler.CompilerDiagnostics:GetWarningLevel(FSharp.Compiler.ErrorLogger+PhasedDiagnostic):int (FullOpts)
         -42 (-18.50 % of base) : 36500.dasm - System.Runtime.InteropServices.CustomMarshalers.ComDataHelpers:GetOrCreateManagedViewFromComData[System.__Canon,System.__Canon](System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -20 (-18.35 % of base) : 4559.dasm - FSharp.Compiler.ParseAndCheckInputs+PostParseModuleImpls@183:Invoke(FSharp.Compiler.Syntax.ParsedImplFileFragment):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]]:this (FullOpts)
         -18 (-17.82 % of base) : 25101.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (FullOpts)
         -20 (-17.39 % of base) : 9645.dasm - FSharp.Compiler.TypedTreeBasics:ccuOfTyconRef(FSharp.Compiler.TypedTree+EntityRef):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk] (FullOpts)
         -26 (-17.11 % of base) : 36191.dasm - System.Management.Automation.LanguagePrimitives:TryConvertTo[System.__Canon](System.Object,System.IFormatProvider,byref):ubyte (FullOpts)
         -40 (-16.81 % of base) : 34651.dasm - System.Management.Automation.Interpreter.DynamicInstruction`3[System.__Canon,System.__Canon,System.__Canon]:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -20 (-16.53 % of base) : 11096.dasm - FSharp.Compiler.TypedTreeOps:remapAttribKind(FSharp.Compiler.TypedTreeOps+Remap,FSharp.Compiler.TypedTree+AttribKind):FSharp.Compiler.TypedTree+AttribKind (FullOpts)


smoke_tests.nativeaot.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 4471874 (overridden on cmd)
Total bytes of diff: 4471624 (overridden on cmd)
Total bytes of delta: -250 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          15 : 28941.dasm (6.28 % of base)
           9 : 1531.dasm (1.76 % of base)
           9 : 16064.dasm (1.71 % of base)
           9 : 16667.dasm (1.76 % of base)
           9 : 16803.dasm (1.75 % of base)
           9 : 17731.dasm (1.75 % of base)
           9 : 18724.dasm (1.71 % of base)
           9 : 19236.dasm (1.76 % of base)
           9 : 20004.dasm (1.75 % of base)
           9 : 20358.dasm (1.75 % of base)
           9 : 21356.dasm (1.71 % of base)
           9 : 21969.dasm (1.76 % of base)
           9 : 22664.dasm (1.75 % of base)
           9 : 2294.dasm (1.75 % of base)
           9 : 2635.dasm (1.76 % of base)
           9 : 3926.dasm (1.72 % of base)
           9 : 5108.dasm (1.76 % of base)
           9 : 5578.dasm (1.75 % of base)
           9 : 6739.dasm (1.75 % of base)
           9 : 8435.dasm (1.76 % of base)

Top file improvements (bytes):
         -34 : 9272.dasm (-11.89 % of base)
         -31 : 2978.dasm (-14.76 % of base)
         -31 : 9007.dasm (-15.20 % of base)
         -28 : 2973.dasm (-14.07 % of base)
         -28 : 9001.dasm (-14.51 % of base)
         -25 : 13376.dasm (-12.82 % of base)
         -25 : 7859.dasm (-12.44 % of base)
         -18 : 10222.dasm (-30.00 % of base)
         -18 : 12610.dasm (-19.35 % of base)
         -18 : 13255.dasm (-23.38 % of base)
         -18 : 23315.dasm (-7.47 % of base)
         -18 : 30482.dasm (-18.00 % of base)
         -18 : 30483.dasm (-20.00 % of base)
         -18 : 30484.dasm (-18.56 % of base)
         -18 : 30485.dasm (-18.56 % of base)
         -18 : 32085.dasm (-30.00 % of base)
         -18 : 8087.dasm (-19.35 % of base)
         -17 : 9274.dasm (-15.89 % of base)
         -15 : 9160.dasm (-11.54 % of base)
         -15 : 9162.dasm (-13.89 % of base)

57 total files with Code Size differences (30 improved, 27 regressed), 2 unchanged.

Top method regressions (bytes):
          15 (6.28 % of base) : 28941.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
           9 (2.69 % of base) : 9859.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
           9 (1.76 % of base) : 1531.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 16667.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 19236.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 21969.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 5108.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 20004.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 22664.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 2294.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 6739.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.71 % of base) : 16064.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
           9 (1.71 % of base) : 18724.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
           9 (1.71 % of base) : 21356.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
           9 (1.72 % of base) : 3926.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[System.__Canon](System.__Canon,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 16803.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 5578.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 17731.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 20358.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 2635.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)

Top method improvements (bytes):
         -34 (-11.89 % of base) : 9272.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.set_Item(System.Object,System.Object):this (FullOpts)
         -31 (-14.76 % of base) : 2978.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -31 (-15.20 % of base) : 9007.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -28 (-14.07 % of base) : 2973.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-14.51 % of base) : 9001.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -25 (-12.82 % of base) : 13376.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -25 (-12.44 % of base) : 7859.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -18 (-30.00 % of base) : 10222.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -18 (-30.00 % of base) : 32085.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -18 (-18.56 % of base) : 30485.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -18 (-20.00 % of base) : 30483.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -18 (-19.35 % of base) : 12610.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-19.35 % of base) : 8087.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-18.56 % of base) : 30484.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -18 (-18.00 % of base) : 30482.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -18 (-23.38 % of base) : 13255.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -18 (-7.47 % of base) : 23315.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.__Canon](long):System.__Canon (FullOpts)
         -17 (-15.89 % of base) : 9274.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
         -15 (-13.89 % of base) : 9162.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -15 (-11.54 % of base) : 9160.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile(ubyte):System.__Canon:this (FullOpts)

Top method regressions (percentages):
          15 (6.28 % of base) : 28941.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts)
           7 (5.47 % of base) : 11150.dasm - System.Reflection.Runtime.EventInfos.NativeFormat.NativeFormatRuntimeEventInfo:Equals(System.Object):ubyte:this (FullOpts)
           7 (5.47 % of base) : 15724.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           7 (5.47 % of base) : 18396.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           7 (5.47 % of base) : 21010.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           7 (5.47 % of base) : 482.dasm - System.Text.UnicodeEncoding:Equals(System.Object):ubyte:this (FullOpts)
           7 (3.14 % of base) : 28776.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:HasCustomFormatter(System.IFormatProvider):ubyte (FullOpts)
           9 (2.69 % of base) : 9859.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts)
           9 (1.76 % of base) : 1531.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 5108.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 16667.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 19236.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 21969.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[int](int,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 2635.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
           9 (1.76 % of base) : 8435.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 2294.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 6739.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[long](long,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 5578.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ubyte](ubyte,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 17731.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)
           9 (1.75 % of base) : 20358.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormattedWithTempSpace[ushort](ushort,int,System.String):this (FullOpts)

Top method improvements (percentages):
         -18 (-30.00 % of base) : 10222.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -18 (-30.00 % of base) : 32085.dasm - Generics+TestDelegateFatFunctionPointers:OtherGeneric[System.__Canon](System.Object):System.__Canon:this (FullOpts)
         -18 (-23.38 % of base) : 13255.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-21.67 % of base) : 8941.dasm - System.Runtime.CompilerServices.StrongBox`1[System.__Canon]:System.Runtime.CompilerServices.IStrongBox.set_Value(System.Object):this (FullOpts)
         -18 (-20.00 % of base) : 30483.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo):System.__Canon (FullOpts)
         -18 (-19.35 % of base) : 12610.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-19.35 % of base) : 8087.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.MemberInfo,ubyte):System.__Canon (FullOpts)
         -18 (-18.56 % of base) : 30485.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Assembly):System.__Canon (FullOpts)
         -18 (-18.56 % of base) : 30484.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.Module):System.__Canon (FullOpts)
         -18 (-18.00 % of base) : 30482.dasm - System.Reflection.CustomAttributeExtensions:GetCustomAttribute[System.__Canon](System.Reflection.ParameterInfo):System.__Canon (FullOpts)
         -17 (-15.89 % of base) : 9274.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts)
         -31 (-15.20 % of base) : 9007.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -13 (-14.94 % of base) : 10914.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -13 (-14.94 % of base) : 32288.dasm - Interfaces+TypeWithVariantInterfaces`1[System.__Canon]:DoCovariant(System.Object):System.__Canon:this (FullOpts)
         -31 (-14.76 % of base) : 2978.dasm - System.Collections.Generic.Comparer`1[System.__Canon]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts)
         -28 (-14.51 % of base) : 9001.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -28 (-14.07 % of base) : 2973.dasm - System.Collections.Generic.EqualityComparer`1[System.__Canon]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts)
         -15 (-13.89 % of base) : 9162.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Compile():System.__Canon:this (FullOpts)
         -25 (-12.82 % of base) : 13376.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)
         -25 (-12.44 % of base) : 7859.dasm - System.Threading.AsyncLocal`1[System.__Canon]:System.Threading.IAsyncLocal.OnValueChanged(System.Object,System.Object,ubyte):this (FullOpts)