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

[X64] [stephentoub] Clean up some [InlineArray] use #291

Open
MihuBot opened this issue Mar 14, 2024 · 2 comments
Open

[X64] [stephentoub] Clean up some [InlineArray] use #291

MihuBot opened this issue Mar 14, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Mar 14, 2024

Build completed in 1 hour 45 minutes.
dotnet/runtime#99766

Diffs

Found 304 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39005111
Total bytes of diff: 39005275
Total bytes of delta: 164 (0.00 % of base)
Total relative delta: Infinity
    diff is a regression.
    relative diff is a regression.


Total byte diff includes -156 bytes from reconciling methods
	Base had    9 unique methods,      202 unique bytes
	Diff had    8 unique methods,       46 unique bytes

Top file regressions (bytes):
         384 : System.Net.Sockets.dasm (0.15 % of base)
          14 : Microsoft.Extensions.DependencyInjection.Abstractions.dasm (0.02 % of base)

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

3 total files with Code Size differences (1 improved, 2 regressed), 253 unchanged.

Top method regressions (bytes):
         384 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:EventLoop():this (FullOpts)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[double,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[int,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[long,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[short,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Nullable`1[int],System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[ubyte,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           4 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.__Canon,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)

Top method improvements (bytes):
         -92 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Buffers.EightPackedReferences:.ctor(System.ReadOnlySpan`1[System.Object]):this (FullOpts) (1 base, 0 diff methods)
         -32 (-1.71 % of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
         -25 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.Numerics.Vector`1[float]]:Set(int,System.Numerics.Vector`1[float]):this (FullOpts) (1 base, 0 diff methods)
         -20 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.__Canon]:Set(int,System.__Canon):this (FullOpts) (1 base, 0 diff methods)
         -14 (-5.93 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
         -12 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[double]:Set(int,double):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[long]:Set(int,long):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[short]:Set(int,short):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.Nullable`1[int]]:Set(int,System.Nullable`1[int]):this (FullOpts) (1 base, 0 diff methods)
         -11 (-1.25 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
         -10 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[int]:Set(int,int):this (FullOpts) (1 base, 0 diff methods)
         -10 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[ubyte]:Set(int,ubyte):this (FullOpts) (1 base, 0 diff methods)
          -7 (-0.79 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts)

Top method regressions (percentages):
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[double,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[int,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[long,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[short,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           4 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.__Canon,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Nullable`1[int],System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
           6 (Infinity of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[ubyte,System.Nullable`1[int]](byref,int):System.Span`1[System.Nullable`1[int]] (FullOpts) (0 base, 1 diff methods)
         384 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:EventLoop():this (FullOpts)

Top method improvements (percentages):
         -92 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Buffers.EightPackedReferences:.ctor(System.ReadOnlySpan`1[System.Object]):this (FullOpts) (1 base, 0 diff methods)
         -12 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[double]:Set(int,double):this (FullOpts) (1 base, 0 diff methods)
         -10 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[int]:Set(int,int):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[long]:Set(int,long):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[short]:Set(int,short):this (FullOpts) (1 base, 0 diff methods)
         -20 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.__Canon]:Set(int,System.__Canon):this (FullOpts) (1 base, 0 diff methods)
         -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.Nullable`1[int]]:Set(int,System.Nullable`1[int]):this (FullOpts) (1 base, 0 diff methods)
         -25 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[System.Numerics.Vector`1[float]]:Set(int,System.Numerics.Vector`1[float]):this (FullOpts) (1 base, 0 diff methods)
         -10 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+ArgumentData`1[ubyte]:Set(int,ubyte):this (FullOpts) (1 base, 0 diff methods)
         -14 (-5.93 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
         -32 (-1.71 % of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
         -11 (-1.25 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
          -7 (-0.79 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:InvokeResolveEvent(System.ResolveEventHandler,System.Reflection.RuntimeAssembly,System.String):System.Reflection.RuntimeAssembly (FullOpts)

22 total methods with Code Size differences (13 improved, 9 regressed), 239666 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Mar 14, 2024

Top method improvements

-32 (-1.71 % of base) - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object
 ; Assembly listing for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (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; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 10 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T13] (  7,  6.98)     ref  ->  r14         class-hnd single-def <System.IServiceProvider>
-;  V01 arg1         [V01,T11] (  8,  7.48)     ref  ->  r15         class-hnd single-def <System.Type>
-;  V02 arg2         [V02,T09] ( 11, 13.77)     ref  ->  rbx         class-hnd single-def <System.Object[]>
+;  V00 arg0         [V00,T14] (  7,  6.98)     ref  ->  r14         class-hnd single-def <System.IServiceProvider>
+;  V01 arg1         [V01,T12] (  8,  7.48)     ref  ->  r15         class-hnd single-def <System.Type>
+;  V02 arg2         [V02,T08] ( 11, 13.77)     ref  ->  rbx         class-hnd single-def <System.Object[]>
 ;  V03 loc0         [V03    ] ( 17, 43.96)  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+<>c__DisplayClass4_0>
-;* V04 loc1         [V04    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
-;  V05 loc2         [V05    ] (  2,  1.50)  struct (64) [rbp-0x70]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
-;  V06 loc3         [V06,T17] (  7,  5.50)     int  ->  r13         single-def
+;  V04 loc1         [V04    ] (  2,  1.50)  struct (64) [rbp-0x70]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+StackAllocatedObjects>
+;  V05 loc2         [V05,T19] (  5,  4.50)     int  ->  r13         single-def
+;* V06 loc3         [V06    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
 ;* V07 loc4         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[System.Object]>
 ;* V08 loc5         [V08    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.Object]>
 ;  V09 loc6         [V09    ] ( 16, 31.40)  struct (24) [rbp-0x88]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
 ;  V10 loc7         [V10,T00] ( 10, 26.94)     ref  ->  [rbp-0xE8]  class-hnd <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
 ;  V11 loc8         [V11,T18] (  4,  6.50)     ref  ->  [rbp-0xF0]  class-hnd spill-single-def <Microsoft.Extensions.DependencyInjection.IServiceProviderIsService>
-;  V12 loc9         [V12,T15] (  6,  7.48)     ref  ->  [rbp-0xF8]  class-hnd <System.Type[]>
+;  V12 loc9         [V12,T16] (  6,  7.48)     ref  ->  [rbp-0xF8]  class-hnd <System.Type[]>
 ;  V13 loc10        [V13    ] (  2,  3.96)     ref  ->  [rbp-0x90]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.ConstructorInfo>
 ;  V14 loc11        [V14    ] (  2,  3.96)     ref  ->  [rbp-0x98]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Nullable`1[int][]>
-;  V15 loc12        [V15,T12] (  6,  9   )     int  ->  [rbp-0x9C] 
+;  V15 loc12        [V15,T13] (  6,  9   )     int  ->  [rbp-0x9C] 
 ;  V16 loc13        [V16    ] (  5,  7   )  struct (24) [rbp-0xB8]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher>
-;  V17 loc14        [V17,T20] (  4,  5   )   ubyte  ->  [rbp-0xBC] 
-;  V18 loc15        [V18,T34] (  2,  1   )     int  ->  rsi        
-;  V19 loc16        [V19,T36] (  2,  1   )     int  ->  rsi        
-;* V20 loc17        [V20,T39] (  0,  0   )     int  ->  zero-ref   
+;  V17 loc14        [V17,T21] (  4,  5   )   ubyte  ->  [rbp-0xBC] 
+;  V18 loc15        [V18,T30] (  2,  1   )     int  ->  rsi        
+;  V19 loc16        [V19,T33] (  2,  1   )     int  ->  rsi        
+;* V20 loc17        [V20,T37] (  0,  0   )     int  ->  zero-ref   
 ;  V21 loc18        [V21,T10] (  4, 12   )     int  ->  rax        
 ;  V22 loc19        [V22,T03] ( 12, 20.54)     int  ->  [rbp-0xC0] 
 ;# V23 OutArgs      [V23    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V24 tmp1         [V24,T05] (  6, 20   )     ref  ->  rdi         class-hnd "dup spill" <System.Object>
-;* V25 tmp2         [V25    ] (  0,  0   )     ref  ->  zero-ref   
-;* V26 tmp3         [V26    ] (  0,  0   )     int  ->  zero-ref   
-;* V27 tmp4         [V27    ] (  0,  0   )     ref  ->  zero-ref   
+;* V24 tmp1         [V24    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
+;  V25 tmp2         [V25,T05] (  6, 20   )     ref  ->  rdi         class-hnd "dup spill" <System.Object>
+;* V26 tmp3         [V26    ] (  0,  0   )     ref  ->  zero-ref   
+;* V27 tmp4         [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp5         [V28    ] (  0,  0   )     ref  ->  zero-ref   
-;* V29 tmp6         [V29    ] (  0,  0   )     int  ->  zero-ref   
-;  V30 tmp7         [V30,T14] (  6,  8   )     ref  ->  [rbp-0x100] 
-;  V31 tmp8         [V31,T40] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V32 tmp9         [V32,T44] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impImportAndPushBox" <System.String>
-;  V33 tmp10        [V33,T41] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;  V34 tmp11        [V34,T42] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;  V35 tmp12        [V35,T43] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
-;* V36 tmp13        [V36    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V37 tmp14        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V38 tmp15        [V38    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V39 tmp16        [V39,T28] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Object[]>
-;  V40 tmp17        [V40,T29] (  3,  3   )     int  ->  rdi         "Inlining Arg"
-;* V41 tmp18        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;* V42 tmp19        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V43 tmp20        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
-;  V44 tmp21        [V44,T23] (  2,  4   )   byref  ->  rdx         single-def "Inlining Arg"
-;  V45 tmp22        [V45,T25] (  2,  4   )     int  ->  rax         "Inlining Arg"
-;* V46 tmp23        [V46    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;* V47 tmp24        [V47    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;* V48 tmp25        [V48    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
-;* V49 tmp26        [V49    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V50 tmp27        [V50    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V51 tmp28        [V51,T26] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V52 tmp29        [V52,T08] (  4, 16   )    long  ->  rdx         "Inlining Arg"
-;* V53 tmp30        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
-;* V54 tmp31        [V54    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
-;  V55 tmp32        [V55    ] ( 17, 43.96)     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
-;  V56 tmp33        [V56,T30] (  3,  2   )   byref  ->  r12         "field V04._reference (fldOffset=0x0)" P-INDEP
-;  V57 tmp34        [V57,T27] (  4,  3   )     int  ->  rax         "field V04._length (fldOffset=0x8)" P-INDEP
-;  V58 tmp35        [V58,T07] ( 10, 18.96)   byref  ->  r12         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V59 tmp36        [V59,T06] ( 10, 17.96)     int  ->  r13         single-def "field V07._length (fldOffset=0x8)" P-INDEP
-;  V60 tmp37        [V60,T16] (  4,  7   )   byref  ->  [rbp-0x108]  spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V61 tmp38        [V61,T21] (  3,  5   )     int  ->  [rbp-0xC4]  spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
-;  V62 tmp39        [V62,T35] (  2,  1   )   byref  ->  r12         single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;  V63 tmp40        [V63,T37] (  2,  1   )     int  ->  rax         single-def "field V37._length (fldOffset=0x8)" P-INDEP
-;  V64 tmp41        [V64,T31] (  2,  2   )   byref  ->  r12         single-def "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V65 tmp42        [V65,T38] (  0,  0   )     int  ->  zero-ref    single-def "field V41._length (fldOffset=0x8)" P-INDEP
-;  V66 tmp43        [V66,T32] (  2,  2   )   byref  ->  rdx         single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;  V67 tmp44        [V67,T33] (  2,  2   )     int  ->  rax         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;* V68 tmp45        [V68    ] (  0,  0   )   byref  ->  zero-ref    "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V69 tmp46        [V69    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
-;* V70 tmp47        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp48        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
-;* V72 tmp49        [V72    ] (  0,  0   )   byref  ->  zero-ref    "field V48._reference (fldOffset=0x0)" P-INDEP
-;* V73 tmp50        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x8)" P-INDEP
-;* V74 tmp51        [V74    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp52        [V75    ] (  0,  0   )     int  ->  zero-ref    single-def "field V54._length (fldOffset=0x8)" P-INDEP
-;  V76 tmp53        [V76,T24] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
-;  V77 tmp54        [V77,T45] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V78 tmp55        [V78,T46] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V79 tmp56        [V79,T47] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V80 cse0         [V80,T22] (  3,  4   )    long  ->  [rbp-0xD0]  spill-single-def "CSE #03: conservative"
-;  V81 cse1         [V81,T19] (  5,  5.25)     int  ->  [rbp-0xD4]  spill-single-def "CSE #07: moderate"
-;  V82 rat0         [V82,T01] (  7, 21   )    long  ->  rsi         "Widened IV V18"
-;  V83 rat1         [V83,T04] (  6, 20.50)    long  ->  [rbp-0xE0]  "Widened IV V20"
-;  V84 rat2         [V84,T02] (  7, 21   )    long  ->  rsi         "Widened IV V19"
+;* V29 tmp6         [V29    ] (  0,  0   )     ref  ->  zero-ref   
+;* V30 tmp7         [V30    ] (  0,  0   )     int  ->  zero-ref   
+;  V31 tmp8         [V31,T15] (  6,  8   )     ref  ->  [rbp-0x100] 
+;  V32 tmp9         [V32,T39] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V33 tmp10        [V33,T43] (  2,  0   )     ref  ->  r14         class-hnd exact single-def "impImportAndPushBox" <System.String>
+;  V34 tmp11        [V34,T40] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+;  V35 tmp12        [V35,T41] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+;  V36 tmp13        [V36,T42] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
+;  V37 tmp14        [V37,T26] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <System.Object[]>
+;* V38 tmp15        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V39 tmp16        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V40 tmp17        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V41 tmp18        [V41    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V42 tmp19        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Object]>
+;* V43 tmp20        [V43    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V44 tmp21        [V44    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;* V45 tmp22        [V45    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;* V46 tmp23        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.Object]>
+;* V47 tmp24        [V47    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V48 tmp25        [V48    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V49 tmp26        [V49,T24] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V50 tmp27        [V50,T07] (  4, 16   )    long  ->  rdx         "Inlining Arg"
+;* V51 tmp28        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx>
+;* V52 tmp29        [V52    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Span`1[System.Object]>
+;  V53 tmp30        [V53    ] ( 17, 43.96)     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03.constructors (fldOffset=0x0)" P-DEP
+;* V54 tmp31        [V54    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp32        [V55    ] (  0,  0   )     int  ->  zero-ref    single-def "field V06._length (fldOffset=0x8)" P-INDEP
+;  V56 tmp33        [V56,T06] ( 10, 18.96)   byref  ->  r12         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V57 tmp34        [V57,T09] ( 10, 11.96)     int  ->  r13         single-def "field V07._length (fldOffset=0x8)" P-INDEP
+;  V58 tmp35        [V58,T17] (  4,  7   )   byref  ->  [rbp-0x108]  spill-single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V59 tmp36        [V59,T11] (  3,  9   )     int  ->  [rbp-0xC4]  spill-single-def "field V08._length (fldOffset=0x8)" P-INDEP
+;  V60 tmp37        [V60,T27] (  3,  2   )   byref  ->  r12         "field V24._reference (fldOffset=0x0)" P-INDEP
+;  V61 tmp38        [V61,T25] (  4,  3   )     int  ->  rdi         "field V24._length (fldOffset=0x8)" P-INDEP
+;  V62 tmp39        [V62,T31] (  2,  1   )   byref  ->  r12         "field V38._reference (fldOffset=0x0)" P-INDEP
+;  V63 tmp40        [V63,T34] (  2,  1   )     int  ->  rdi         "field V38._length (fldOffset=0x8)" P-INDEP
+;  V64 tmp41        [V64,T32] (  2,  1   )   byref  ->  r12         single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp42        [V65,T38] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
+;  V66 tmp43        [V66,T28] (  2,  2   )   byref  ->  r12         single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V67 tmp44        [V67,T35] (  0,  0   )     int  ->  zero-ref    single-def "field V40._length (fldOffset=0x8)" P-INDEP
+;  V68 tmp45        [V68,T29] (  2,  2   )   byref  ->  rcx         single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp46        [V69,T36] (  0,  0   )     int  ->  zero-ref    single-def "field V42._length (fldOffset=0x8)" P-INDEP
+;* V70 tmp47        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp48        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V44._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp49        [V72    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp50        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp51        [V74    ] (  0,  0   )   byref  ->  zero-ref    "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp52        [V75    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp53        [V76    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V52._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp54        [V77    ] (  0,  0   )     int  ->  zero-ref    single-def "field V52._length (fldOffset=0x8)" P-INDEP
+;  V78 tmp55        [V78,T23] (  2,  4   )     ref  ->  rsi         single-def "argument with side effect"
+;  V79 tmp56        [V79,T44] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V80 tmp57        [V80,T45] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V81 tmp58        [V81,T46] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V82 cse0         [V82,T22] (  3,  4   )    long  ->  [rbp-0xD0]  spill-single-def "CSE #02: conservative"
+;  V83 cse1         [V83,T20] (  5,  5.25)     int  ->  [rbp-0xD4]  spill-single-def "CSE #06: moderate"
+;  V84 rat0         [V84,T01] (  7, 21   )    long  ->  rsi         "Widened IV V18"
+;  V85 rat1         [V85,T04] (  6, 20.50)    long  ->  [rbp-0xE0]  "Widened IV V20"
+;  V86 rat2         [V86,T02] (  7, 21   )    long  ->  rsi         "Widened IV V19"
 ;
 ; Lcl frame size = 232
 
 G_M32498_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 232
        lea      rbp, [rsp+0x110]
        xor      eax, eax
        mov      qword ptr [rbp-0xB8], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0xB0], ymm8
        vmovdqu  ymmword ptr [rbp-0x90], ymm8
        vmovdqu  ymmword ptr [rbp-0x70], ymm8
        vmovdqu  ymmword ptr [rbp-0x50], ymm8
        mov      qword ptr [rbp-0x30], rax
        mov      r14, rdi
        mov      r15, rsi
        mov      rbx, rdx
 						;; size=78 bbWeight=1 PerfScore 18.08
 G_M32498_IG02:
        test     r14, r14
        je       G_M32498_IG42
        mov      rdi, r15
        mov      rax, qword ptr [r15]
        mov      rax, qword ptr [rax+0x70]
        call     [rax+0x18]System.Type:GetAttributeFlagsImpl():int:this
        test     al, 128
        jne      G_M32498_IG43
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        lea      rdx, [rbp-0x30]
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        call     [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        test     eax, eax
        jne      SHORT G_M32498_IG04
 						;; size=66 bbWeight=1 PerfScore 17.25
 G_M32498_IG03:
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:GetOrAddConstructors(System.Type):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]
        mov      gword ptr [rbp-0x30], rax
 						;; size=19 bbWeight=0.50 PerfScore 2.25
 G_M32498_IG04:
        vxorps   ymm0, ymm0, ymm0
        vmovdqu  ymmword ptr [rbp-0x70], ymm0
        vmovdqu  ymmword ptr [rbp-0x50], ymm0
        lea      rdi, [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:<CreateInstance>g__GetMaxArgCount|4_0(byref):int
        mov      r13d, eax
        cmp      r13d, 4
-       jg       SHORT G_M32498_IG06
+       jle      SHORT G_M32498_IG06
 						;; size=39 bbWeight=1 PerfScore 7.58
 G_M32498_IG05:
-       lea      r12, bword ptr [rbp-0x70]
-       lea      eax, [r13+r13]
-       jmp      SHORT G_M32498_IG07
-       align    [0 bytes for IG09]
-						;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M32498_IG06:
        lea      esi, [r13+r13]
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       lea      edi, [r13+r13]
-       cmp      dword ptr [rax+0x08], edi
-       jb       G_M32498_IG44
        lea      r12, bword ptr [rax+0x10]
-       mov      eax, edi
-						;; size=43 bbWeight=0.50 PerfScore 5.12
+       mov      edi, dword ptr [rax+0x08]
+       jmp      SHORT G_M32498_IG07
+       align    [0 bytes for IG09]
+						;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M32498_IG06:
+       lea      r12, bword ptr [rbp-0x70]
+       mov      edi, 8
+						;; size=9 bbWeight=0.50 PerfScore 0.38
 G_M32498_IG07:
-       cmp      r13d, eax
+       cmp      r13d, edi
+       ja       G_M32498_IG44
+       mov      r11d, r13d
+       mov      esi, r13d
+       add      r11, rsi
+       mov      edi, edi
+       cmp      r11, rdi
        ja       G_M32498_IG44
-       mov      ecx, r13d
-       shl      rcx, 3
-       mov      qword ptr [rbp-0xD0], rcx
-       lea      rdx, bword ptr [r12+rcx]
-       sub      eax, r13d
-       mov      bword ptr [rbp-0x108], rdx
-       mov      dword ptr [rbp-0xC4], eax
+       mov      eax, r13d
+       shl      rax, 3
+       mov      qword ptr [rbp-0xD0], rax
+       lea      rcx, bword ptr [r12+rax]
+       mov      bword ptr [rbp-0x108], rcx
+       mov      dword ptr [rbp-0xC4], r13d
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x88], xmm0
        vmovdqu  xmmword ptr [rbp-0x80], xmm0
        mov      rdi, r14
        mov      r11, 0xD1FFAB1E      ; code for System.IServiceProvider:GetService(System.Type):System.Object:this
        mov      rsi, 0xD1FFAB1E      ; 'Microsoft.Extensions.DependencyInjection.IServiceProviderIsServ'
 
        call     [r11]System.IServiceProvider:GetService(System.Type):System.Object:this
        mov      rsi, rax
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyInjection.IServiceProviderIsService
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTINTERFACE
        call     [rax]CORINFO_HELP_CHKCASTINTERFACE
        mov      gword ptr [rbp-0xF0], rax
        test     rax, rax
        je       G_M32498_IG26
-						;; size=127 bbWeight=1 PerfScore 17.83
+						;; size=145 bbWeight=1 PerfScore 19.83
 G_M32498_IG08:
        xor      esi, esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], 0
        jle      SHORT G_M32498_IG10
 						;; size=12 bbWeight=0.50 PerfScore 2.62
 G_M32498_IG09:
        mov      rdi, gword ptr [rbp-0x30]
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M32498_IG41
        mov      rdi, gword ptr [rbp-0x30]
        mov      rcx, gword ptr [rdi+8*rsi+0x10]
        cmp      byte  ptr [rcx+0x28], 0
        jne      G_M32498_IG22
        inc      esi
        mov      rcx, gword ptr [rbp-0x30]
        cmp      dword ptr [rcx+0x08], esi
        jg       SHORT G_M32498_IG09
 						;; size=43 bbWeight=4 PerfScore 69.00
 G_M32498_IG10:
        mov      dword ptr [rbp-0x9C], -1
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0xB8], xmm0
        vmovdqu  xmmword ptr [rbp-0xB0], xmm0
        xor      edx, edx
        mov      dword ptr [rbp-0xBC], edx
        xor      r8d, r8d
        mov      rsi, gword ptr [rbp-0x30]
        cmp      dword ptr [rsi+0x08], 0
        jle      G_M32498_IG13
 						;; size=55 bbWeight=0.50 PerfScore 4.92
 G_M32498_IG11:
        mov      rsi, gword ptr [rbp-0x30]
        cmp      r8d, dword ptr [rsi+0x08]
        jae      G_M32498_IG41
        mov      rsi, gword ptr [rbp-0x30]
        mov      qword ptr [rbp-0xE0], r8
        mov      rsi, gword ptr [rsi+8*r8+0x10]
        mov      r9, rsi
        mov      gword ptr [rbp-0xE8], r9
        mov      rsi, gword ptr [r9+0x10]
        mov      esi, dword ptr [rsi+0x08]
-       mov      esi, r13d
+       mov      esi, dword ptr [rbp-0xC4]
        mov      rdi, r12
-       mov      r10, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
-       call     [r10]System.SpanHelpers:ClearWithReferences(byref,ulong)
+       mov      r11, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
+       call     [r11]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      rax, gword ptr [rbp-0xE8]
        mov      gword ptr [rbp-0x88], rax
        mov      bword ptr [rbp-0x80], r12
-       mov      dword ptr [rbp-0x78], r13d
+       mov      eax, dword ptr [rbp-0xC4]
+       mov      dword ptr [rbp-0x78], eax
        lea      rdi, [rbp-0x88]
        mov      rsi, rbx
        mov      rdx, gword ptr [rbp-0xF0]
-       mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
-       call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+       mov      rcx, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
+       call     [rcx]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        mov      ecx, dword ptr [rbp-0x9C]
        cmp      ecx, eax
-       jge      G_M32498_IG16
-						;; size=131 bbWeight=4 PerfScore 117.00
+       jge      SHORT G_M32498_IG16
+						;; size=135 bbWeight=4 PerfScore 124.00
 G_M32498_IG12:
        mov      dword ptr [rbp-0x9C], eax
-       cmp      r13d, dword ptr [rbp-0xC4]
-       ja       G_M32498_IG48
-       mov      r9, qword ptr [rbp-0xD0]
-       mov      rdx, r9
+       mov      r8, qword ptr [rbp-0xD0]
+       mov      rdx, r8
        cmp      rdx, 0x4000
        ja       SHORT G_M32498_IG14
        mov      rdi, bword ptr [rbp-0x108]
        mov      rsi, r12
        call     System.Buffer:__BulkMoveWithWriteBarrier(byref,byref,ulong)
        jmp      SHORT G_M32498_IG15
-						;; size=55 bbWeight=2 PerfScore 21.50
+						;; size=42 bbWeight=2 PerfScore 15.50
 G_M32498_IG13:
-       mov      edx, dword ptr [rbp-0xBC]
+       mov      edi, dword ptr [rbp-0xBC]
        jmp      SHORT G_M32498_IG18
        align    [0 bytes for IG23]
 						;; size=8 bbWeight=0.25 PerfScore 0.75
 G_M32498_IG14:
        mov      rdi, bword ptr [rbp-0x108]
        mov      rsi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
        call     [rax]System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
 						;; size=22 bbWeight=2 PerfScore 9.00
 G_M32498_IG15:
        mov      rsi, gword ptr [rbp-0x88]
        mov      gword ptr [rbp-0xB8], rsi
        mov      rsi, bword ptr [rbp-0x108]
        mov      bword ptr [rbp-0xB0], rsi
-       mov      edi, dword ptr [rbp-0xC4]
-       mov      dword ptr [rbp-0xA8], edi
+       mov      dword ptr [rbp-0xA8], r13d
        xor      edx, edx
+       xor      edi, edi
        jmp      SHORT G_M32498_IG17
-						;; size=44 bbWeight=2 PerfScore 16.50
+						;; size=41 bbWeight=2 PerfScore 15.00
 G_M32498_IG16:
        cmp      ecx, eax
-       mov      edx, dword ptr [rbp-0xBC]
+       mov      edi, dword ptr [rbp-0xBC]
        jne      SHORT G_M32498_IG21
-       mov      edx, 1
+       mov      edi, 1
        mov      dword ptr [rbp-0x9C], ecx
        mov      rsi, bword ptr [rbp-0x108]
-       mov      edi, dword ptr [rbp-0xC4]
-						;; size=34 bbWeight=2 PerfScore 11.00
+						;; size=28 bbWeight=2 PerfScore 9.00
 G_M32498_IG17:
        mov      r8, qword ptr [rbp-0xE0]
        inc      r8d
        mov      rax, gword ptr [rbp-0x30]
        cmp      dword ptr [rax+0x08], r8d
        jg       SHORT G_M32498_IG20
 						;; size=20 bbWeight=4 PerfScore 25.00
 G_M32498_IG18:
        cmp      dword ptr [rbp-0x9C], -1
        je       G_M32498_IG26
-       test     edx, edx
+       test     edi, edi
        jne      G_M32498_IG45
        lea      rdi, [rbp-0xB8]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=44 bbWeight=0.50 PerfScore 4.25
 G_M32498_IG19:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=0.50 PerfScore 2.12
 G_M32498_IG20:
-       mov      dword ptr [rbp-0xBC], edx
+       mov      dword ptr [rbp-0xBC], edi
        jmp      G_M32498_IG11
 						;; size=11 bbWeight=2 PerfScore 6.00
 G_M32498_IG21:
        mov      dword ptr [rbp-0x9C], ecx
        mov      rsi, bword ptr [rbp-0x108]
-       mov      edi, dword ptr [rbp-0xC4]
        jmp      SHORT G_M32498_IG17
-						;; size=21 bbWeight=1 PerfScore 5.00
+						;; size=15 bbWeight=1 PerfScore 4.00
 G_M32498_IG22:
        inc      esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], esi
        jle      SHORT G_M32498_IG24
 						;; size=11 bbWeight=0.50 PerfScore 2.62
 G_M32498_IG23:
        mov      rdi, gword ptr [rbp-0x30]
        cmp      esi, dword ptr [rdi+0x08]
        jae      G_M32498_IG41
        mov      rdi, gword ptr [rbp-0x30]
        mov      rdi, gword ptr [rdi+8*rsi+0x10]
        cmp      byte  ptr [rdi+0x28], 0
        jne      G_M32498_IG47
        inc      esi
        mov      rdi, gword ptr [rbp-0x30]
        cmp      dword ptr [rdi+0x08], esi
        jg       SHORT G_M32498_IG23
 						;; size=43 bbWeight=4 PerfScore 69.00
 G_M32498_IG24:
        mov      gword ptr [rbp-0xE8], rcx
        mov      rsi, gword ptr [rcx+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      esi, r13d
        mov      rdi, r12
        mov      rdx, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
        call     [rdx]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      r15, gword ptr [rbp-0xE8]
        mov      gword ptr [rbp-0x88], r15
        mov      bword ptr [rbp-0x80], r12
        mov      dword ptr [rbp-0x78], r13d
        lea      rdi, [rbp-0x88]
        mov      rsi, rbx
        mov      rdx, gword ptr [rbp-0xF0]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:Match(System.Object[],Microsoft.Extensions.DependencyInjection.IServiceProviderIsService):int:this
        cmp      eax, -1
        je       G_M32498_IG46
        lea      rdi, [rbp-0x88]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=115 bbWeight=0.50 PerfScore 11.62
 G_M32498_IG25:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=0.50 PerfScore 2.12
 G_M32498_IG26:
        cmp      dword ptr [rbx+0x08], 0
        jne      SHORT G_M32498_IG27
        mov      rax, 0xD1FFAB1E      ; 'System.Type[]'
 
        jmp      G_M32498_IG38
 						;; size=21 bbWeight=0.50 PerfScore 3.12
 G_M32498_IG27:
        mov      esi, dword ptr [rbx+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Type[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        xor      ecx, ecx
        mov      gword ptr [rbp-0xF8], rax
        mov      edx, dword ptr [rax+0x08]
        mov      dword ptr [rbp-0xD4], edx
        test     edx, edx
        mov      rax, gword ptr [rbp-0xF8]
        jle      G_M32498_IG38
 						;; size=51 bbWeight=0.50 PerfScore 4.88
 G_M32498_IG28:
        cmp      dword ptr [rbx+0x08], edx
        jl       SHORT G_M32498_IG34
 						;; size=5 bbWeight=0.25 PerfScore 1.00
 G_M32498_IG29:
        mov      dword ptr [rbp-0xC0], ecx
        mov      edi, ecx
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        test     rdi, rdi
        jne      SHORT G_M32498_IG31
 						;; size=18 bbWeight=3.96 PerfScore 17.82
 G_M32498_IG30:
        xor      rsi, rsi
        mov      gword ptr [rbp-0x100], rsi
        jmp      SHORT G_M32498_IG32
 						;; size=11 bbWeight=1.98 PerfScore 6.44
 G_M32498_IG31:
        mov      gword ptr [rbp-0xF8], rax
        call     System.Object:GetType():System.Type:this
        mov      gword ptr [rbp-0x100], rax
        mov      rax, gword ptr [rbp-0xF8]
 						;; size=26 bbWeight=1.98 PerfScore 7.92
 G_M32498_IG32:
        movsxd   rsi, dword ptr [rbp-0xC0]
        mov      gword ptr [rbp-0xF8], rax
        mov      rdi, rax
        mov      rdx, gword ptr [rbp-0x100]
        call     CORINFO_HELP_ARRADDR_ST
        mov      ecx, dword ptr [rbp-0xC0]
        inc      ecx
        cmp      dword ptr [rbp-0xD4], ecx
        mov      rax, gword ptr [rbp-0xF8]
        jg       SHORT G_M32498_IG29
 						;; size=52 bbWeight=3.96 PerfScore 45.54
 G_M32498_IG33:
        jmp      G_M32498_IG38
 						;; size=5 bbWeight=1.98 PerfScore 3.96
 G_M32498_IG34:
        cmp      ecx, dword ptr [rbx+0x08]
        jae      G_M32498_IG41
        mov      dword ptr [rbp-0xC0], ecx
        mov      edi, ecx
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        test     rdi, rdi
        jne      SHORT G_M32498_IG36
 						;; size=27 bbWeight=0.04 PerfScore 0.34
 G_M32498_IG35:
        xor      rdi, rdi
        xor      rsi, rsi
        mov      gword ptr [rbp-0x100], rsi
        jmp      SHORT G_M32498_IG37
 						;; size=13 bbWeight=0.02 PerfScore 0.07
 G_M32498_IG36:
        mov      gword ptr [rbp-0xF8], rax
        call     System.Object:GetType():System.Type:this
        mov      gword ptr [rbp-0x100], rax
        mov      rax, gword ptr [rbp-0xF8]
 						;; size=26 bbWeight=0.02 PerfScore 0.08
 G_M32498_IG37:
        movsxd   rsi, dword ptr [rbp-0xC0]
        mov      gword ptr [rbp-0xF8], rax
        mov      rdi, rax
        mov      rdx, gword ptr [rbp-0x100]
        call     CORINFO_HELP_ARRADDR_ST
        mov      r8d, dword ptr [rbp-0xC0]
        inc      r8d
        mov      ecx, dword ptr [rbp-0xD4]
        cmp      ecx, r8d
        mov      rax, gword ptr [rbp-0xF8]
        jg       G_M32498_IG40
 						;; size=61 bbWeight=0.04 PerfScore 0.43
 G_M32498_IG38:
        lea      r8, [rbp-0x98]
        lea      rcx, [rbp-0x90]
        mov      rdi, r15
        mov      rsi, rax
        mov      rdx, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindApplicableConstructor(System.Type,System.Type[],Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[],byref,byref)
        mov      rdi, gword ptr [rbp-0x90]
        mov      rsi, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:FindConstructorEx(System.Reflection.ConstructorInfo,Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx[]):Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx
        mov      r15, rax
        mov      rsi, gword ptr [r15+0x10]
        mov      esi, dword ptr [rsi+0x08]
        mov      esi, r13d
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:ClearWithReferences(byref,ulong)
        call     [rax]System.SpanHelpers:ClearWithReferences(byref,ulong)
        mov      gword ptr [rbp-0x88], r15
        mov      bword ptr [rbp-0x80], r12
        mov      dword ptr [rbp-0x78], r13d
        lea      rdi, [rbp-0x88]
        mov      rsi, gword ptr [rbp-0x98]
        mov      rdx, rbx
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this
        lea      rdi, [rbp-0x88]
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:CreateInstance(System.IServiceProvider):System.Object:this
        nop      
 						;; size=154 bbWeight=1.98 PerfScore 61.87
 G_M32498_IG39:
        add      rsp, 232
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1.98 PerfScore 8.42
 G_M32498_IG40:
        mov      ecx, r8d
        jmp      G_M32498_IG34
 						;; size=8 bbWeight=0.02 PerfScore 0.05
 G_M32498_IG41:
        call     CORINFO_HELP_RNGCHKFAIL
 						;; size=5 bbWeight=0 PerfScore 0.00
 G_M32498_IG42:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentNullException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      edi, 945
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:.ctor(System.String):this
        call     [rax]System.ArgumentNullException:.ctor(System.String):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
 						;; size=64 bbWeight=0 PerfScore 0.00
 G_M32498_IG43:
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_CannotCreateAbstractClasses():System.String
        call     [rax]System.SR:get_CannotCreateAbstractClasses():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
        call     [rax]System.InvalidOperationException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
 						;; size=56 bbWeight=0 PerfScore 0.00
 G_M32498_IG44:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M32498_IG45:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_MultipleCtorsFoundWithBestLength():System.String
        call     [rax]System.SR:get_MultipleCtorsFoundWithBestLength():System.String
        mov      r14, rax
        mov      r13d, dword ptr [rbp-0x9C]
        mov      dword ptr [rbx+0x08], r13d
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdx, rbx
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object,System.Object):System.String
        mov      rsi, rax
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
        call     [rax]System.InvalidOperationException:.ctor(System.String):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
 						;; size=109 bbWeight=0 PerfScore 0.00
 G_M32498_IG46:
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMarkedCtorDoesNotTakeAllProvidedArguments()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M32498_IG47:
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
        call     [rax]Microsoft.Extensions.DependencyInjection.ActivatorUtilities:ThrowMultipleCtorsMarkedWithAttributeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M32498_IG48:
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       call     [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
-       int3     
-						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1870, prolog size 78, PerfScore 612.35, instruction count 406, allocated bytes for code 1873 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
+; Total bytes of code 1838, prolog size 78, PerfScore 607.85, instruction count 402, allocated bytes for code 1845 (MethodHash=9f15810d) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:CreateInstance(System.IServiceProvider,System.Type,System.Object[]):System.Object (FullOpts)
-14 (-5.93 % of base) - System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this
 ; Assembly listing for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long: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; 4 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T10] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Runtime.Loader.AssemblyLoadContext>
 ;  V01 arg1         [V01,T07] (  3,  4   )     ref  ->  rbx         class-hnd single-def <System.Reflection.Assembly>
 ;  V02 arg2         [V02,T08] (  3,  4   )     ref  ->  r15         class-hnd single-def <System.String>
 ;  V03 loc0         [V03    ] (  8, 33   )  struct (24) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;* V04 loc1         [V04    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;  V05 loc2         [V05,T09] (  3,  6   )     ref  ->  rax         class-hnd <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;  V06 loc3         [V06,T11] (  3,  4.50)    long  ->  rax        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T12] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;* V09 tmp2         [V09    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <System.Delegate+InvocationListEnumerator`1[System.Func`3[System.Reflection.Assembly,System.String,long]]>
 ;* V10 tmp3         [V10,T06] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V11 tmp4         [V11,T01] (  6, 34   )     int  ->  r14         "Inline stloc first use temp"
 ;  V12 tmp5         [V12,T00] (  5, 84   )     ref  ->  r13         class-hnd "dup spill" <System.MulticastDelegate>
 ;  V13 tmp6         [V13,T04] (  2, 16   )   byref  ->  r12        
 ;* V14 tmp7         [V14    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V15 tmp8         [V15    ] (  0,  0   )   byref  ->  zero-ref   
 ;  V16 tmp9         [V16,T02] (  4, 20   )     ref  ->  rax        
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;* V18 tmp11        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Func`3[System.Reflection.Assembly,System.String,long]>
 ;  V19 tmp12        [V19,T03] (  4, 20   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Object>
 ;  V20 tmp13        [V20,T05] (  4,  8   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object[]>
 ;* V21 tmp14        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V22 tmp15        [V22    ] (  3, 17   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._delegate (fldOffset=0x0)" P-DEP
 ;  V23 tmp16        [V23    ] (  3, 11   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._current (fldOffset=0x8)" P-DEP
 ;  V24 tmp17        [V24    ] (  4, 21   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x10)" P-DEP
 ;* V25 tmp18        [V25    ] (  0,  0   )     ref  ->  zero-ref    "field V04._delegate (fldOffset=0x0)" P-INDEP
 ;* V26 tmp19        [V26    ] (  0,  0   )     ref  ->  zero-ref    "field V04._current (fldOffset=0x8)" P-INDEP
 ;* V27 tmp20        [V27    ] (  0,  0   )     int  ->  zero-ref    "field V04._index (fldOffset=0x10)" P-INDEP
 ;  V28 tmp21        [V28,T13] (  2,  2   )     ref  ->  rsi         single-def "field V09._delegate (fldOffset=0x0)" P-INDEP
 ;* V29 tmp22        [V29,T14] (  0,  0   )     ref  ->  zero-ref    single-def "field V09._current (fldOffset=0x8)" P-INDEP
 ;* V30 tmp23        [V30,T15] (  0,  0   )     int  ->  zero-ref    "field V09._index (fldOffset=0x10)" P-INDEP
 ;
 ; Lcl frame size = 24
 
 G_M27358_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        vxorps   xmm8, xmm8, xmm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rsi
        mov      r15, rdx
 						;; size=41 bbWeight=1 PerfScore 10.83
 G_M27358_IG02:
        mov      rsi, gword ptr [rdi+0x10]
        mov      gword ptr [rbp-0x40], rsi
        xor      rsi, rsi
        mov      gword ptr [rbp-0x38], rsi
        mov      dword ptr [rbp-0x30], -1
        jmp      SHORT G_M27358_IG04
 						;; size=23 bbWeight=1 PerfScore 7.25
 G_M27358_IG03:
        mov      rax, gword ptr [rbp-0x38]
        mov      rsi, rbx
        mov      rdx, r15
        mov      rdi, gword ptr [rax+0x08]
        call     [rax+0x18]System.Func`3[System.__Canon,System.__Canon,long]:Invoke(System.__Canon,System.__Canon):long:this
        test     rax, rax
-       jne      G_M27358_IG15
-						;; size=26 bbWeight=2 PerfScore 15.50
+       jne      SHORT G_M27358_IG15
+						;; size=22 bbWeight=2 PerfScore 15.50
 G_M27358_IG04:
        mov      r14d, dword ptr [rbp-0x30]
        inc      r14d
        mov      r13, gword ptr [rbp-0x40]
        lea      r12, bword ptr [rbp-0x40]
        test     r13, r13
        jne      SHORT G_M27358_IG06
 						;; size=20 bbWeight=8 PerfScore 32.00
 G_M27358_IG05:
        xor      rax, rax
        jmp      SHORT G_M27358_IG11
 						;; size=4 bbWeight=2 PerfScore 4.50
 G_M27358_IG06:
        mov      rsi, gword ptr [r13+0x28]
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFARRAY
-       call     [rax]CORINFO_HELP_ISINSTANCEOFARRAY
+       call     CORINFO_HELP_ISINSTANCEOFARRAY
        test     rax, rax
        jne      SHORT G_M27358_IG09
        test     r14d, r14d
        je       SHORT G_M27358_IG08
-						;; size=36 bbWeight=2 PerfScore 16.00
+						;; size=29 bbWeight=2 PerfScore 11.50
 G_M27358_IG07:
        xor      rax, rax
        jmp      SHORT G_M27358_IG11
 						;; size=4 bbWeight=8 PerfScore 18.00
 G_M27358_IG08:
        mov      rax, r13
        jmp      SHORT G_M27358_IG11
 						;; size=5 bbWeight=8 PerfScore 18.00
 G_M27358_IG09:
        cmp      r14d, dword ptr [r13+0x30]
        jae      SHORT G_M27358_IG07
 						;; size=6 bbWeight=16 PerfScore 64.00
 G_M27358_IG10:
        cmp      r14d, dword ptr [rax+0x08]
        jae      SHORT G_M27358_IG16
        mov      esi, r14d
        mov      rax, gword ptr [rax+8*rsi+0x10]
 						;; size=14 bbWeight=2 PerfScore 12.50
 G_M27358_IG11:
        mov      gword ptr [r12+0x08], rax
        test     rax, rax
        je       SHORT G_M27358_IG13
 						;; size=10 bbWeight=8 PerfScore 18.00
 G_M27358_IG12:
        mov      dword ptr [rbp-0x30], r14d
-       jmp      G_M27358_IG03
-						;; size=9 bbWeight=4 PerfScore 12.00
+       jmp      SHORT G_M27358_IG03
+						;; size=6 bbWeight=4 PerfScore 12.00
 G_M27358_IG13:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M27358_IG14:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M27358_IG15:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M27358_IG16:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 236, prolog size 35, PerfScore 232.96, instruction count 77, allocated bytes for code 236 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)
+; Total bytes of code 222, prolog size 35, PerfScore 228.46, instruction count 76, allocated bytes for code 222 (MethodHash=16d79521) for method System.Runtime.Loader.AssemblyLoadContext:GetResolvedUnmanagedDll(System.Reflection.Assembly,System.String):long:this (FullOpts)

Larger list of diffs: https://gist.github.com/MihuBot/336cc04d852259e3c14fa07cafe0a825

@MihuBot
Copy link
Owner Author

MihuBot commented Mar 14, 2024

@jkotas

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