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/GetMaxByteCount #872

Open
MihuBot opened this issue Jan 9, 2025 · 3 comments
Open

[JitDiff X64] xtqqczze/dotnet-runtime/GetMaxByteCount #872

MihuBot opened this issue Jan 9, 2025 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jan 9, 2025

Job completed in 18 minutes 23 seconds.

Diffs

Found 261 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40217075
Total bytes of diff: 40216369
Total bytes of delta: -706 (-0.00 % of base)
Total relative delta: -5.26
    diff is an improvement.
    relative diff is an improvement.


Total byte diff includes 81 bytes from reconciling methods
	Base had    0 unique methods,        0 unique bytes
	Diff had    3 unique methods,       81 unique bytes

Top file improvements (bytes):
        -706 : System.Private.CoreLib.dasm (-0.01 % of base)

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

Top method regressions (bytes):
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int) (FullOpts) (0 base, 1 diff methods)
          24 (1.28 % of base) : System.Private.CoreLib.dasm - System.ThrowHelper:GetResourceString(int):System.String (FullOpts)

Top method improvements (bytes):
         -91 (-43.75 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -87 (-47.80 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding:GetMaxCharCount(int):int:this (FullOpts)
         -78 (-54.93 % of base) : System.Private.CoreLib.dasm - System.Text.UTF7Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -72 (-37.11 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this (FullOpts)
         -69 (-37.91 % of base) : System.Private.CoreLib.dasm - System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this (FullOpts)
         -69 (-37.91 % of base) : System.Private.CoreLib.dasm - System.Text.Latin1Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -69 (-37.30 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this (FullOpts)
         -69 (-37.10 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -68 (-37.99 % of base) : System.Private.CoreLib.dasm - System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this (FullOpts)
         -56 (-56.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts)
         -56 (-56.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts)
         -17 (-14.91 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetMaxCharCount(int):int:this (FullOpts)
          -5 (-14.29 % of base) : System.Private.CoreLib.dasm - System.Text.Latin1Encoding:GetMaxCharCount(int):int:this (FullOpts)
          -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)
          -1 (-2.44 % of base) : System.Private.CoreLib.dasm - System.Text.UTF7Encoding:GetMaxCharCount(int):int:this (FullOpts)

Top method regressions (percentages):
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int) (FullOpts) (0 base, 1 diff methods)
          27 (Infinity of base) : System.Private.CoreLib.dasm - System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int) (FullOpts) (0 base, 1 diff methods)
          24 (1.28 % of base) : System.Private.CoreLib.dasm - System.ThrowHelper:GetResourceString(int):System.String (FullOpts)

Top method improvements (percentages):
         -56 (-56.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts)
         -56 (-56.00 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts)
         -78 (-54.93 % of base) : System.Private.CoreLib.dasm - System.Text.UTF7Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -87 (-47.80 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding:GetMaxCharCount(int):int:this (FullOpts)
         -91 (-43.75 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -68 (-37.99 % of base) : System.Private.CoreLib.dasm - System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this (FullOpts)
         -69 (-37.91 % of base) : System.Private.CoreLib.dasm - System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this (FullOpts)
         -69 (-37.91 % of base) : System.Private.CoreLib.dasm - System.Text.Latin1Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -69 (-37.30 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this (FullOpts)
         -72 (-37.11 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this (FullOpts)
         -69 (-37.10 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetMaxByteCount(int):int:this (FullOpts)
         -17 (-14.91 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetMaxCharCount(int):int:this (FullOpts)
          -5 (-14.29 % of base) : System.Private.CoreLib.dasm - System.Text.Latin1Encoding:GetMaxCharCount(int):int:this (FullOpts)
          -2 (-6.25 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxCharCount(int):int:this (FullOpts)
          -2 (-5.71 % of base) : System.Private.CoreLib.dasm - System.Text.UTF8Encoding+UTF8EncodingSealed:GetMaxByteCount(int):int:this (FullOpts)
          -1 (-2.44 % of base) : System.Private.CoreLib.dasm - System.Text.UTF7Encoding:GetMaxCharCount(int):int:this (FullOpts)

20 total methods with Code Size differences (16 improved, 4 regressed), 233022 unchanged.

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

Artifacts:

xtqqczze referenced this issue in xtqqczze/dotnet-runtime Jan 9, 2025
@MihuBot
Copy link
Owner Author

MihuBot commented Jan 9, 2025

Top method regressions

24 (1.28 % of base) - System.ThrowHelper:GetResourceString(int):System.String
 ; Assembly listing for method System.ThrowHelper:GetResourceString(int):System.String (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 70 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 71 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  4,  3.99)     int  ->  rdi         single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T01] (  2,  2   )     ref  ->  rax         single-def "Single return block return value"
 ;
 ; Lcl frame size = 0
 
 G_M676_IG01:
        push     rbp
        mov      rbp, rsp
 						;; size=4 bbWeight=1 PerfScore 1.25
 G_M676_IG02:
-       cmp      edi, 79
-       ja       G_M676_IG164
+       cmp      edi, 80
+       ja       G_M676_IG166
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M676_IG03:
        mov      edi, edi
        lea      rax, [reloc @RWD00]
        mov      eax, dword ptr [rax+4*rdi]
        lea      rcx, G_M676_IG02
        add      rax, rcx
        jmp      rax
 						;; size=24 bbWeight=0.99 PerfScore 5.93
 G_M676_IG04:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_IncompatibleComparer'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_GetByteCountOverflow'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG05:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG06:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_HasToBeArrayClass():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG07:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_Argument_HasToBeArrayClass():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG08:
-       mov      rdi, 0xD1FFAB1E      ; 'Format_ExpectedAsciiDigit'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_IncompatibleComparer'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG09:
+G_M676_IG07:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG08:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_HasToBeArrayClass():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG09:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_Argument_HasToBeArrayClass():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG10:
-       mov      rdi, 0xD1FFAB1E      ; 'Format_UnclosedFormatItem'
+       mov      rdi, 0xD1FFAB1E      ; 'Format_ExpectedAsciiDigit'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG11:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG12:
-       mov      rdi, 0xD1FFAB1E      ; 'Format_UnexpectedClosingBrace'
+       mov      rdi, 0xD1FFAB1E      ; 'Format_UnclosedFormatItem'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG13:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG14:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_TimeProviderInvalidTimestampFrequency'
+       mov      rdi, 0xD1FFAB1E      ; 'Format_UnexpectedClosingBrace'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG15:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG16:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_TimeProviderNullLocalTimeZone'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_TimeProviderInvalidTimestampFrequency'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG17:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG18:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_SpanOverlappedOperation'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_TimeProviderNullLocalTimeZone'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG19:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG20:
-       mov      rdi, 0xD1FFAB1E      ; 'Argument_AlignmentMustBePow2'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_SpanOverlappedOperation'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG21:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG22:
-       mov      rdi, 0xD1FFAB1E      ; 'CancellationTokenSource_Disposed'
+       mov      rdi, 0xD1FFAB1E      ; 'Argument_AlignmentMustBePow2'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG23:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG24:
+       mov      rdi, 0xD1FFAB1E      ; 'CancellationTokenSource_Disposed'
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
+						;; size=20 bbWeight=0.50 PerfScore 0.25
+G_M676_IG25:
+       pop      rbp
+       tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG26:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_InvalidFlag():System.String
 						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG25:
+G_M676_IG27:
        pop      rbp
        tail.jmp [rax]System.SR:get_Argument_InvalidFlag():System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG26:
+G_M676_IG28:
        mov      rdi, 0xD1FFAB1E      ; 'Argument_SpansMustHaveSameLength'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG27:
+G_M676_IG29:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG28:
+G_M676_IG30:
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_TypeNotSupported():System.String
 						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG29:
+G_M676_IG31:
        pop      rbp
        tail.jmp [rax]System.SR:get_Arg_TypeNotSupported():System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG30:
-       mov      rdi, 0xD1FFAB1E      ; 'Rank_MultiDimNotSupported'
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
-						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG31:
-       pop      rbp
-       tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG32:
-       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_FixedSizeCollection'
+       mov      rdi, 0xD1FFAB1E      ; 'Rank_MultiDimNotSupported'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG33:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG34:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_IComparerFailed'
+       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_FixedSizeCollection'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG35:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG36:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_RanksAndBounds'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_IComparerFailed'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG37:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG38:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_RankIndices'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_RanksAndBounds'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG39:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG40:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_NeedAtLeast1Rank'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_RankIndices'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG41:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG42:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need3DArray'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_NeedAtLeast1Rank'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG43:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG44:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need2DArray'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need3DArray'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG45:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG46:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need1DArray'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need2DArray'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG47:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG48:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_MustBeType():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG49:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_Arg_MustBeType():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG50:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_LowerBoundsMustMatch'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_Need1DArray'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG51:
+G_M676_IG49:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG50:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_MustBeType():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG51:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_Arg_MustBeType():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG52:
-       mov      rdi, 0xD1FFAB1E      ; 'Argument_InvalidArgumentForComparison'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_LowerBoundsMustMatch'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG53:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG54:
-       mov      rdi, 0xD1FFAB1E      ; 'Argument_AddingDuplicate'
+       mov      rdi, 0xD1FFAB1E      ; 'Argument_InvalidArgumentForComparison'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG55:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG56:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_HugeArrayNotSupported'
+       mov      rdi, 0xD1FFAB1E      ; 'Argument_AddingDuplicate'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG57:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG58:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_Enum():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG59:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_Enum():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG60:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_EndIndexStartIndex'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_HugeArrayNotSupported'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG61:
+G_M676_IG59:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG60:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_Enum():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG61:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_Enum():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG62:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentNull_SafeHandle'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_EndIndexStartIndex'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG63:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG64:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentNull_Array'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentNull_SafeHandle'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG65:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG66:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentException_OtherNotArrayOfCorrectLength'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentNull_Array'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG67:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG68:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_WaitMulti_NullTask'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentException_OtherNotArrayOfCorrectLength'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG69:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG70:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_ThrowIfDisposed'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_WaitMulti_NullTask'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG71:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG72:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Dispose_NotCompleted'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_ThrowIfDisposed'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG73:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG74:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Delay_InvalidMillisecondsDelay'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Dispose_NotCompleted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG75:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG76:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_InvalidTimerTimeSpan'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Delay_InvalidMillisecondsDelay'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG77:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG78:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_ContinueWith_NotOnAnything'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_InvalidTimerTimeSpan'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG79:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG80:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_ContinueWith_ESandLR'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_ContinueWith_NotOnAnything'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG81:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG82:
-       mov      rdi, 0xD1FFAB1E      ; 'AsyncMethodBuilder_InstanceNotInitialized'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_ContinueWith_ESandLR'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG83:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG84:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_AlreadyStarted'
+       mov      rdi, 0xD1FFAB1E      ; 'AsyncMethodBuilder_InstanceNotInitialized'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG85:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG86:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_TaskCompleted'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_AlreadyStarted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG87:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG88:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_Promise'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_TaskCompleted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG89:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG90:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_Continuation'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_Promise'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG91:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG92:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_AlreadyStarted'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_RunSynchronously_Continuation'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG93:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG94:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_ContinuationTask'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_AlreadyStarted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG95:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG96:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_Promise'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_ContinuationTask'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG97:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG98:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_TaskCompleted'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_Promise'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG99:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG100:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_MultiTaskContinuation_EmptyTaskList'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_Start_TaskCompleted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG101:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG102:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_WrongAsyncResultOrEndCalledMultiple'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_MultiTaskContinuation_EmptyTaskList'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG103:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG104:
-       mov      rdi, 0xD1FFAB1E      ; 'Task_MultiTaskContinuation_NullTask'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_WrongAsyncResultOrEndCalledMultiple'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG105:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG106:
-       mov      rdi, 0xD1FFAB1E      ; 'ConcurrentCollection_SyncRoot_NotSupported'
+       mov      rdi, 0xD1FFAB1E      ; 'Task_MultiTaskContinuation_NullTask'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG107:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG108:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_NotSupported_StringComparison():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG109:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_NotSupported_StringComparison():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG110:
-       mov      rdi, 0xD1FFAB1E      ; 'TaskCompletionSourceT_TrySetException_NoExceptions'
+       mov      rdi, 0xD1FFAB1E      ; 'ConcurrentCollection_SyncRoot_NotSupported'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG111:
+G_M676_IG109:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG110:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_NotSupported_StringComparison():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG111:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_NotSupported_StringComparison():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG112:
-       mov      rdi, 0xD1FFAB1E      ; 'TaskCompletionSourceT_TrySetException_NullException'
+       mov      rdi, 0xD1FFAB1E      ; 'TaskCompletionSourceT_TrySetException_NoExceptions'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG113:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG114:
-       mov      rdi, 0xD1FFAB1E      ; 'TaskT_TransitionToFinal_AlreadyCompleted'
+       mov      rdi, 0xD1FFAB1E      ; 'TaskCompletionSourceT_TrySetException_NullException'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG115:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG116:
-       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_NullArray'
+       mov      rdi, 0xD1FFAB1E      ; 'TaskT_TransitionToFinal_AlreadyCompleted'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG117:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG118:
-       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_ValueCollectionSet'
+       mov      rdi, 0xD1FFAB1E      ; 'InvalidOperation_NullArray'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG119:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG120:
-       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_KeyCollectionSet'
+       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_ValueCollectionSet'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG121:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG122:
-       mov      rdi, 0xD1FFAB1E      ; 'Serialization_NullKey'
+       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_KeyCollectionSet'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG123:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG124:
-       mov      rdi, 0xD1FFAB1E      ; 'Serialization_MissingKeys'
+       mov      rdi, 0xD1FFAB1E      ; 'Serialization_NullKey'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG125:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG126:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_BiggerThanCollection'
+       mov      rdi, 0xD1FFAB1E      ; 'Serialization_MissingKeys'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG127:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG128:
-       mov      rdi, 0xD1FFAB1E      ; 'Argument_CannotExtractScalar'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_BiggerThanCollection'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG129:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG130:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_InvalidOffLen():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG131:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_Argument_InvalidOffLen():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG132:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_SmallCapacity'
+       mov      rdi, 0xD1FFAB1E      ; 'Argument_CannotExtractScalar'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG133:
+G_M676_IG131:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG132:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_InvalidOffLen():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG133:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_Argument_InvalidOffLen():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG134:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_NotGreaterThanBufferLength'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_SmallCapacity'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG135:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG136:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M676_IG137:
-       pop      rbp
-       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-						;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M676_IG138:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_ListInsert'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_NotGreaterThanBufferLength'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
-G_M676_IG139:
+G_M676_IG137:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG138:
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG139:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG140:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_GetCharCountOverflow'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_ListInsert'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG141:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG142:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_NonZeroLowerBound'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_GetCharCountOverflow'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG143:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG144:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_RankMultiDimNotSupported'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_NonZeroLowerBound'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG145:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG146:
-       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_ReadOnlyCollection'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_RankMultiDimNotSupported'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG147:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG148:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_ByteArrayTooSmallForValue'
+       mov      rdi, 0xD1FFAB1E      ; 'NotSupported_ReadOnlyCollection'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG149:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG150:
-       mov      rdi, 0xD1FFAB1E      ; 'Arg_ArrayPlusOffTooSmall'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_ByteArrayTooSmallForValue'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG151:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG152:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_Year'
+       mov      rdi, 0xD1FFAB1E      ; 'Arg_ArrayPlusOffTooSmall'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG153:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG154:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_Count'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_Year'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG155:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG156:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_IndexCountBuffer'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_Count'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG157:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG158:
-       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_IndexCount'
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_IndexCountBuffer'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
 						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG159:
        pop      rbp
        tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG160:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_IndexMustBeLess():System.String
-						;; size=10 bbWeight=0.50 PerfScore 0.12
+       mov      rdi, 0xD1FFAB1E      ; 'ArgumentOutOfRange_IndexCount'
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
+						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M676_IG161:
        pop      rbp
-       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_IndexMustBeLess():System.String
+       tail.jmp [rax]System.SR:GetResourceString(System.String):System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG162:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_IndexMustBeLessOrEqual():System.String
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_IndexMustBeLess():System.String
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M676_IG163:
        pop      rbp
-       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_IndexMustBeLessOrEqual():System.String
+       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_IndexMustBeLess():System.String
 						;; size=4 bbWeight=0.50 PerfScore 1.25
 G_M676_IG164:
-       mov      rax, 0xD1FFAB1E      ; ''
+       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_IndexMustBeLessOrEqual():System.String
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M676_IG165:
+       pop      rbp
+       tail.jmp [rax]System.SR:get_ArgumentOutOfRange_IndexMustBeLessOrEqual():System.String
+						;; size=4 bbWeight=0.50 PerfScore 1.25
+G_M676_IG166:
+       mov      rax, 0xD1FFAB1E      ; ''
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M676_IG167:
        pop      rbp
        ret      
 						;; size=2 bbWeight=0.50 PerfScore 0.75
-RWD00  	dd	G_M676_IG162 - G_M676_IG02
+RWD00  	dd	G_M676_IG164 - G_M676_IG02
+       	dd	G_M676_IG162 - G_M676_IG02
        	dd	G_M676_IG160 - G_M676_IG02
        	dd	G_M676_IG158 - G_M676_IG02
        	dd	G_M676_IG156 - G_M676_IG02
        	dd	G_M676_IG154 - G_M676_IG02
        	dd	G_M676_IG152 - G_M676_IG02
        	dd	G_M676_IG150 - G_M676_IG02
        	dd	G_M676_IG148 - G_M676_IG02
        	dd	G_M676_IG146 - G_M676_IG02
        	dd	G_M676_IG144 - G_M676_IG02
        	dd	G_M676_IG142 - G_M676_IG02
        	dd	G_M676_IG140 - G_M676_IG02
        	dd	G_M676_IG138 - G_M676_IG02
        	dd	G_M676_IG136 - G_M676_IG02
        	dd	G_M676_IG134 - G_M676_IG02
        	dd	G_M676_IG132 - G_M676_IG02
        	dd	G_M676_IG130 - G_M676_IG02
        	dd	G_M676_IG128 - G_M676_IG02
        	dd	G_M676_IG126 - G_M676_IG02
        	dd	G_M676_IG124 - G_M676_IG02
        	dd	G_M676_IG122 - G_M676_IG02
        	dd	G_M676_IG120 - G_M676_IG02
        	dd	G_M676_IG118 - G_M676_IG02
        	dd	G_M676_IG116 - G_M676_IG02
        	dd	G_M676_IG114 - G_M676_IG02
        	dd	G_M676_IG112 - G_M676_IG02
        	dd	G_M676_IG110 - G_M676_IG02
        	dd	G_M676_IG108 - G_M676_IG02
        	dd	G_M676_IG106 - G_M676_IG02
        	dd	G_M676_IG104 - G_M676_IG02
        	dd	G_M676_IG102 - G_M676_IG02
        	dd	G_M676_IG100 - G_M676_IG02
        	dd	G_M676_IG98 - G_M676_IG02
        	dd	G_M676_IG96 - G_M676_IG02
        	dd	G_M676_IG94 - G_M676_IG02
        	dd	G_M676_IG92 - G_M676_IG02
        	dd	G_M676_IG90 - G_M676_IG02
        	dd	G_M676_IG88 - G_M676_IG02
        	dd	G_M676_IG86 - G_M676_IG02
        	dd	G_M676_IG84 - G_M676_IG02
        	dd	G_M676_IG82 - G_M676_IG02
        	dd	G_M676_IG80 - G_M676_IG02
        	dd	G_M676_IG78 - G_M676_IG02
        	dd	G_M676_IG76 - G_M676_IG02
        	dd	G_M676_IG74 - G_M676_IG02
        	dd	G_M676_IG72 - G_M676_IG02
        	dd	G_M676_IG70 - G_M676_IG02
        	dd	G_M676_IG68 - G_M676_IG02
        	dd	G_M676_IG66 - G_M676_IG02
        	dd	G_M676_IG64 - G_M676_IG02
        	dd	G_M676_IG62 - G_M676_IG02
        	dd	G_M676_IG60 - G_M676_IG02
        	dd	G_M676_IG58 - G_M676_IG02
        	dd	G_M676_IG56 - G_M676_IG02
        	dd	G_M676_IG54 - G_M676_IG02
        	dd	G_M676_IG52 - G_M676_IG02
        	dd	G_M676_IG50 - G_M676_IG02
        	dd	G_M676_IG48 - G_M676_IG02
        	dd	G_M676_IG46 - G_M676_IG02
        	dd	G_M676_IG44 - G_M676_IG02
        	dd	G_M676_IG42 - G_M676_IG02
        	dd	G_M676_IG40 - G_M676_IG02
        	dd	G_M676_IG38 - G_M676_IG02
        	dd	G_M676_IG36 - G_M676_IG02
        	dd	G_M676_IG34 - G_M676_IG02
        	dd	G_M676_IG32 - G_M676_IG02
        	dd	G_M676_IG30 - G_M676_IG02
        	dd	G_M676_IG28 - G_M676_IG02
        	dd	G_M676_IG26 - G_M676_IG02
        	dd	G_M676_IG24 - G_M676_IG02
        	dd	G_M676_IG22 - G_M676_IG02
        	dd	G_M676_IG20 - G_M676_IG02
        	dd	G_M676_IG18 - G_M676_IG02
        	dd	G_M676_IG16 - G_M676_IG02
        	dd	G_M676_IG14 - G_M676_IG02
        	dd	G_M676_IG12 - G_M676_IG02
        	dd	G_M676_IG10 - G_M676_IG02
        	dd	G_M676_IG08 - G_M676_IG02
        	dd	G_M676_IG06 - G_M676_IG02
        	dd	G_M676_IG04 - G_M676_IG02
 
 
-; Total bytes of code 1869, prolog size 4, PerfScore 128.05, instruction count 323, allocated bytes for code 1869 (MethodHash=7b27fd5b) for method System.ThrowHelper:GetResourceString(int):System.String (FullOpts)
+; Total bytes of code 1893, prolog size 4, PerfScore 129.55, instruction count 327, allocated bytes for code 1893 (MethodHash=7b27fd5b) for method System.ThrowHelper:GetResourceString(int):System.String (FullOpts)
 ; ============================================================

@MihuBot
Copy link
Owner Author

MihuBot commented Jan 9, 2025

Top method improvements

-91 (-43.75 % of base) - System.Text.UTF8Encoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.UTF8Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.UTF8Encoding>
-;  V01 arg1         [V01,T01] (  5,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  rbx        
+;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.UTF8Encoding>
+;  V01 arg1         [V01,T01] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T06] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V09 tmp6         [V09,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M968_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M968_IG02:
-       test     ebx, ebx
-       jl       G_M968_IG07
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x10]
+       test     esi, esi
+       jl       SHORT G_M968_IG07
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M968_IG04
-						;; size=33 bbWeight=1 PerfScore 12.00
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M968_IG03:
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M968_IG04:
-       lea      rbx, [rbx+2*rbx]
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M968_IG06
-       mov      eax, ebx
-						;; size=15 bbWeight=1 PerfScore 2.00
+       lea      r15, [r15+2*r15]
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M968_IG06
+       mov      eax, r15d
+						;; size=16 bbWeight=1 PerfScore 2.00
 G_M968_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M968_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
 G_M968_IG07:
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      edi, ebx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
        int3     
-						;; size=38 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 208, prolog size 9, PerfScore 26.12, instruction count 55, allocated bytes for code 208 (MethodHash=34fdfc37) for method System.Text.UTF8Encoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 117, prolog size 9, PerfScore 25.88, instruction count 37, allocated bytes for code 117 (MethodHash=34fdfc37) for method System.Text.UTF8Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-87 (-47.80 % of base) - System.Text.UTF8Encoding:GetMaxCharCount(int):int:this
 ; Assembly listing for method System.Text.UTF8Encoding:GetMaxCharCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.UTF8Encoding>
-;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  rbx        
+;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.UTF8Encoding>
+;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M3994_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M3994_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'byteCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x18]
+       test     esi, esi
+       jl       SHORT G_M3994_IG06
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M3994_IG04
-						;; size=49 bbWeight=1 PerfScore 14.50
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M3994_IG03:
-       mov      rdi, gword ptr [r15+0x18]
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M3994_IG04:
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M3994_IG06
-       mov      eax, ebx
-						;; size=11 bbWeight=1 PerfScore 1.50
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M3994_IG06
+       mov      eax, r15d
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M3994_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M3994_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x13560
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 182, prolog size 9, PerfScore 28.12, instruction count 48, allocated bytes for code 182 (MethodHash=c513f065) for method System.Text.UTF8Encoding:GetMaxCharCount(int):int:this (FullOpts)
+; Total bytes of code 95, prolog size 9, PerfScore 25.38, instruction count 32, allocated bytes for code 95 (MethodHash=c513f065) for method System.Text.UTF8Encoding:GetMaxCharCount(int):int:this (FullOpts)
 ; ============================================================
-78 (-54.93 % of base) - System.Text.UTF7Encoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.UTF7Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp 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.UTF7Encoding>
-;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rbx         single-def
+;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rsi         single-def
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T01] (  3,  6   )    long  ->  rax         "dup spill"
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref   
-;  V05 tmp3         [V05,T02] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V06 tmp4         [V06,T03] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T04] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M55111_IG01:
        push     rbp
-       push     r15
-       push     rbx
-       lea      rbp, [rsp+0x10]
-       mov      ebx, esi
-						;; size=11 bbWeight=1 PerfScore 3.75
+       mov      rbp, rsp
+						;; size=4 bbWeight=1 PerfScore 1.25
 G_M55111_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rax, ebx
+       test     esi, esi
+       jl       SHORT G_M55111_IG05
+       mov      eax, esi
        lea      rax, [rax+2*rax]
        add      rax, 2
        cmp      rax, 0xD1FFAB1E
-       jg       SHORT G_M55111_IG04
-						;; size=43 bbWeight=1 PerfScore 6.00
+       ja       SHORT G_M55111_IG04
+						;; size=22 bbWeight=1 PerfScore 3.50
 G_M55111_IG03:
-       pop      rbx
-       pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=1 PerfScore 2.50
+						;; size=2 bbWeight=1 PerfScore 1.50
 G_M55111_IG04:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M55111_IG05:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 142, prolog size 9, PerfScore 12.25, instruction count 35, allocated bytes for code 142 (MethodHash=959428b8) for method System.Text.UTF7Encoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 6.25, instruction count 19, allocated bytes for code 64 (MethodHash=959428b8) for method System.Text.UTF7Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-72 (-37.11 % of base) - System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this
 ; Assembly listing for method System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.UnicodeEncoding>
-;  V01 arg1         [V01,T00] (  5,  5   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  rbx        
+;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.UnicodeEncoding>
+;  V01 arg1         [V01,T00] (  5,  5   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M51226_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M51226_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'byteCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       mov      edi, ebx
+       test     esi, esi
+       jl       SHORT G_M51226_IG07
+       mov      edi, esi
        sar      edi, 1
-       movsxd   rdi, edi
-       and      ebx, 1
-       movsxd   rax, ebx
-       lea      rbx, [rdi+rax+0x01]
-       mov      rdi, gword ptr [r15+0x18]
+       and      esi, 1
+       lea      edi, [rdi+rsi+0x01]
+       mov      r15d, edi
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M51226_IG04
-						;; size=61 bbWeight=1 PerfScore 16.50
+						;; size=37 bbWeight=1 PerfScore 13.75
 G_M51226_IG03:
-       mov      rdi, gword ptr [r15+0x18]
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M51226_IG04:
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M51226_IG06
-       mov      eax, ebx
-						;; size=11 bbWeight=1 PerfScore 1.50
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M51226_IG06
+       mov      eax, r15d
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M51226_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M51226_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x13560
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M51226_IG07:
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 194, prolog size 9, PerfScore 30.12, instruction count 52, allocated bytes for code 194 (MethodHash=865a37e5) for method System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this (FullOpts)
+; Total bytes of code 122, prolog size 9, PerfScore 27.12, instruction count 39, allocated bytes for code 122 (MethodHash=865a37e5) for method System.Text.UnicodeEncoding:GetMaxCharCount(int):int:this (FullOpts)
 ; ============================================================
-69 (-37.91 % of base) - System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.ASCIIEncoding>
-;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  rbx        
+;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.ASCIIEncoding>
+;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M61094_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M61094_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x10]
+       test     esi, esi
+       jl       SHORT G_M61094_IG07
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M61094_IG04
-						;; size=49 bbWeight=1 PerfScore 14.50
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M61094_IG03:
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M61094_IG04:
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M61094_IG06
-       mov      eax, ebx
-						;; size=11 bbWeight=1 PerfScore 1.50
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M61094_IG06
+       mov      eax, r15d
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M61094_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M61094_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M61094_IG07:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 182, prolog size 9, PerfScore 28.12, instruction count 48, allocated bytes for code 182 (MethodHash=68321159) for method System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 113, prolog size 9, PerfScore 25.38, instruction count 36, allocated bytes for code 113 (MethodHash=68321159) for method System.Text.ASCIIEncoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-69 (-37.91 % of base) - System.Text.Latin1Encoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.Latin1Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.Latin1Encoding>
-;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  rbx        
+;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.Latin1Encoding>
+;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M55608_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M55608_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x10]
+       test     esi, esi
+       jl       SHORT G_M55608_IG07
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M55608_IG04
-						;; size=49 bbWeight=1 PerfScore 14.50
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M55608_IG03:
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M55608_IG04:
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M55608_IG06
-       mov      eax, ebx
-						;; size=11 bbWeight=1 PerfScore 1.50
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M55608_IG06
+       mov      eax, r15d
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M55608_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M55608_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M55608_IG07:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 182, prolog size 9, PerfScore 28.12, instruction count 48, allocated bytes for code 182 (MethodHash=7aa826c7) for method System.Text.Latin1Encoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 113, prolog size 9, PerfScore 25.38, instruction count 36, allocated bytes for code 113 (MethodHash=7aa826c7) for method System.Text.Latin1Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-69 (-37.30 % of base) - System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.UnicodeEncoding>
-;  V01 arg1         [V01,T01] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  rbx        
+;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.UnicodeEncoding>
+;  V01 arg1         [V01,T01] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M48200_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M48200_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x10]
+       test     esi, esi
+       jl       SHORT G_M48200_IG07
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M48200_IG04
-						;; size=49 bbWeight=1 PerfScore 14.50
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M48200_IG03:
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M48200_IG04:
-       add      rbx, rbx
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M48200_IG06
-       mov      eax, ebx
-						;; size=14 bbWeight=1 PerfScore 1.75
+       add      r15, r15
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M48200_IG06
+       mov      eax, r15d
+						;; size=15 bbWeight=1 PerfScore 1.75
 G_M48200_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M48200_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M48200_IG07:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 185, prolog size 9, PerfScore 28.38, instruction count 49, allocated bytes for code 185 (MethodHash=f64443b7) for method System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 116, prolog size 9, PerfScore 25.62, instruction count 37, allocated bytes for code 116 (MethodHash=f64443b7) for method System.Text.UnicodeEncoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-69 (-37.10 % of base) - System.Text.UTF32Encoding:GetMaxByteCount(int):int:this
 ; Assembly listing for method System.Text.UTF32Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.UTF32Encoding>
-;  V01 arg1         [V01,T01] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  rbx        
+;  V00 this         [V00,T03] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.UTF32Encoding>
+;  V01 arg1         [V01,T01] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T00] (  7,  6   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T02] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M21713_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M21713_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       inc      rbx
-       mov      rdi, gword ptr [r15+0x10]
+       test     esi, esi
+       jl       SHORT G_M21713_IG07
+       inc      esi
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M21713_IG04
-						;; size=49 bbWeight=1 PerfScore 14.50
+						;; size=28 bbWeight=1 PerfScore 12.00
 G_M21713_IG03:
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.EncoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M21713_IG04:
-       shl      rbx, 2
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M21713_IG06
-       mov      eax, ebx
-						;; size=15 bbWeight=1 PerfScore 2.00
+       shl      r15, 2
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M21713_IG06
+       mov      eax, r15d
+						;; size=16 bbWeight=1 PerfScore 2.00
 G_M21713_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M21713_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x1359A
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M21713_IG07:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 186, prolog size 9, PerfScore 28.62, instruction count 49, allocated bytes for code 186 (MethodHash=fbc0ab2e) for method System.Text.UTF32Encoding:GetMaxByteCount(int):int:this (FullOpts)
+; Total bytes of code 117, prolog size 9, PerfScore 25.88, instruction count 37, allocated bytes for code 117 (MethodHash=fbc0ab2e) for method System.Text.UTF32Encoding:GetMaxByteCount(int):int:this (FullOpts)
 ; ============================================================
-68 (-37.99 % of base) - System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this
 ; Assembly listing for method System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - 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
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  r15         this class-hnd single-def <System.Text.ASCIIEncoding>
-;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rbx         single-def
-;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  rbx        
+;  V00 this         [V00,T02] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Text.ASCIIEncoding>
+;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  rsi         single-def
+;  V02 loc0         [V02,T03] (  5,  4   )    long  ->  r15        
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-;  V05 tmp2         [V05,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
-;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T07] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V04 tmp1         [V04,T01] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V05 tmp2         [V05,T04] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
 G_M27380_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
-       mov      r15, rdi
-       mov      ebx, esi
-						;; size=14 bbWeight=1 PerfScore 4.00
+       mov      rbx, rdi
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M27380_IG02:
-       mov      edi, ebx
-       mov      rsi, 0xD1FFAB1E      ; 'byteCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
-       movsxd   rbx, ebx
-       mov      rdi, gword ptr [r15+0x18]
+       test     esi, esi
+       jl       SHORT G_M27380_IG07
+       mov      r15d, esi
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
        cmp      eax, 1
        jle      SHORT G_M27380_IG04
-						;; size=46 bbWeight=1 PerfScore 14.25
+						;; size=26 bbWeight=1 PerfScore 11.75
 G_M27380_IG03:
-       mov      rdi, gword ptr [r15+0x18]
+       mov      rdi, gword ptr [rbx+0x18]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Text.DecoderFallback:get_MaxCharCount():int:this
-       cdqe     
-       imul     rbx, rax
+       mov      eax, eax
+       imul     r15, rax
 						;; size=20 bbWeight=0.50 PerfScore 5.62
 G_M27380_IG04:
-       cmp      rbx, 0xD1FFAB1E
-       jg       SHORT G_M27380_IG06
-       mov      eax, ebx
-						;; size=11 bbWeight=1 PerfScore 1.50
+       cmp      r15, 0xD1FFAB1E
+       ja       SHORT G_M27380_IG06
+       mov      eax, r15d
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M27380_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M27380_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      edi, 0x13560
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      r15, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M27380_IG07:
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 179, prolog size 9, PerfScore 27.88, instruction count 47, allocated bytes for code 179 (MethodHash=fda6950b) for method System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this (FullOpts)
+; Total bytes of code 111, prolog size 9, PerfScore 25.12, instruction count 35, allocated bytes for code 111 (MethodHash=fda6950b) for method System.Text.ASCIIEncoding:GetMaxCharCount(int):int:this (FullOpts)
 ; ============================================================
-56 (-56.00 % of base) - System.Text.UTF8Encoding+UTF8EncodingSealed:g__ThrowArgumentException|7_0(int)
 ; Assembly listing for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  3,  2   )     int  ->  rdi         single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )     ref  ->  zero-ref   
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V04 tmp3         [V04,T01] (  3,  0   )     ref  ->  rbx        
-;  V05 tmp4         [V05,T02] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;
 ; Lcl frame size = 0
 
 G_M17667_IG01:
        push     rbp
-       push     r15
-       push     rbx
-       lea      rbp, [rsp+0x10]
-						;; size=9 bbWeight=0 PerfScore 0.00
+       mov      rbp, rsp
+						;; size=4 bbWeight=0 PerfScore 0.00
 G_M17667_IG02:
        test     edi, edi
-       jge      SHORT G_M17667_IG03
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-       mov      rbx, rax
-       jmp      SHORT G_M17667_IG04
-						;; size=21 bbWeight=0 PerfScore 0.00
-G_M17667_IG03:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String
-       mov      rbx, rax
-						;; size=15 bbWeight=0 PerfScore 0.00
-G_M17667_IG04:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       mov      rdi, r15
-       mov      rdx, rbx
-       mov      rsi, 0xD1FFAB1E      ; 'charCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, r15
-       call     CORINFO_HELP_THROW
+       jl       SHORT G_M17667_IG03
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetByteCountOverflow(int)
        int3     
-						;; size=55 bbWeight=0 PerfScore 0.00
+						;; size=22 bbWeight=0 PerfScore 0.00
+G_M17667_IG03:
+       mov      edi, 16
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 9, PerfScore 0.00, instruction count 24, allocated bytes for code 100 (MethodHash=0152bafc) for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 0.00, instruction count 12, allocated bytes for code 44 (MethodHash=0152bafc) for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxByteCount>g__ThrowArgumentException|7_0(int) (FullOpts)
 ; ============================================================
-56 (-56.00 % of base) - System.Text.UTF8Encoding+UTF8EncodingSealed:g__ThrowArgumentException|8_0(int)
 ; Assembly listing for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  3,  2   )     int  ->  rdi         single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )     ref  ->  zero-ref   
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V04 tmp3         [V04,T01] (  3,  0   )     ref  ->  rbx        
-;  V05 tmp4         [V05,T02] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;
 ; Lcl frame size = 0
 
 G_M49342_IG01:
        push     rbp
-       push     r15
-       push     rbx
-       lea      rbp, [rsp+0x10]
-						;; size=9 bbWeight=0 PerfScore 0.00
+       mov      rbp, rsp
+						;; size=4 bbWeight=0 PerfScore 0.00
 G_M49342_IG02:
        test     edi, edi
-       jge      SHORT G_M49342_IG03
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_NeedNonNegNum():System.String
-       mov      rbx, rax
-       jmp      SHORT G_M49342_IG04
-						;; size=21 bbWeight=0 PerfScore 0.00
-G_M49342_IG03:
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       call     [rax]System.SR:get_ArgumentOutOfRange_GetCharCountOverflow():System.String
-       mov      rbx, rax
-						;; size=15 bbWeight=0 PerfScore 0.00
-G_M49342_IG04:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentOutOfRangeException
-       call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       mov      rdi, r15
-       mov      rdx, rbx
-       mov      rsi, 0xD1FFAB1E      ; 'byteCount'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this
-       mov      rdi, r15
-       call     CORINFO_HELP_THROW
+       jl       SHORT G_M49342_IG03
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_GetCharCountOverflow(int)
        int3     
-						;; size=55 bbWeight=0 PerfScore 0.00
+						;; size=22 bbWeight=0 PerfScore 0.00
+G_M49342_IG03:
+       mov      edi, 12
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException_NeedNonNegNum(int)
+       int3     
+						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 100, prolog size 9, PerfScore 0.00, instruction count 24, allocated bytes for code 100 (MethodHash=11603f41) for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 0.00, instruction count 12, allocated bytes for code 44 (MethodHash=11603f41) for method System.Text.UTF8Encoding+UTF8EncodingSealed:<GetMaxCharCount>g__ThrowArgumentException|8_0(int) (FullOpts)
 ; ============================================================

Larger list of diffs: https://gist.github.com/MihuBot/8ebe90492fc999f8b9f2c4b8c0a30bbf

@MihuBot
Copy link
Owner Author

MihuBot commented Jan 9, 2025

@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

1 participant