Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] xtqqczze/dotnet-runtime/take-this #713

Open
MihuBot opened this issue Oct 10, 2024 · 4 comments
Open

[JitDiff X64] xtqqczze/dotnet-runtime/take-this #713

MihuBot opened this issue Oct 10, 2024 · 4 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 10, 2024

Job completed in 18 minutes 34 seconds.

Diffs

Found 262 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39444504
Total bytes of diff: 39444708
Total bytes of delta: 204 (0.00 % of base)
Total relative delta: -0.50
    diff is a regression.
    relative diff is an improvement.


Total byte diff includes 219 bytes from reconciling methods
	Base had   10 unique methods,     1288 unique bytes
	Diff had   18 unique methods,     1507 unique bytes

Top file regressions (bytes):
         204 : System.Private.CoreLib.dasm (0.00 % of base)

1 total files with Code Size differences (0 improved, 1 regressed), 258 unchanged.

Top method regressions (bytes):
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         135 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         100 (Infinity of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         100 (Infinity of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
           3 (2.80 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this (FullOpts)

Top method improvements (bytes):
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -100 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts) (1 base, 0 diff methods)
        -100 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts) (1 base, 0 diff methods)
          -2 (-5.71 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)
          -2 (-6.25 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this (FullOpts)

Top method regressions (percentages):
         100 (Infinity of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         100 (Infinity of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         135 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
         136 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:ThrowIfInvalidConfigureAwaitOptions(System.Object,int) (FullOpts) (0 base, 1 diff methods)
           3 (2.80 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this (FullOpts)

Top method improvements (percentages):
        -100 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts) (1 base, 0 diff methods)
        -100 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.__Canon]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
        -136 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int) (FullOpts) (1 base, 0 diff methods)
          -2 (-6.25 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -2 (-5.88 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this (FullOpts)
          -2 (-5.71 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)

38 total methods with Code Size differences (19 improved, 19 regressed), 232508 unchanged.

--------------------------------------------------------------------------------

Artifacts:

xtqqczze referenced this issue in xtqqczze/dotnet-runtime Oct 10, 2024
@xtqqczze
Copy link

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 10, 2024

Top method regressions

3 (2.80 % of base) - System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  4   )     ref  ->  rbx         this class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V01 arg1         [V01,T01] (  5,  4   )     int  ->  r15         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]>
-;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]>
 ;* V05 tmp3         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;* V06 tmp4         [V06    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.__Canon]>
-;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 tmp7         [V09,T02] (  2,  2   )     ref  ->  rax         single-def "field V06.m_task (fldOffset=0x0)" P-INDEP
-;  V10 tmp8         [V10,T03] (  2,  2   )     int  ->  rdx         "field V06.m_options (fldOffset=0x8)" P-INDEP
-;  V11 tmp9         [V11,T07] (  2,  0   )    long  ->  rdi         "argument with side effect"
+;  V06 tmp4         [V06,T04] (  3,  2   )    long  ->  rsi         "Inlining Arg"
+;* V07 tmp5         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.__Canon]>
+;* V08 tmp6         [V08    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V09 tmp7         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V10 tmp8         [V10,T05] (  2,  2   )     ref  ->  rax         single-def "field V07.m_task (fldOffset=0x0)" P-INDEP
+;  V11 tmp9         [V11,T06] (  2,  2   )     int  ->  rdx         "field V07.m_options (fldOffset=0x8)" P-INDEP
 ;* V12 tmp10        [V12    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
-;  V13 rat0         [V13,T04] (  3,  0   )    long  ->  rdi         "Spilling to split statement for tree"
-;  V14 rat1         [V14,T05] (  3,  0   )    long  ->  rdi         "runtime lookup"
-;  V15 rat2         [V15,T06] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V13 rat0         [V13,T03] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T02] (  3,  5.60)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
 G_M34555_IG01:
        push     rbp
        push     r15
        push     rbx
        sub      rsp, 16
        lea      rbp, [rsp+0x20]
        mov      qword ptr [rbp-0x18], rdi
        mov      rbx, rdi
        mov      r15d, esi
 						;; size=23 bbWeight=1 PerfScore 5.25
 G_M34555_IG02:
+       mov      rdi, qword ptr [rbx]
+       mov      rsi, qword ptr [rdi+0x30]
+       mov      rsi, qword ptr [rsi]
+       mov      rsi, qword ptr [rsi+0x48]
+       test     rsi, rsi
+       je       SHORT G_M34555_IG04
+						;; size=19 bbWeight=1 PerfScore 9.25
+G_M34555_IG03:
        test     r15d, -6
-       jne      SHORT G_M34555_IG04
-       cmp      dword ptr [rbx], ebx
+       je       SHORT G_M34555_IG05
+       jmp      SHORT G_M34555_IG07
+						;; size=11 bbWeight=1 PerfScore 3.25
+G_M34555_IG04:
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       mov      rsi, rax
+       jmp      SHORT G_M34555_IG03
+						;; size=20 bbWeight=0.20 PerfScore 0.70
+G_M34555_IG05:
        mov      rax, rbx
        mov      edx, r15d
-						;; size=17 bbWeight=1 PerfScore 4.75
-G_M34555_IG03:
+						;; size=6 bbWeight=1 PerfScore 0.50
+G_M34555_IG06:
        add      rsp, 16
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 2.75
-G_M34555_IG04:
-       mov      rdi, qword ptr [rbx]
-       mov      rsi, qword ptr [rdi+0x30]
-       mov      rsi, qword ptr [rsi]
-       mov      rax, qword ptr [rsi+0x48]
-       test     rax, rax
-       je       SHORT G_M34555_IG05
-       mov      rdi, rax
-       jmp      SHORT G_M34555_IG06
-						;; size=24 bbWeight=0 PerfScore 0.00
-G_M34555_IG05:
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       mov      rdi, rax
-						;; size=18 bbWeight=0 PerfScore 0.00
-G_M34555_IG06:
-       mov      esi, r15d
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.__Canon]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[System.__Canon]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+G_M34555_IG07:
+       mov      rdi, rsi
+       mov      rsi, rbx
+       mov      edx, r15d
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.__Canon]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[System.__Canon]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=16 bbWeight=0 PerfScore 0.00
+						;; size=22 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 107, prolog size 17, PerfScore 12.75, instruction count 33, allocated bytes for code 107 (MethodHash=224e7904) for method System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 110, prolog size 17, PerfScore 21.70, instruction count 34, allocated bytes for code 110 (MethodHash=224e7904) for method System.Threading.Tasks.Task`1[System.__Canon]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.__Canon]:this (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 10, 2024

Top method improvements

-2 (-5.71 % of base) - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
-;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V00 this         [V00,T01] (  3,  2   )     ref  ->  rdi         this class-hnd single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M42341_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M42341_IG02:
        cmp      esi, 0xD1FFAB1E
        ja       SHORT G_M42341_IG04
        lea      eax, [rsi+2*rsi]
        add      eax, 3
 						;; size=14 bbWeight=1 PerfScore 2.00
 G_M42341_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M42341_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int)
-       call     [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(System.Object,int)
+       call     [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 35, prolog size 1, PerfScore 4.25, instruction count 11, allocated bytes for code 35 (MethodHash=9a745a9a) for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 33, prolog size 1, PerfScore 4.25, instruction count 10, allocated bytes for code 33 (MethodHash=9a745a9a) for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-2 (-6.25 % of base) - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this
 ; Assembly listing for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
-;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V00 this         [V00,T01] (  3,  2   )     ref  ->  rdi         this class-hnd single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M20535_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M20535_IG02:
        cmp      esi, 0xD1FFAB1E
        ja       SHORT G_M20535_IG04
        lea      eax, [rsi+0x01]
 						;; size=11 bbWeight=1 PerfScore 1.75
 G_M20535_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M20535_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int)
-       call     [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(System.Object,int)
+       call     [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=2357afc8) for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
+; Total bytes of code 30, prolog size 1, PerfScore 4.00, instruction count 9, allocated bytes for code 30 (MethodHash=2357afc8) for method System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[double]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[double]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[double]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M62779_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M62779_IG02:
        test     esi, -6
        jne      SHORT G_M62779_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M62779_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M62779_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[double]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[double]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[double]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[double]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=0db50ac4) for method System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=0db50ac4) for method System.Threading.Tasks.Task`1[double]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[double]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[int]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[int]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[int]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M4891_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M4891_IG02:
        test     esi, -6
        jne      SHORT G_M4891_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M4891_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M4891_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[int]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[int]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[int]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[int]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=ed4dece4) for method System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=ed4dece4) for method System.Threading.Tasks.Task`1[int]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[int]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[long]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[long]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[long]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M47739_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M47739_IG02:
        test     esi, -6
        jne      SHORT G_M47739_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M47739_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M47739_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[long]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[long]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[long]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[long]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=e3bd4584) for method System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=e3bd4584) for method System.Threading.Tasks.Task`1[long]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[long]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[short]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[short]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[short]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M49915_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M49915_IG02:
        test     esi, -6
        jne      SHORT G_M49915_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M49915_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M49915_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[short]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[short]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[short]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[short]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=6d2b3d04) for method System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=6d2b3d04) for method System.Threading.Tasks.Task`1[short]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[short]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M31867_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M31867_IG02:
        test     esi, -6
        jne      SHORT G_M31867_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M31867_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M31867_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[System.Nullable`1[int]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=51458384) for method System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=51458384) for method System.Threading.Tasks.Task`1[System.Nullable`1[int]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Numerics.Vector`1[float]]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M58011_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M58011_IG02:
        test     esi, -6
        jne      SHORT G_M58011_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M58011_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M58011_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=11da1d64) for method System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=11da1d64) for method System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Numerics.Vector`1[float]]:this (FullOpts)
 ; ============================================================
-2 (-5.88 % of base) - System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this
 ; Assembly listing for method System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]>
+;  V00 this         [V00,T01] (  4,  3   )     ref  ->  rdi         this class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]>
 ;  V01 arg1         [V01,T00] (  5,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]>
 ;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[ubyte]>
 ;  V05 tmp3         [V05,T02] (  2,  2   )     ref  ->  rax         single-def "field V04.m_task (fldOffset=0x0)" P-INDEP
 ;  V06 tmp4         [V06,T03] (  2,  2   )     int  ->  rdx         "field V04.m_options (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M56987_IG01:
        push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
 G_M56987_IG02:
        test     esi, -6
        jne      SHORT G_M56987_IG04
        mov      rax, rdi
        mov      edx, esi
 						;; size=13 bbWeight=1 PerfScore 1.75
 G_M56987_IG03:
        add      rsp, 8
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M56987_IG04:
-       mov      edi, esi
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[ubyte]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
-       call     [rax]System.Threading.Tasks.Task`1[ubyte]:<ConfigureAwait>g__ThrowForInvalidOptions|35_0(int)
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task`1[ubyte]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
+       call     [rax]System.Threading.Tasks.Task`1[ubyte]:<ThrowIfInvalidConfigureAwaitOptions>g__ThrowForInvalidOptions|36_0(System.Object,int)
        int3     
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 34, prolog size 1, PerfScore 4.00, instruction count 11, allocated bytes for code 34 (MethodHash=1fe02164) for method System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this (FullOpts)
+; Total bytes of code 32, prolog size 1, PerfScore 4.00, instruction count 10, allocated bytes for code 32 (MethodHash=1fe02164) for method System.Threading.Tasks.Task`1[ubyte]:ConfigureAwait(int):System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[ubyte]:this (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 10, 2024

@xtqqczze

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants