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] [hez2010] JIT: Simple importer single-block forward substitution #774

Open
MihuBot opened this issue Nov 4, 2024 · 2 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Nov 4, 2024

Job completed in 20 minutes 2 seconds.
dotnet/runtime#109482

Diffs

Found 263 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39726231
Total bytes of diff: 39721939
Total bytes of delta: -4292 (-0.01 % of base)
Total relative delta: -15.96
    diff is an improvement.
    relative diff is an improvement.


Top file improvements (bytes):
       -3056 : System.Private.CoreLib.dasm (-0.05 % of base)
        -671 : System.ComponentModel.TypeConverter.dasm (-0.22 % of base)
        -565 : System.ComponentModel.Composition.dasm (-0.13 % of base)

3 total files with Code Size differences (3 improved, 0 regressed), 256 unchanged.

Top method improvements (bytes):
        -250 (-65.27 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
        -247 (-65.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
        -239 (-72.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
        -239 (-72.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
        -179 (-63.25 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
        -151 (-47.34 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
        -117 (-41.64 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
        -117 (-42.24 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
        -117 (-42.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
        -117 (-41.79 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
        -117 (-41.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[double]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[int]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[long]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[short]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():int (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-29.69 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[double](long):double (FullOpts)
        -106 (-29.86 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[int](long):int (FullOpts)
        -106 (-29.78 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long (FullOpts)
        -106 (-29.69 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short (FullOpts)
        -106 (-29.78 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[ubyte](long):ubyte (FullOpts)
        -104 (-4.80 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[System.Numerics.Vector`1[float]](System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.Numerics.Vector`1[float] (FullOpts)
         -93 (-4.37 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[double](System.Collections.Generic.IDictionary`2[System.String,System.Object]):double (FullOpts)
         -93 (-4.37 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[short](System.Collections.Generic.IDictionary`2[System.String,System.Object]):short (FullOpts)
         -92 (-4.33 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[long](System.Collections.Generic.IDictionary`2[System.String,System.Object]):long (FullOpts)
         -92 (-4.33 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[ubyte](System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte (FullOpts)
         -91 (-4.29 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[int](System.Collections.Generic.IDictionary`2[System.String,System.Object]):int (FullOpts)
         -76 (-65.52 % of base) : System.Private.CoreLib.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -47 (-34.31 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.__Canon]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
         -47 (-41.96 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
         -47 (-41.96 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Numerics.Vector`1[float]]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)

Top method improvements (percentages):
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -106 (-94.64 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -239 (-72.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
        -239 (-72.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
         -76 (-65.52 % of base) : System.Private.CoreLib.dasm - System.Activator:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
        -250 (-65.27 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
        -247 (-65.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
        -179 (-63.25 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
        -151 (-47.34 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
        -117 (-42.24 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
        -117 (-42.09 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
         -47 (-41.96 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
         -47 (-41.96 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Numerics.Vector`1[float]]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -117 (-41.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
        -117 (-41.79 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
        -117 (-41.64 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
         -47 (-34.31 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.__Canon]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[double]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[int]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[long]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[short]():int (FullOpts)
        -112 (-33.84 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():int (FullOpts)
        -106 (-29.86 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[int](long):int (FullOpts)
        -106 (-29.78 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long (FullOpts)
        -106 (-29.78 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[ubyte](long):ubyte (FullOpts)
        -106 (-29.69 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[double](long):double (FullOpts)
        -106 (-29.69 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short (FullOpts)
        -104 (-4.80 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[System.Numerics.Vector`1[float]](System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.Numerics.Vector`1[float] (FullOpts)
         -93 (-4.37 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[double](System.Collections.Generic.IDictionary`2[System.String,System.Object]):double (FullOpts)
         -93 (-4.37 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[short](System.Collections.Generic.IDictionary`2[System.String,System.Object]):short (FullOpts)
         -92 (-4.33 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[long](System.Collections.Generic.IDictionary`2[System.String,System.Object]):long (FullOpts)
         -92 (-4.33 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[ubyte](System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte (FullOpts)
         -91 (-4.29 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[int](System.Collections.Generic.IDictionary`2[System.String,System.Object]):int (FullOpts)

36 total methods with Code Size differences (36 improved, 0 regressed), 232672 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 4, 2024

Top method improvements

-250 (-65.27 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int]
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  4,  4   )    long  ->  rbx         single-def
-;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;  V00 arg0         [V00,T00] (  3,  2   )    long  ->  rdi         single-def
+;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03    ] (  5,  3.50)  struct ( 8) [rbp-0x18]  do-not-enreg[XS] addr-exposed ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-;  V04 tmp2         [V04,T01] (  5,  5   )     ref  ->  rax         single-def "op1 spilled for Nullable unbox"
-;  V05 tmp3         [V05,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V07 tmp5         [V07    ] (  4,  2.75)   ubyte  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V08 tmp6         [V08    ] (  4,  2.75)     int  ->  [rbp-0x14]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
-;  V09 tmp7         [V09,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V10 tmp8         [V10,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V11 tmp9         [V11,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V12 tmp10        [V12,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V13 cse0         [V13,T02] (  4,  4   )     ref  ->  r15         "CSE #01: aggressive"
+;  V03 tmp1         [V03,T01] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V04 tmp2         [V04,T02] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V05 tmp3         [V05,T03] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 0
 
 G_M39254_IG01:
        push     rbp
        push     r15
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x20]
-       mov      rbx, rdi
-						;; size=16 bbWeight=1 PerfScore 4.00
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=0 PerfScore 0.00
 G_M39254_IG02:
-       test     rbx, rbx
-       je       G_M39254_IG10
-       mov      r15, 0xD1FFAB1E      ; 'System.Nullable`1[System.Int32]'
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M39254_IG09
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetBaseType():System.RuntimeType:this
-       call     [rax]System.RuntimeType:GetBaseType():System.RuntimeType:this
-       mov      rdi, 0xD1FFAB1E      ; 'System.MulticastDelegate'
-       cmp      rax, rdi
-       jne      SHORT G_M39254_IG08
-       mov      rdi, rbx
-       mov      rsi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
-       call     [rax]System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
-       test     rax, rax
-       jne      SHORT G_M39254_IG04
-						;; size=95 bbWeight=1 PerfScore 16.25
-G_M39254_IG03:
-       xor      eax, eax
-       mov      qword ptr [rbp-0x18], rax
-       jmp      SHORT G_M39254_IG05
-						;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M39254_IG04:
-       mov      rdi, 0xD1FFAB1E      ; System.Int32
-       cmp      qword ptr [rax], rdi
-       jne      SHORT G_M39254_IG07
-       mov      byte  ptr [rbp-0x18], 1
-       mov      eax, dword ptr [rax+0x08]
-       mov      dword ptr [rbp-0x14], eax
-						;; size=25 bbWeight=0.25 PerfScore 2.06
-G_M39254_IG05:
-       mov      rax, qword ptr [rbp-0x18]
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M39254_IG06:
-       add      rsp, 16
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=9 bbWeight=1 PerfScore 2.75
-G_M39254_IG07:
-       lea      rdi, [rbp-0x18]
-       mov      rdx, rax
-       mov      rsi, 0xD1FFAB1E      ; System.Nullable`1[int]
-       call     CORINFO_HELP_UNBOX_NULLABLE
-       jmp      SHORT G_M39254_IG05
-						;; size=24 bbWeight=0 PerfScore 0.00
-G_M39254_IG08:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_MustBeDelegate():System.String
-       call     [rax]System.SR:get_Arg_MustBeDelegate():System.String
-       mov      r15, rax
-       mov      edi, 0x194F4
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
-G_M39254_IG09:
+       test     rdi, rdi
+       je       SHORT G_M39254_IG03
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x194F4
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
-G_M39254_IG10:
+						;; size=88 bbWeight=0 PerfScore 0.00
+G_M39254_IG03:
        mov      edi, 0xD7D
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 383, prolog size 13, PerfScore 26.88, instruction count 87, allocated bytes for code 383 (MethodHash=fcab66a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
+; Total bytes of code 133, prolog size 9, PerfScore 0.00, instruction count 30, allocated bytes for code 133 (MethodHash=fcab66a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
 ; ============================================================
-247 (-65.00 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float]
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T01] (  4,  4   )   byref  ->  rbx         single-def
-;  V01 arg0         [V01,T02] (  4,  4   )    long  ->  r15         single-def
-;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 RetBuf       [V00    ] (  0,  0   )   byref  ->  zero-ref    single-def
+;  V01 arg0         [V01,T00] (  3,  2   )    long  ->  rsi         single-def
+;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T00] (  4,  6.50)     ref  ->  r15         single-def "inline UNBOX clone1"
-;  V05 tmp2         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp3         [V06,T05] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  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"
-;  V09 tmp6         [V09,T08] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V10 tmp7         [V10,T09] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V11 cse0         [V11,T03] (  4,  4   )     ref  ->  r14         "CSE #01: aggressive"
+;  V04 tmp1         [V04,T01] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V05 tmp2         [V05,T02] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V06 tmp3         [V06,T03] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M46454_IG01:
        push     rbp
        push     r15
-       push     r14
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
-       mov      rbx, rdi
-       mov      r15, rsi
-						;; size=18 bbWeight=1 PerfScore 6.00
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=0 PerfScore 0.00
 G_M46454_IG02:
-       test     r15, r15
-       je       G_M46454_IG08
-       mov      r14, 0xD1FFAB1E      ; 'System.Numerics.Vector`1[System.Single]'
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M46454_IG07
-       mov      rdi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetBaseType():System.RuntimeType:this
-       call     [rax]System.RuntimeType:GetBaseType():System.RuntimeType:this
-       mov      rdi, 0xD1FFAB1E      ; 'System.MulticastDelegate'
-       cmp      rax, rdi
-       jne      SHORT G_M46454_IG06
-       mov      rdi, r15
-       mov      rsi, r14
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
-       call     [rax]System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
-       mov      r15, rax
-       mov      rsi, 0xD1FFAB1E      ; System.Numerics.Vector`1[float]
-       cmp      qword ptr [r15], rsi
-       je       SHORT G_M46454_IG04
-						;; size=108 bbWeight=1 PerfScore 19.50
-G_M46454_IG03:
-       mov      rsi, r15
-       mov      rdi, 0xD1FFAB1E      ; System.Numerics.Vector`1[float]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
-       call     [rax]CORINFO_HELP_UNBOX
-						;; size=25 bbWeight=0.25 PerfScore 0.94
-G_M46454_IG04:
-       vmovups  ymm0, ymmword ptr [r15+0x08]
-       vmovups  ymmword ptr [rbx], ymm0
-       mov      rax, rbx
-						;; size=13 bbWeight=1 PerfScore 7.25
-G_M46454_IG05:
-       vzeroupper 
-       add      rsp, 8
-       pop      rbx
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=14 bbWeight=1 PerfScore 4.25
-G_M46454_IG06:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Arg_MustBeDelegate():System.String
-       call     [rax]System.SR:get_Arg_MustBeDelegate():System.String
-       mov      r15, rax
-       mov      edi, 0x194F4
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
-G_M46454_IG07:
+       test     rsi, rsi
+       je       SHORT G_M46454_IG03
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x194F4
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
-G_M46454_IG08:
+						;; size=88 bbWeight=0 PerfScore 0.00
+G_M46454_IG03:
        mov      edi, 0xD7D
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 380, prolog size 12, PerfScore 37.94, instruction count 85, allocated bytes for code 380 (MethodHash=ca504a89) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 133, prolog size 9, PerfScore 0.00, instruction count 30, allocated bytes for code 133 (MethodHash=ca504a89) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
 ; ============================================================
-239 (-72.21 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 tmp1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V02 tmp2         [V02    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V03 tmp3         [V03,T07] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V04 tmp4         [V04    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-;  V05 tmp5         [V05    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;  V06 tmp6         [V06,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V07 tmp7         [V07    ] (  0,  0   )   byref  ->  zero-ref   
-;* V08 tmp8         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V09 tmp9         [V09    ] (  0,  0   )   byref  ->  zero-ref   
-;  V10 tmp10        [V10,T06] (  3,  2   )    long  ->  rdi        
-;* V11 tmp11        [V11    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V12 tmp12        [V12    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
-;  V13 tmp13        [V13,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
-;  V14 FramesRoot   [V14,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
-;  V15 PInvokeFrame [V15    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V16 tmp16        [V16,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V05._ptr (fldOffset=0x0)" P-DEP
-;  V17 tmp17        [V17,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V05._handle (fldOffset=0x8)" P-DEP
-;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V12._ptr (fldOffset=0x0)" P-INDEP
-;* V19 tmp19        [V19    ] (  0,  0   )    long  ->  zero-ref    "field V12._handle (fldOffset=0x8)" P-INDEP
-;  V20 tmp20        [V20,T08] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V21 tmp21        [V21,T09] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V22 cse0         [V22,T05] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
+;* V01 tmp1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V02 tmp2         [V02    ] (  0,  0   )     ref  ->  zero-ref   
+;  V03 tmp3         [V03,T00] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V04 tmp4         [V04,T01] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V05 tmp5         [V05,T02] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 88
+; Lcl frame size = 0
 
 G_M374_IG01:
        push     rbp
        push     r15
-       push     r14
-       push     r13
-       push     r12
        push     rbx
-       sub      rsp, 88
-       vzeroupper 
-       lea      rbp, [rsp+0x80]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x30], rax
-						;; size=31 bbWeight=1 PerfScore 9.00
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=0 PerfScore 0.00
 G_M374_IG02:
-       lea      rdi, [rbp-0x78]
-       call     CORINFO_HELP_INIT_PINVOKE_FRAME
-       mov      rbx, rax
-       mov      rdi, rsp
-       mov      qword ptr [rbp-0x60], rdi
-       mov      rdi, rbp
-       mov      qword ptr [rbp-0x50], rdi
-       mov      r15, 0xD1FFAB1E      ; 'System.Nullable`1[System.Int32]'
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M374_IG11
-       mov      gword ptr [rbp-0x30], r15
-       vxorps   xmm0, xmm0, xmm0
-       vmovups  xmmword ptr [rbp-0x40], xmm0
-       lea      rdi, [rbp-0x30]
-       mov      qword ptr [rbp-0x40], rdi
-       mov      rdi, gword ptr [rbp-0x30]
-       test     rdi, rdi
-       je       SHORT G_M374_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
-G_M374_IG03:
-       mov      rdi, qword ptr [rdi+0x18]
-       jmp      SHORT G_M374_IG05
-						;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M374_IG04:
-       xor      edi, edi
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M374_IG05:
-       mov      qword ptr [rbp-0x38], rdi
-       lea      rdi, [rbp-0x30]
-       mov      rsi, qword ptr [rbp-0x38]
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; function address
-       mov      qword ptr [rbp-0x68], rax
-       lea      rax, G_M374_IG08
-       mov      qword ptr [rbp-0x58], rax
-       lea      rax, [rbp-0x78]
-       mov      qword ptr [rbx+0x08], rax
-       mov      byte  ptr [rbx+0x04], 0
-						;; size=54 bbWeight=1 PerfScore 8.50
-G_M374_IG06:
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
-						;; size=10 bbWeight=1 PerfScore 0.25
-G_M374_IG07:
-       call     [rax]System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
-						;; size=2 bbWeight=1 PerfScore 3.00
-G_M374_IG08:
-       mov      byte  ptr [rbx+0x04], 1
-       mov      rcx, 0xD1FFAB1E      ; function address
-       cmp      dword ptr [rcx], 0
-       je       SHORT G_M374_IG09
-       mov      rdi, 0xD1FFAB1E
-       call     [rdi]CORINFO_HELP_STOP_FOR_GC
-						;; size=31 bbWeight=1 PerfScore 8.50
-G_M374_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
-						;; size=8 bbWeight=1 PerfScore 2.00
-G_M374_IG10:
-       add      rsp, 88
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M374_IG11:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x154F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 331, prolog size 31, PerfScore 52.96, instruction count 81, allocated bytes for code 331 (MethodHash=c90dfe89) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
+; Total bytes of code 92, prolog size 9, PerfScore 0.00, instruction count 21, allocated bytes for code 92 (MethodHash=c90dfe89) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
 ; ============================================================
-239 (-72.21 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 tmp1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V02 tmp2         [V02    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V03 tmp3         [V03,T07] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V04 tmp4         [V04    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-;  V05 tmp5         [V05    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-;  V06 tmp6         [V06,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V07 tmp7         [V07    ] (  0,  0   )   byref  ->  zero-ref   
-;* V08 tmp8         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V09 tmp9         [V09    ] (  0,  0   )   byref  ->  zero-ref   
-;  V10 tmp10        [V10,T06] (  3,  2   )    long  ->  rdi        
-;* V11 tmp11        [V11    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V12 tmp12        [V12    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
-;  V13 tmp13        [V13,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
-;  V14 FramesRoot   [V14,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
-;  V15 PInvokeFrame [V15    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V16 tmp16        [V16,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V05._ptr (fldOffset=0x0)" P-DEP
-;  V17 tmp17        [V17,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V05._handle (fldOffset=0x8)" P-DEP
-;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V12._ptr (fldOffset=0x0)" P-INDEP
-;* V19 tmp19        [V19    ] (  0,  0   )    long  ->  zero-ref    "field V12._handle (fldOffset=0x8)" P-INDEP
-;  V20 tmp20        [V20,T08] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V21 tmp21        [V21,T09] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V22 cse0         [V22,T05] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
+;* V01 tmp1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V02 tmp2         [V02    ] (  0,  0   )     ref  ->  zero-ref   
+;  V03 tmp3         [V03,T00] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V04 tmp4         [V04,T01] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V05 tmp5         [V05,T02] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 88
+; Lcl frame size = 0
 
 G_M52811_IG01:
        push     rbp
        push     r15
-       push     r14
-       push     r13
-       push     r12
        push     rbx
-       sub      rsp, 88
-       vzeroupper 
-       lea      rbp, [rsp+0x80]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x30], rax
-						;; size=31 bbWeight=1 PerfScore 9.00
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=0 PerfScore 0.00
 G_M52811_IG02:
-       lea      rdi, [rbp-0x78]
-       call     CORINFO_HELP_INIT_PINVOKE_FRAME
-       mov      rbx, rax
-       mov      rdi, rsp
-       mov      qword ptr [rbp-0x60], rdi
-       mov      rdi, rbp
-       mov      qword ptr [rbp-0x50], rdi
-       mov      r15, 0xD1FFAB1E      ; 'System.Numerics.Vector`1[System.Single]'
-       mov      rdi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M52811_IG11
-       mov      gword ptr [rbp-0x30], r15
-       vxorps   xmm0, xmm0, xmm0
-       vmovups  xmmword ptr [rbp-0x40], xmm0
-       lea      rdi, [rbp-0x30]
-       mov      qword ptr [rbp-0x40], rdi
-       mov      rdi, gword ptr [rbp-0x30]
-       test     rdi, rdi
-       je       SHORT G_M52811_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
-G_M52811_IG03:
-       mov      rdi, qword ptr [rdi+0x18]
-       jmp      SHORT G_M52811_IG05
-						;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M52811_IG04:
-       xor      edi, edi
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52811_IG05:
-       mov      qword ptr [rbp-0x38], rdi
-       lea      rdi, [rbp-0x30]
-       mov      rsi, qword ptr [rbp-0x38]
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; function address
-       mov      qword ptr [rbp-0x68], rax
-       lea      rax, G_M52811_IG08
-       mov      qword ptr [rbp-0x58], rax
-       lea      rax, [rbp-0x78]
-       mov      qword ptr [rbx+0x08], rax
-       mov      byte  ptr [rbx+0x04], 0
-						;; size=54 bbWeight=1 PerfScore 8.50
-G_M52811_IG06:
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
-						;; size=10 bbWeight=1 PerfScore 0.25
-G_M52811_IG07:
-       call     [rax]System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
-						;; size=2 bbWeight=1 PerfScore 3.00
-G_M52811_IG08:
-       mov      byte  ptr [rbx+0x04], 1
-       mov      rcx, 0xD1FFAB1E      ; function address
-       cmp      dword ptr [rcx], 0
-       je       SHORT G_M52811_IG09
-       mov      rdi, 0xD1FFAB1E
-       call     [rdi]CORINFO_HELP_STOP_FOR_GC
-						;; size=31 bbWeight=1 PerfScore 8.50
-G_M52811_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
-						;; size=8 bbWeight=1 PerfScore 2.00
-G_M52811_IG10:
-       add      rsp, 88
-       pop      rbx
-       pop      r12
-       pop      r13
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M52811_IG11:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x154F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 331, prolog size 31, PerfScore 52.96, instruction count 81, allocated bytes for code 331 (MethodHash=f86031b4) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
+; Total bytes of code 92, prolog size 9, PerfScore 0.00, instruction count 21, allocated bytes for code 92 (MethodHash=f86031b4) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
 ; ============================================================
-179 (-63.25 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int]
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  4,  3.50)    long  ->  rbx         single-def
-;  V01 loc0         [V01,T01] (  6,  2   )     ref  ->  r15         class-hnd single-def <System.Object>
+;  V00 arg0         [V00,T00] (  3,  3   )    long  ->  rdi         single-def
+;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05    ] (  5,  2.50)  struct ( 8) [rbp-0x18]  do-not-enreg[XS] addr-exposed ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-;  V06 tmp4         [V06,T02] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;* V07 tmp5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-;  V08 tmp6         [V08    ] (  4,  1.75)   ubyte  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V05.hasValue (fldOffset=0x0)" P-DEP
-;  V09 tmp7         [V09    ] (  4,  1.75)     int  ->  [rbp-0x14]  do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x4)" P-DEP
-;* V10 tmp8         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[] "field V07.hasValue (fldOffset=0x0)" P-DEP
-;* V11 tmp9         [V11    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[] "field V07.value (fldOffset=0x4)" P-DEP
-;  V12 tmp10        [V12,T03] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V13 tmp11        [V13,T04] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref   
+;  V05 tmp3         [V05,T01] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;* V06 tmp4         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
+;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
+;* V08 tmp6         [V08    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
+;  V09 tmp7         [V09,T02] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V10 tmp8         [V10,T03] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 0
 
 G_M1349_IG01:
        push     rbp
        push     r15
        push     rbx
-       sub      rsp, 16
-       lea      rbp, [rsp+0x20]
-       mov      rbx, rdi
-						;; size=16 bbWeight=1 PerfScore 4.00
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=1 PerfScore 3.50
 G_M1349_IG02:
-       test     rbx, rbx
-       je       G_M1349_IG08
-						;; size=9 bbWeight=1 PerfScore 1.25
-G_M1349_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Nullable`1[System.Int32]'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M1349_IG11
-       mov      rdi, 0xD1FFAB1E      ; 'System.Nullable`1[System.Int32]'
-       mov      esi, 1
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
-       call     [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
-       mov      r15, rax
-       mov      rdi, rbx
-       mov      rsi, r15
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
-       call     [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
-       test     r15, r15
-       jne      SHORT G_M1349_IG05
-						;; size=93 bbWeight=0.50 PerfScore 7.12
-G_M1349_IG04:
-       xor      edi, edi
-       mov      qword ptr [rbp-0x18], rdi
-       jmp      SHORT G_M1349_IG06
-						;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M1349_IG05:
-       mov      rdi, 0xD1FFAB1E      ; System.Int32
-       cmp      qword ptr [r15], rdi
-       jne      SHORT G_M1349_IG10
-       mov      byte  ptr [rbp-0x18], 1
-       mov      eax, dword ptr [r15+0x08]
-       mov      dword ptr [rbp-0x14], eax
-						;; size=26 bbWeight=0.25 PerfScore 2.06
-G_M1349_IG06:
-       mov      rax, qword ptr [rbp-0x18]
-						;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M1349_IG07:
-       add      rsp, 16
-       pop      rbx
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M1349_IG08:
+       test     rdi, rdi
+       jne      SHORT G_M1349_IG04
        xor      eax, eax
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1349_IG09:
-       add      rsp, 16
+						;; size=7 bbWeight=1 PerfScore 1.50
+G_M1349_IG03:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M1349_IG10:
-       lea      rdi, [rbp-0x18]
-       mov      rdx, r15
-       mov      rsi, 0xD1FFAB1E      ; System.Nullable`1[int]
-       call     CORINFO_HELP_UNBOX_NULLABLE
-       jmp      SHORT G_M1349_IG06
-						;; size=24 bbWeight=0 PerfScore 0.00
-G_M1349_IG11:
+						;; size=5 bbWeight=1 PerfScore 2.50
+G_M1349_IG04:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x154F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 283, prolog size 13, PerfScore 18.62, instruction count 69, allocated bytes for code 283 (MethodHash=4812faba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
+; Total bytes of code 104, prolog size 9, PerfScore 7.50, instruction count 28, allocated bytes for code 104 (MethodHash=4812faba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
 ; ============================================================
-151 (-47.34 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float]
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T00] (  6,  4   )   byref  ->  rbx         single-def
-;  V01 arg0         [V01,T01] (  4,  3.50)    long  ->  r15         single-def
-;  V02 loc0         [V02,T03] (  5,  2.25)     ref  ->  r14         class-hnd single-def <System.Object>
+;  V00 RetBuf       [V00,T00] (  4,  4   )   byref  ->  rbx         single-def
+;  V01 arg0         [V01,T01] (  3,  3   )    long  ->  rsi         single-def
+;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V06 tmp3         [V06,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V07 tmp4         [V07,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V08 tmp5         [V08,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V09 cse0         [V09,T02] (  6,  2.50)    long  ->  rdi         multi-def "CSE #01: aggressive"
+;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref   
+;  V06 tmp3         [V06,T02] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;  V07 tmp4         [V07,T03] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V08 tmp5         [V08,T04] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M9637_IG01:
        push     rbp
        push     r15
-       push     r14
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
+       lea      rbp, [rsp+0x10]
        mov      rbx, rdi
-       mov      r15, rsi
-						;; size=18 bbWeight=1 PerfScore 6.00
+						;; size=12 bbWeight=1 PerfScore 3.75
 G_M9637_IG02:
-       test     r15, r15
-       je       G_M9637_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
-G_M9637_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Numerics.Vector`1[System.Single]'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M9637_IG11
-       mov      rdi, 0xD1FFAB1E      ; 'System.Numerics.Vector`1[System.Single]'
-       mov      esi, 1
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
-       call     [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
-       mov      r14, rax
-       mov      rdi, r15
-       mov      rsi, r14
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
-       call     [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
-       mov      rdi, 0xD1FFAB1E      ; System.Numerics.Vector`1[float]
-       cmp      qword ptr [r14], rdi
-       je       SHORT G_M9637_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
-G_M9637_IG04:
-       mov      rsi, r14
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
-       call     [rax]CORINFO_HELP_UNBOX
-						;; size=15 bbWeight=0.25 PerfScore 0.88
-G_M9637_IG05:
-       vmovups  ymm0, ymmword ptr [r14+0x08]
-       vmovups  ymmword ptr [rbx], ymm0
-       mov      rax, rbx
-						;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M9637_IG06:
-       vzeroupper 
-       add      rsp, 8
-       pop      rbx
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG07:
+       test     rsi, rsi
+       jne      SHORT G_M9637_IG06
        mov      rdi, 0xD1FFAB1E      ; System.Numerics.Vector`1[float]
        cmp      qword ptr [0x0000], rdi
-       je       SHORT G_M9637_IG09
-						;; size=20 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG08:
+       je       SHORT G_M9637_IG04
+						;; size=25 bbWeight=1 PerfScore 5.50
+G_M9637_IG03:
+       mov      rdi, 0xD1FFAB1E      ; System.Numerics.Vector`1[float]
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
-						;; size=14 bbWeight=0.25 PerfScore 0.88
-G_M9637_IG09:
+						;; size=24 bbWeight=0.25 PerfScore 0.94
+G_M9637_IG04:
        vmovups  ymm0, ymmword ptr [0x0000]
        vmovups  ymmword ptr [rbx], ymm0
        mov      rax, rbx
-						;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M9637_IG10:
+						;; size=16 bbWeight=1 PerfScore 7.25
+G_M9637_IG05:
        vzeroupper 
-       add      rsp, 8
        pop      rbx
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG11:
+						;; size=8 bbWeight=1 PerfScore 3.50
+G_M9637_IG06:
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
        call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
        mov      r15, rax
        mov      edi, 0x154F
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rsi, r15
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 319, prolog size 12, PerfScore 31.25, instruction count 75, allocated bytes for code 319 (MethodHash=f44cda5a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 168, prolog size 9, PerfScore 20.94, instruction count 39, allocated bytes for code 168 (MethodHash=f44cda5a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
 ; ============================================================
-117 (-41.64 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  4,  3.50)    long  ->  rbx         single-def
 ;  V01 loc0         [V01,T02] (  5,  2.25)     ref  ->  r15         class-hnd single-def <System.Object>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 cse0         [V08,T01] (  6,  2.50)    long  ->  rdi         multi-def "CSE #01: aggressive"
+;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref   
+;  V05 cse0         [V05,T01] (  6,  2.50)    long  ->  rdi         multi-def "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M15429_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M15429_IG02:
        test     rbx, rbx
-       je       G_M15429_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M15429_IG07
+						;; size=5 bbWeight=1 PerfScore 1.25
 G_M15429_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Double'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M15429_IG11
        mov      rdi, 0xD1FFAB1E      ; 'System.Double'
        mov      esi, 1
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
        call     [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
        mov      r15, rax
        mov      rdi, rbx
        mov      rsi, r15
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        call     [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        mov      rdi, 0xD1FFAB1E      ; System.Double
        cmp      qword ptr [r15], rdi
        je       SHORT G_M15429_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
+						;; size=73 bbWeight=0.50 PerfScore 6.25
 G_M15429_IG04:
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=15 bbWeight=0.25 PerfScore 0.88
 G_M15429_IG05:
        vmovsd   xmm0, qword ptr [r15+0x08]
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M15429_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M15429_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Double
        cmp      qword ptr [0x0000], rdi
        je       SHORT G_M15429_IG09
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M15429_IG08:
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=14 bbWeight=0.25 PerfScore 0.88
 G_M15429_IG09:
        vmovsd   xmm0, qword ptr [0x0000]
 						;; size=9 bbWeight=0.50 PerfScore 2.00
 G_M15429_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M15429_IG11:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
-       call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
-       mov      r15, rax
-       mov      edi, 0x154F
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 281, prolog size 9, PerfScore 24.00, instruction count 62, allocated bytes for code 281 (MethodHash=fdc7c3ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
+; Total bytes of code 164, prolog size 9, PerfScore 21.62, instruction count 40, allocated bytes for code 164 (MethodHash=fdc7c3ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
 ; ============================================================
-117 (-42.24 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  4,  3.50)    long  ->  rbx         single-def
 ;  V01 loc0         [V01,T02] (  5,  2.25)     ref  ->  r15         class-hnd single-def <System.Object>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 cse0         [V08,T01] (  6,  2.50)    long  ->  rdi         multi-def "CSE #01: aggressive"
+;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref   
+;  V05 cse0         [V05,T01] (  6,  2.50)    long  ->  rdi         multi-def "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M10469_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M10469_IG02:
        test     rbx, rbx
-       je       G_M10469_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M10469_IG07
+						;; size=5 bbWeight=1 PerfScore 1.25
 G_M10469_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M10469_IG11
        mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
        mov      esi, 1
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
        call     [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
        mov      r15, rax
        mov      rdi, rbx
        mov      rsi, r15
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        call     [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        cmp      qword ptr [r15], rdi
        je       SHORT G_M10469_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
+						;; size=73 bbWeight=0.50 PerfScore 6.25
 G_M10469_IG04:
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=15 bbWeight=0.25 PerfScore 0.88
 G_M10469_IG05:
        mov      eax, dword ptr [r15+0x08]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M10469_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M10469_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        cmp      qword ptr [0x0000], rdi
        je       SHORT G_M10469_IG09
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M10469_IG08:
        xor      rsi, rsi
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=14 bbWeight=0.25 PerfScore 0.88
 G_M10469_IG09:
        mov      eax, dword ptr [0x0000]
 						;; size=7 bbWeight=0.50 PerfScore 1.00
 G_M10469_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M10469_IG11:
-       mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
-       call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_NeedNonGenericType():System.String
-       call     [rax]System.SR:get_Argument_NeedNonGenericType():System.String
-       mov      r15, rax
-       mov      edi, 0x154F
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      rsi, r15
-       mov      rdi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
-       call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
-       mov      rdi, rbx
-       call     CORINFO_HELP_THROW
-       int3     
-						;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 277, prolog size 9, PerfScore 22.00, instruction count 62, allocated bytes for code 277 (MethodHash=2e02d71a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
+; Total bytes of code 160, prolog size 9, PerfScore 19.62, instruction count 40, allocated bytes for code 160 (MethodHash=2e02d71a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
 ; ============================================================

Larger list of diffs: https://gist.github.com/MihuBot/003d1ad602a9299d2e7c73c62793a6fc

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 4, 2024

@hez2010

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