Skip to content

Instantly share code, notes, and snippets.

@MihuBot
Created November 2, 2024 17:56
Show Gist options
  • Save MihuBot/91577a7cd8cd8098e0e1dcdd6279f659 to your computer and use it in GitHub Desktop.
Save MihuBot/91577a7cd8cd8098e0e1dcdd6279f659 to your computer and use it in GitHub Desktop.

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)
 ; ============================================================
-117 (-42.09 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (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_M56901_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M56901_IG02:
        test     rbx, rbx
-       je       G_M56901_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M56901_IG07
+						;; size=5 bbWeight=1 PerfScore 1.25
 G_M56901_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M56901_IG11
        mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
        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.Int64
        cmp      qword ptr [r15], rdi
        je       SHORT G_M56901_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
+						;; size=73 bbWeight=0.50 PerfScore 6.25
 G_M56901_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_M56901_IG05:
        mov      rax, qword ptr [r15+0x08]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M56901_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M56901_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int64
        cmp      qword ptr [0x0000], rdi
        je       SHORT G_M56901_IG09
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M56901_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_M56901_IG09:
        mov      rax, qword ptr [0x0000]
 						;; size=8 bbWeight=0.50 PerfScore 1.00
 G_M56901_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M56901_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 278, prolog size 9, PerfScore 22.00, instruction count 62, allocated bytes for code 278 (MethodHash=ff8c21ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
+; Total bytes of code 161, prolog size 9, PerfScore 19.62, instruction count 40, allocated bytes for code 161 (MethodHash=ff8c21ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[long](long):long (FullOpts)
 ; ============================================================
-117 (-41.79 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (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_M33925_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M33925_IG02:
        test     rbx, rbx
-       je       G_M33925_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M33925_IG07
+						;; size=5 bbWeight=1 PerfScore 1.25
 G_M33925_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M33925_IG11
        mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
        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.Int16
        cmp      qword ptr [r15], rdi
        je       SHORT G_M33925_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
+						;; size=73 bbWeight=0.50 PerfScore 6.25
 G_M33925_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_M33925_IG05:
        movsx    rax, word  ptr [r15+0x08]
 						;; size=5 bbWeight=0.50 PerfScore 2.00
 G_M33925_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M33925_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Int16
        cmp      qword ptr [0x0000], rdi
        je       SHORT G_M33925_IG09
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M33925_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_M33925_IG09:
        movsx    rax, word  ptr [0x0000]
 						;; size=9 bbWeight=0.50 PerfScore 2.00
 G_M33925_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M33925_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 280, prolog size 9, PerfScore 24.00, instruction count 62, allocated bytes for code 280 (MethodHash=6de17b7a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
+; Total bytes of code 163, prolog size 9, PerfScore 21.62, instruction count 40, allocated bytes for code 163 (MethodHash=6de17b7a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[short](long):short (FullOpts)
 ; ============================================================
-117 (-41.94 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (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_M50789_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M50789_IG02:
        test     rbx, rbx
-       je       G_M50789_IG07
-						;; size=9 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M50789_IG07
+						;; size=5 bbWeight=1 PerfScore 1.25
 G_M50789_IG03:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:get_IsGenericType():ubyte:this
-       call     [rax]System.RuntimeType:get_IsGenericType():ubyte:this
-       test     eax, eax
-       jne      G_M50789_IG11
        mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
        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.Byte
        cmp      qword ptr [r15], rdi
        je       SHORT G_M50789_IG05
-						;; size=103 bbWeight=0.50 PerfScore 8.62
+						;; size=73 bbWeight=0.50 PerfScore 6.25
 G_M50789_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_M50789_IG05:
        movzx    rax, byte  ptr [r15+0x08]
 						;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M50789_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M50789_IG07:
        mov      rdi, 0xD1FFAB1E      ; System.Byte
        cmp      qword ptr [0x0000], rdi
        je       SHORT G_M50789_IG09
 						;; size=20 bbWeight=0.50 PerfScore 2.12
 G_M50789_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_M50789_IG09:
        movzx    rax, byte  ptr [0x0000]
 						;; size=8 bbWeight=0.50 PerfScore 1.00
 G_M50789_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M50789_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 279, prolog size 9, PerfScore 22.00, instruction count 62, allocated bytes for code 279 (MethodHash=8bd2399a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
+; Total bytes of code 162, prolog size 9, PerfScore 19.62, instruction count 40, allocated bytes for code 162 (MethodHash=8bd2399a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[ubyte](long):ubyte (FullOpts)
 ; ============================================================
-112 (-33.84 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[double]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[double]():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    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+;  V04 tmp4         [V04    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V05 tmp5         [V05,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
+;* V06 tmp6         [V06    ] (  0,  0   )   byref  ->  zero-ref   
+;* V07 tmp7         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V08 tmp8         [V08    ] (  0,  0   )   byref  ->  zero-ref   
+;  V09 tmp9         [V09,T05] (  3,  2   )    long  ->  rdi        
+;* V10 tmp10        [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp11        [V11    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V12 tmp12        [V12,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
+;  V13 FramesRoot   [V13,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
+;  V14 PInvokeFrame [V14    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V15 tmp15        [V15,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V04._ptr (fldOffset=0x0)" P-DEP
+;  V16 tmp16        [V16,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V04._handle (fldOffset=0x8)" P-DEP
+;* V17 tmp17        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V11._ptr (fldOffset=0x0)" P-INDEP
+;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V11._handle (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 88
 
 G_M47197_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
+						;; size=25 bbWeight=1 PerfScore 7.75
 G_M47197_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.Double'
-       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_M47197_IG11
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; 'System.Double'
+       mov      gword ptr [rbp-0x30], rdi
        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_M47197_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
+						;; size=66 bbWeight=1 PerfScore 10.58
 G_M47197_IG03:
        mov      rdi, qword ptr [rdi+0x18]
        jmp      SHORT G_M47197_IG05
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M47197_IG04:
        xor      edi, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M47197_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_M47197_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_M47197_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_M47197_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_M47197_IG08:
        mov      byte  ptr [rbx+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M47197_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=31 bbWeight=1 PerfScore 8.50
 G_M47197_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      qword ptr [rbx+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
 G_M47197_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_M47197_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=4d7b47a2) for method System.Runtime.InteropServices.Marshal:SizeOf[double]():int (FullOpts)
+; Total bytes of code 219, prolog size 25, PerfScore 46.96, instruction count 57, allocated bytes for code 219 (MethodHash=4d7b47a2) for method System.Runtime.InteropServices.Marshal:SizeOf[double]():int (FullOpts)
 ; ============================================================
-112 (-33.84 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[int]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[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    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+;  V04 tmp4         [V04    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V05 tmp5         [V05,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
+;* V06 tmp6         [V06    ] (  0,  0   )   byref  ->  zero-ref   
+;* V07 tmp7         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V08 tmp8         [V08    ] (  0,  0   )   byref  ->  zero-ref   
+;  V09 tmp9         [V09,T05] (  3,  2   )    long  ->  rdi        
+;* V10 tmp10        [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp11        [V11    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V12 tmp12        [V12,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
+;  V13 FramesRoot   [V13,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
+;  V14 PInvokeFrame [V14    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V15 tmp15        [V15,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V04._ptr (fldOffset=0x0)" P-DEP
+;  V16 tmp16        [V16,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V04._handle (fldOffset=0x8)" P-DEP
+;* V17 tmp17        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V11._ptr (fldOffset=0x0)" P-INDEP
+;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V11._handle (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 88
 
 G_M42523_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
+						;; size=25 bbWeight=1 PerfScore 7.75
 G_M42523_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.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_M42523_IG11
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
+       mov      gword ptr [rbp-0x30], rdi
        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_M42523_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
+						;; size=66 bbWeight=1 PerfScore 10.58
 G_M42523_IG03:
        mov      rdi, qword ptr [rdi+0x18]
        jmp      SHORT G_M42523_IG05
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M42523_IG04:
        xor      edi, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M42523_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_M42523_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_M42523_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_M42523_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_M42523_IG08:
        mov      byte  ptr [rbx+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M42523_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=31 bbWeight=1 PerfScore 8.50
 G_M42523_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      qword ptr [rbx+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
 G_M42523_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_M42523_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=0ec759e4) for method System.Runtime.InteropServices.Marshal:SizeOf[int]():int (FullOpts)
+; Total bytes of code 219, prolog size 25, PerfScore 46.96, instruction count 57, allocated bytes for code 219 (MethodHash=0ec759e4) for method System.Runtime.InteropServices.Marshal:SizeOf[int]():int (FullOpts)
 ; ============================================================
-112 (-33.84 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[long]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[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; 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    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+;  V04 tmp4         [V04    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V05 tmp5         [V05,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
+;* V06 tmp6         [V06    ] (  0,  0   )   byref  ->  zero-ref   
+;* V07 tmp7         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V08 tmp8         [V08    ] (  0,  0   )   byref  ->  zero-ref   
+;  V09 tmp9         [V09,T05] (  3,  2   )    long  ->  rdi        
+;* V10 tmp10        [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp11        [V11    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V12 tmp12        [V12,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
+;  V13 FramesRoot   [V13,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
+;  V14 PInvokeFrame [V14    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V15 tmp15        [V15,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V04._ptr (fldOffset=0x0)" P-DEP
+;  V16 tmp16        [V16,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V04._handle (fldOffset=0x8)" P-DEP
+;* V17 tmp17        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V11._ptr (fldOffset=0x0)" P-INDEP
+;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V11._handle (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 88
 
 G_M31746_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
+						;; size=25 bbWeight=1 PerfScore 7.75
 G_M31746_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.Int64'
-       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_M31746_IG11
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
+       mov      gword ptr [rbp-0x30], rdi
        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_M31746_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
+						;; size=66 bbWeight=1 PerfScore 10.58
 G_M31746_IG03:
        mov      rdi, qword ptr [rdi+0x18]
        jmp      SHORT G_M31746_IG05
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M31746_IG04:
        xor      edi, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M31746_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_M31746_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_M31746_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_M31746_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_M31746_IG08:
        mov      byte  ptr [rbx+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M31746_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=31 bbWeight=1 PerfScore 8.50
 G_M31746_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      qword ptr [rbx+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
 G_M31746_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_M31746_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=a62d83fd) for method System.Runtime.InteropServices.Marshal:SizeOf[long]():int (FullOpts)
+; Total bytes of code 219, prolog size 25, PerfScore 46.96, instruction count 57, allocated bytes for code 219 (MethodHash=a62d83fd) for method System.Runtime.InteropServices.Marshal:SizeOf[long]():int (FullOpts)
 ; ============================================================
-112 (-33.84 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[short]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[short]():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    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+;  V04 tmp4         [V04    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V05 tmp5         [V05,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
+;* V06 tmp6         [V06    ] (  0,  0   )   byref  ->  zero-ref   
+;* V07 tmp7         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V08 tmp8         [V08    ] (  0,  0   )   byref  ->  zero-ref   
+;  V09 tmp9         [V09,T05] (  3,  2   )    long  ->  rdi        
+;* V10 tmp10        [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp11        [V11    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V12 tmp12        [V12,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
+;  V13 FramesRoot   [V13,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
+;  V14 PInvokeFrame [V14    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V15 tmp15        [V15,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V04._ptr (fldOffset=0x0)" P-DEP
+;  V16 tmp16        [V16,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V04._handle (fldOffset=0x8)" P-DEP
+;* V17 tmp17        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V11._ptr (fldOffset=0x0)" P-INDEP
+;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V11._handle (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 88
 
 G_M59450_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
+						;; size=25 bbWeight=1 PerfScore 7.75
 G_M59450_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.Int16'
-       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_M59450_IG11
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
+       mov      gword ptr [rbp-0x30], rdi
        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_M59450_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
+						;; size=66 bbWeight=1 PerfScore 10.58
 G_M59450_IG03:
        mov      rdi, qword ptr [rdi+0x18]
        jmp      SHORT G_M59450_IG05
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M59450_IG04:
        xor      edi, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M59450_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_M59450_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_M59450_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_M59450_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_M59450_IG08:
        mov      byte  ptr [rbx+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M59450_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=31 bbWeight=1 PerfScore 8.50
 G_M59450_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      qword ptr [rbx+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
 G_M59450_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_M59450_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=ad8d17c5) for method System.Runtime.InteropServices.Marshal:SizeOf[short]():int (FullOpts)
+; Total bytes of code 219, prolog size 25, PerfScore 46.96, instruction count 57, allocated bytes for code 219 (MethodHash=ad8d17c5) for method System.Runtime.InteropServices.Marshal:SizeOf[short]():int (FullOpts)
 ; ============================================================
-112 (-33.84 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():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    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
+;  V04 tmp4         [V04    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V05 tmp5         [V05,T01] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
+;* V06 tmp6         [V06    ] (  0,  0   )   byref  ->  zero-ref   
+;* V07 tmp7         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V08 tmp8         [V08    ] (  0,  0   )   byref  ->  zero-ref   
+;  V09 tmp9         [V09,T05] (  3,  2   )    long  ->  rdi        
+;* V10 tmp10        [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp11        [V11    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
+;  V12 tmp12        [V12,T04] (  2,  4   )     int  ->  rax         "Single return block return value"
+;  V13 FramesRoot   [V13,T00] (  6,  6   )    long  ->  rbx         "Pinvoke FrameListRoot"
+;  V14 PInvokeFrame [V14    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V15 tmp15        [V15,T02] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V04._ptr (fldOffset=0x0)" P-DEP
+;  V16 tmp16        [V16,T03] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V04._handle (fldOffset=0x8)" P-DEP
+;* V17 tmp17        [V17    ] (  0,  0   )    long  ->  zero-ref    "field V11._ptr (fldOffset=0x0)" P-INDEP
+;* V18 tmp18        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V11._handle (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 88
 
 G_M8855_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
+						;; size=25 bbWeight=1 PerfScore 7.75
 G_M8855_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.Byte'
-       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_M8855_IG11
-       mov      gword ptr [rbp-0x30], r15
+       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
+       mov      gword ptr [rbp-0x30], rdi
        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_M8855_IG04
-						;; size=89 bbWeight=1 PerfScore 15.33
+						;; size=66 bbWeight=1 PerfScore 10.58
 G_M8855_IG03:
        mov      rdi, qword ptr [rdi+0x18]
        jmp      SHORT G_M8855_IG05
 						;; size=6 bbWeight=0.50 PerfScore 2.00
 G_M8855_IG04:
        xor      edi, edi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M8855_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_M8855_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_M8855_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_M8855_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_M8855_IG08:
        mov      byte  ptr [rbx+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M8855_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=31 bbWeight=1 PerfScore 8.50
 G_M8855_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
-       mov      qword ptr [rbx+0x08], rdi
+       mov      rcx, qword ptr [rbp-0x70]
+       mov      qword ptr [rbx+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
 G_M8855_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_M8855_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=6493dd68) for method System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():int (FullOpts)
+; Total bytes of code 219, prolog size 25, PerfScore 46.96, instruction count 57, allocated bytes for code 219 (MethodHash=6493dd68) for method System.Runtime.InteropServices.Marshal:SizeOf[ubyte]():int (FullOpts)
 ; ============================================================
-106 (-94.64 % of base) - System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte
 ; Assembly listing for method System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00,T02] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Type[]>
-;  V04 tmp3         [V04,T01] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V05 tmp4         [V05,T03] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.ConstructorInfo>
-;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 cse0         [V09,T00] (  2,  2   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M65181_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M65181_IG02:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Double'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():ubyte:this
-       call     [rax]System.RuntimeType:GetCorElementType():ubyte:this
-       mov      edi, 1
-       shlx     edi, edi, eax
-       test     edi, 0xD1FFAB1E
-       jne      SHORT G_M65181_IG05
-						;; size=40 bbWeight=1 PerfScore 5.50
-G_M65181_IG03:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r8, gword ptr [rdi]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Double'
-       mov      esi, 532
-       xor      rdx, rdx
-       mov      ecx, 3
-       xor      r9, r9
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       call     [rax]System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       test     rax, rax
-       setne    al
-       movzx    rax, al
-						;; size=59 bbWeight=0.50 PerfScore 4.12
-G_M65181_IG04:
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M65181_IG05:
        mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M65181_IG06:
-       pop      rbp
+						;; size=5 bbWeight=1 PerfScore 0.25
+G_M65181_IG03:
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 112, prolog size 4, PerfScore 12.50, instruction count 26, allocated bytes for code 112 (MethodHash=c9440162) for method System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=c9440162) for method System.ComponentModel.BindingList`1[double]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; ============================================================
-106 (-94.64 % of base) - System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte
 ; Assembly listing for method System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00,T02] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Type[]>
-;  V04 tmp3         [V04,T01] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V05 tmp4         [V05,T03] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.ConstructorInfo>
-;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 cse0         [V09,T00] (  2,  2   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M31483_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M31483_IG02:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():ubyte:this
-       call     [rax]System.RuntimeType:GetCorElementType():ubyte:this
-       mov      edi, 1
-       shlx     edi, edi, eax
-       test     edi, 0xD1FFAB1E
-       jne      SHORT G_M31483_IG05
-						;; size=40 bbWeight=1 PerfScore 5.50
-G_M31483_IG03:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r8, gword ptr [rdi]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int32'
-       mov      esi, 532
-       xor      rdx, rdx
-       mov      ecx, 3
-       xor      r9, r9
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       call     [rax]System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       test     rax, rax
-       setne    al
-       movzx    rax, al
-						;; size=59 bbWeight=0.50 PerfScore 4.12
-G_M31483_IG04:
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M31483_IG05:
        mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M31483_IG06:
-       pop      rbp
+						;; size=5 bbWeight=1 PerfScore 0.25
+G_M31483_IG03:
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 112, prolog size 4, PerfScore 12.50, instruction count 26, allocated bytes for code 112 (MethodHash=f8038504) for method System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=f8038504) for method System.ComponentModel.BindingList`1[int]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; ============================================================
-106 (-94.64 % of base) - System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte
 ; Assembly listing for method System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00,T02] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Type[]>
-;  V04 tmp3         [V04,T01] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V05 tmp4         [V05,T03] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.ConstructorInfo>
-;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 cse0         [V09,T00] (  2,  2   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M29314_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M29314_IG02:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():ubyte:this
-       call     [rax]System.RuntimeType:GetCorElementType():ubyte:this
-       mov      edi, 1
-       shlx     edi, edi, eax
-       test     edi, 0xD1FFAB1E
-       jne      SHORT G_M29314_IG05
-						;; size=40 bbWeight=1 PerfScore 5.50
-G_M29314_IG03:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r8, gword ptr [rdi]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int64'
-       mov      esi, 532
-       xor      rdx, rdx
-       mov      ecx, 3
-       xor      r9, r9
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       call     [rax]System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       test     rax, rax
-       setne    al
-       movzx    rax, al
-						;; size=59 bbWeight=0.50 PerfScore 4.12
-G_M29314_IG04:
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M29314_IG05:
        mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29314_IG06:
-       pop      rbp
+						;; size=5 bbWeight=1 PerfScore 0.25
+G_M29314_IG03:
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 112, prolog size 4, PerfScore 12.50, instruction count 26, allocated bytes for code 112 (MethodHash=65d28d7d) for method System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=65d28d7d) for method System.ComponentModel.BindingList`1[long]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; ============================================================
-106 (-94.64 % of base) - System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte
 ; Assembly listing for method System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00,T02] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Type[]>
-;  V04 tmp3         [V04,T01] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V05 tmp4         [V05,T03] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.ConstructorInfo>
-;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 cse0         [V09,T00] (  2,  2   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M22810_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M22810_IG02:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():ubyte:this
-       call     [rax]System.RuntimeType:GetCorElementType():ubyte:this
-       mov      edi, 1
-       shlx     edi, edi, eax
-       test     edi, 0xD1FFAB1E
-       jne      SHORT G_M22810_IG05
-						;; size=40 bbWeight=1 PerfScore 5.50
-G_M22810_IG03:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r8, gword ptr [rdi]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Int16'
-       mov      esi, 532
-       xor      rdx, rdx
-       mov      ecx, 3
-       xor      r9, r9
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       call     [rax]System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       test     rax, rax
-       setne    al
-       movzx    rax, al
-						;; size=59 bbWeight=0.50 PerfScore 4.12
-G_M22810_IG04:
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M22810_IG05:
        mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M22810_IG06:
-       pop      rbp
+						;; size=5 bbWeight=1 PerfScore 0.25
+G_M22810_IG03:
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 112, prolog size 4, PerfScore 12.50, instruction count 26, allocated bytes for code 112 (MethodHash=767ea6e5) for method System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=767ea6e5) for method System.ComponentModel.BindingList`1[short]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; ============================================================
-106 (-94.64 % of base) - System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte
 ; Assembly listing for method System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; fully interruptible
+; rsp based frame
+; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00,T02] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
+;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.RuntimeType>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Type[]>
-;  V04 tmp3         [V04,T01] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V05 tmp4         [V05,T03] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.ConstructorInfo>
-;* V08 tmp7         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 cse0         [V09,T00] (  2,  2   )     ref  ->  rdi         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M51063_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M51063_IG02:
-       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetCorElementType():ubyte:this
-       call     [rax]System.RuntimeType:GetCorElementType():ubyte:this
-       mov      edi, 1
-       shlx     edi, edi, eax
-       test     edi, 0xD1FFAB1E
-       jne      SHORT G_M51063_IG05
-						;; size=40 bbWeight=1 PerfScore 5.50
-G_M51063_IG03:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r8, gword ptr [rdi]
-       mov      rdi, 0xD1FFAB1E      ; 'System.Byte'
-       mov      esi, 532
-       xor      rdx, rdx
-       mov      ecx, 3
-       xor      r9, r9
-       mov      rax, 0xD1FFAB1E      ; code for System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       call     [rax]System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this
-       test     rax, rax
-       setne    al
-       movzx    rax, al
-						;; size=59 bbWeight=0.50 PerfScore 4.12
-G_M51063_IG04:
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M51063_IG05:
        mov      eax, 1
-						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M51063_IG06:
-       pop      rbp
+						;; size=5 bbWeight=1 PerfScore 0.25
+G_M51063_IG03:
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 112, prolog size 4, PerfScore 12.50, instruction count 26, allocated bytes for code 112 (MethodHash=750a3888) for method System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=750a3888) for method System.ComponentModel.BindingList`1[ubyte]:get_ItemTypeHasDefaultConstructor():ubyte (FullOpts)
 ; ============================================================
-106 (-29.69 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[double](long):double
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[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; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  4   )    long  ->  rbx         single-def
 ;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T00] (  4,  6.50)     ref  ->  rbx         single-def "inline UNBOX clone1"
 ;  V04 tmp2         [V04,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V05 tmp3         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 tmp6         [V08,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V09 tmp7         [V09,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T02] (  4,  4   )     ref  ->  r15         "CSE #01: aggressive"
+;  V05 tmp3         [V05,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V07 cse0         [V07,T02] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M47702_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M47702_IG02:
        test     rbx, rbx
-       je       G_M47702_IG08
+       je       G_M47702_IG07
        mov      r15, 0xD1FFAB1E      ; 'System.Double'
        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_M47702_IG07
-       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_M47702_IG06
        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
        mov      rbx, rax
        mov      rsi, 0xD1FFAB1E      ; System.Double
        cmp      qword ptr [rbx], rsi
        je       SHORT G_M47702_IG04
-						;; size=108 bbWeight=1 PerfScore 19.50
+						;; size=85 bbWeight=1 PerfScore 14.75
 G_M47702_IG03:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Double
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=25 bbWeight=0.25 PerfScore 0.94
 G_M47702_IG04:
        vmovsd   xmm0, qword ptr [rbx+0x08]
 						;; size=5 bbWeight=1 PerfScore 4.00
 G_M47702_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M47702_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_M47702_IG07:
-       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_M47702_IG08:
        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 357, prolog size 9, PerfScore 30.69, instruction count 77, allocated bytes for code 357 (MethodHash=97e845a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[double](long):double (FullOpts)
+; Total bytes of code 251, prolog size 9, PerfScore 25.94, instruction count 55, allocated bytes for code 251 (MethodHash=97e845a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[double](long):double (FullOpts)
 ; ============================================================
-106 (-29.86 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[int](long):int
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[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; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  4   )    long  ->  rbx         single-def
 ;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T00] (  4,  6.50)     ref  ->  rbx         single-def "inline UNBOX clone1"
 ;  V04 tmp2         [V04,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V05 tmp3         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 tmp6         [V08,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V09 tmp7         [V09,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T02] (  4,  4   )     ref  ->  r15         "CSE #01: aggressive"
+;  V05 tmp3         [V05,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V07 cse0         [V07,T02] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M55670_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M55670_IG02:
        test     rbx, rbx
-       je       G_M55670_IG08
+       je       G_M55670_IG07
        mov      r15, 0xD1FFAB1E      ; '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_M55670_IG07
-       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_M55670_IG06
        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
        mov      rbx, rax
        mov      rsi, 0xD1FFAB1E      ; System.Int32
        cmp      qword ptr [rbx], rsi
        je       SHORT G_M55670_IG04
-						;; size=108 bbWeight=1 PerfScore 19.50
+						;; size=85 bbWeight=1 PerfScore 14.75
 G_M55670_IG03:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=25 bbWeight=0.25 PerfScore 0.94
 G_M55670_IG04:
        mov      eax, dword ptr [rbx+0x08]
 						;; size=3 bbWeight=1 PerfScore 2.00
 G_M55670_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M55670_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_M55670_IG07:
-       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_M55670_IG08:
        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 355, prolog size 9, PerfScore 28.69, instruction count 77, allocated bytes for code 355 (MethodHash=59152689) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[int](long):int (FullOpts)
+; Total bytes of code 249, prolog size 9, PerfScore 23.94, instruction count 55, allocated bytes for code 249 (MethodHash=59152689) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[int](long):int (FullOpts)
 ; ============================================================
-106 (-29.78 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long (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
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  4   )    long  ->  rbx         single-def
 ;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T00] (  4,  6.50)     ref  ->  rbx         single-def "inline UNBOX clone1"
 ;  V04 tmp2         [V04,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V05 tmp3         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 tmp6         [V08,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V09 tmp7         [V09,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T02] (  4,  4   )     ref  ->  r15         "CSE #01: aggressive"
+;  V05 tmp3         [V05,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V07 cse0         [V07,T02] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M41558_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M41558_IG02:
        test     rbx, rbx
-       je       G_M41558_IG08
+       je       G_M41558_IG07
        mov      r15, 0xD1FFAB1E      ; 'System.Int64'
        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_M41558_IG07
-       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_M41558_IG06
        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
        mov      rbx, rax
        mov      rsi, 0xD1FFAB1E      ; System.Int64
        cmp      qword ptr [rbx], rsi
        je       SHORT G_M41558_IG04
-						;; size=108 bbWeight=1 PerfScore 19.50
+						;; size=85 bbWeight=1 PerfScore 14.75
 G_M41558_IG03:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Int64
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=25 bbWeight=0.25 PerfScore 0.94
 G_M41558_IG04:
        mov      rax, qword ptr [rbx+0x08]
 						;; size=4 bbWeight=1 PerfScore 2.00
 G_M41558_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M41558_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_M41558_IG07:
-       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_M41558_IG08:
        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 356, prolog size 9, PerfScore 28.69, instruction count 77, allocated bytes for code 356 (MethodHash=3a5f5da9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long (FullOpts)
+; Total bytes of code 250, prolog size 9, PerfScore 23.94, instruction count 55, allocated bytes for code 250 (MethodHash=3a5f5da9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[long](long):long (FullOpts)
 ; ============================================================
-106 (-29.69 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short
 ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short (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
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  4   )    long  ->  rbx         single-def
 ;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T00] (  4,  6.50)     ref  ->  rbx         single-def "inline UNBOX clone1"
 ;  V04 tmp2         [V04,T03] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V05 tmp3         [V05,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V07 tmp5         [V07,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V08 tmp6         [V08,T07] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
-;  V09 tmp7         [V09,T08] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T02] (  4,  4   )     ref  ->  r15         "CSE #01: aggressive"
+;  V05 tmp3         [V05,T04] (  2,  0   )     ref  ->  r15         single-def "argument with side effect"
+;  V06 tmp4         [V06,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V07 cse0         [V07,T02] (  3,  3   )     ref  ->  r15         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M5590_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M5590_IG02:
        test     rbx, rbx
-       je       G_M5590_IG08
+       je       G_M5590_IG07
        mov      r15, 0xD1FFAB1E      ; 'System.Int16'
        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_M5590_IG07
-       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_M5590_IG06
        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
        mov      rbx, rax
        mov      rsi, 0xD1FFAB1E      ; System.Int16
        cmp      qword ptr [rbx], rsi
        je       SHORT G_M5590_IG04
-						;; size=108 bbWeight=1 PerfScore 19.50
+						;; size=85 bbWeight=1 PerfScore 14.75
 G_M5590_IG03:
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Int16
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_UNBOX
        call     [rax]CORINFO_HELP_UNBOX
 						;; size=25 bbWeight=0.25 PerfScore 0.94
 G_M5590_IG04:
        movsx    rax, word  ptr [rbx+0x08]
 						;; size=5 bbWeight=1 PerfScore 4.00
 G_M5590_IG05:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=1 PerfScore 2.50
 G_M5590_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_M5590_IG07:
-       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_M5590_IG08:
        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 357, prolog size 9, PerfScore 30.69, instruction count 77, allocated bytes for code 357 (MethodHash=f782ea29) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short (FullOpts)
+; Total bytes of code 251, prolog size 9, PerfScore 25.94, instruction count 55, allocated bytes for code 251 (MethodHash=f782ea29) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[short](long):short (FullOpts)
 ; ============================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment