-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)
; ============================================================