-148 (-18.50 % of base) - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Numerics.Vector`1[float]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]]
; Assembly listing for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Numerics.Vector`1[float]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V00 arg0 [V00,T03] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Text.Json.JsonSerializerOptions>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]]>
+; V02 tmp1 [V02,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
; V04 tmp3 [V04,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverter>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
-; V06 tmp5 [V06,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" <System.Text.Json.Serialization.JsonConverter>
+; V06 tmp5 [V06,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" <System.Text.Json.Serialization.JsonConverter>
; V07 tmp6 [V07,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverterFactory>
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
-; V09 tmp8 [V09,T11] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverter>
-; V10 tmp9 [V10,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V11 tmp10 [V11,T00] ( 12, 13 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Type>
-; V12 tmp11 [V12,T12] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V09 tmp8 [V09,T10] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverter>
+; V10 tmp9 [V10,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V11 tmp10 [V11,T00] ( 9, 12 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Type>
+; V12 tmp11 [V12,T12] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
;* V13 tmp12 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp13 [V14,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V14 tmp13 [V14,T14] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.RuntimeType>
-;* V16 tmp15 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp16 [V17,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V16 tmp15 [V16,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V17 tmp16 [V17,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V19 tmp18 [V19,T15] ( 2, 2 ) int -> r12 "non-inline candidate call"
-; V20 tmp19 [V20,T18] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+;* V20 tmp19 [V20,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V21 tmp20 [V21,T06] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
-; V22 tmp21 [V22,T08] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V23 tmp22 [V23,T13] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V24 tmp23 [V24,T09] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V25 tmp24 [V25,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V26 tmp25 [V26,T22] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V27 cse0 [V27,T19] ( 3, 1.50) long -> [rbp-0x30] "CSE #06: moderate"
-; V28 cse1 [V28,T10] ( 3, 2.50) long -> r13 "CSE #08: moderate"
-; V29 cse2 [V29,T02] ( 14, 8 ) ref -> r15 "CSE #01: aggressive"
+;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V24 tmp23 [V24,T08] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V25 tmp24 [V25,T11] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V26 tmp25 [V26,T19] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V27 cse0 [V27,T15] ( 3, 1.50) long -> [rbp-0x30] "CSE #04: moderate"
+; V28 cse1 [V28,T09] ( 3, 2.50) long -> r13 "CSE #06: moderate"
+; V29 cse2 [V29,T05] ( 11, 6.50) ref -> r15 "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M50242_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdi
;; size=19 bbWeight=1 PerfScore 7.75
G_M50242_IG02:
test rbx, rbx
- je G_M50242_IG25
+ je G_M50242_IG19
mov rdi, rbx
mov r15, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this
call [rax]System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this
mov r14, rax
test r14, r14
jne SHORT G_M50242_IG04
;; size=45 bbWeight=1 PerfScore 6.75
G_M50242_IG03:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetBuiltInConverter(System.Type):System.Text.Json.Serialization.JsonConverter
call [rax]System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetBuiltInConverter(System.Type):System.Text.Json.Serialization.JsonConverter
mov r14, rax
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M50242_IG04:
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r13, rax
test r13, r13
je SHORT G_M50242_IG06
;; size=33 bbWeight=1 PerfScore 5.25
G_M50242_IG05:
mov rdi, r13
mov rdx, rbx
mov rsi, r15
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x60]
call [rax]System.Text.Json.Serialization.JsonConverterFactory:CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this
mov r14, rax
test r14, r14
- je G_M50242_IG21
+ je G_M50242_IG15
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- jne G_M50242_IG24
+ jne G_M50242_IG18
;; size=65 bbWeight=0.50 PerfScore 7.12
G_M50242_IG06:
mov rdi, r14
mov rax, qword ptr [r14]
mov r13, qword ptr [rax+0x40]
call [r13+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
mov r12, rax
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- jne SHORT G_M50242_IG08
- ;; size=47 bbWeight=1 PerfScore 12.50
-G_M50242_IG07:
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.Type:get_IsInterface():ubyte:this
- cmp dword ptr [rdi], edi
- call [rax]System.Type:get_IsInterface():ubyte:this
- test eax, eax
- jne SHORT G_M50242_IG09
- ;; size=21 bbWeight=0.50 PerfScore 3.88
-G_M50242_IG08:
mov rdi, r12
mov rsi, r15
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0xB0]
call [rax+0x20]System.Type:IsAssignableFrom(System.Type):ubyte:this
- jmp SHORT G_M50242_IG10
- ;; size=22 bbWeight=0.50 PerfScore 4.75
-G_M50242_IG09:
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
- call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
- cmp dword ptr [rax+0x08], 0
- jbe G_M50242_IG26
- mov rsi, gword ptr [rax+0x10]
- mov rdi, r12
- mov rax, qword ptr [r12]
- mov rax, qword ptr [rax+0xB0]
- call [rax+0x20]System.Type:IsAssignableFrom(System.Type):ubyte:this
- ;; size=46 bbWeight=0.50 PerfScore 8.38
-G_M50242_IG10:
test eax, eax
- jne G_M50242_IG15
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M50242_IG11:
+ jne G_M50242_IG11
+ ;; size=45 bbWeight=1 PerfScore 16.25
+G_M50242_IG07:
mov rdi, r12
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
- je SHORT G_M50242_IG12
+ je SHORT G_M50242_IG08
mov rdi, r12
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x68]
mov qword ptr [rbp-0x30], rax
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- jne SHORT G_M50242_IG12
+ jne SHORT G_M50242_IG08
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsInterface():ubyte:this
call [rax]System.RuntimeType:get_IsInterface():ubyte:this
test eax, eax
- jne SHORT G_M50242_IG13
+ jne SHORT G_M50242_IG09
;; size=70 bbWeight=0.50 PerfScore 11.50
-G_M50242_IG12:
+G_M50242_IG08:
mov rsi, r12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
- jmp SHORT G_M50242_IG14
+ jmp SHORT G_M50242_IG10
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M50242_IG13:
+G_M50242_IG09:
mov rax, qword ptr [rbp-0x30]
mov rdi, r12
call [rax+0x28]System.Type:GetGenericArguments():System.Type[]:this
cmp dword ptr [rax+0x08], 0
- jbe G_M50242_IG26
+ jbe G_M50242_IG20
mov rsi, gword ptr [rax+0x10]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
;; size=39 bbWeight=0.50 PerfScore 6.88
-G_M50242_IG14:
+G_M50242_IG10:
test eax, eax
- je G_M50242_IG23
+ je G_M50242_IG17
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M50242_IG15:
+G_M50242_IG11:
cmp byte ptr [r14+0x17], 0
- je SHORT G_M50242_IG19
+ je SHORT G_M50242_IG13
;; size=7 bbWeight=1 PerfScore 4.00
-G_M50242_IG16:
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- sete r12b
- movzx r12, r12b
+G_M50242_IG12:
mov rdi, r14
call [r13+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
mov r13, rax
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
- jne SHORT G_M50242_IG17
- xor eax, eax
- jmp SHORT G_M50242_IG18
- ;; size=68 bbWeight=0.50 PerfScore 9.75
-G_M50242_IG17:
+ je SHORT G_M50242_IG13
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- sete al
- movzx rax, al
- ;; size=33 bbWeight=0.50 PerfScore 4.50
-G_M50242_IG18:
- xor eax, r12d
- jne SHORT G_M50242_IG22
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M50242_IG19:
+ je SHORT G_M50242_IG16
+ ;; size=57 bbWeight=0.50 PerfScore 10.38
+G_M50242_IG13:
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, r13
mov rcx, rbx
mov rdx, r14
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonTypeInfo:.ctor(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):this
call [rax]System.Text.Json.Serialization.Metadata.JsonTypeInfo:.ctor(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):this
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this
call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this
lea rdi, bword ptr [r13+0x140]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
;; size=75 bbWeight=1 PerfScore 11.25
-G_M50242_IG20:
+G_M50242_IG14:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M50242_IG21:
+G_M50242_IG15:
mov rdi, r13
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsNull(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsNull(System.Type)
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M50242_IG22:
+G_M50242_IG16:
mov rsi, r14
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
int3
;; size=19 bbWeight=0 PerfScore 0.00
-G_M50242_IG23:
+G_M50242_IG17:
mov rdi, r14
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializationConverterNotCompatible(System.Type,System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializationConverterNotCompatible(System.Type,System.Type)
int3
;; size=27 bbWeight=0 PerfScore 0.00
-G_M50242_IG24:
+G_M50242_IG18:
mov rdi, r13
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsJsonConverterFactorty(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsJsonConverterFactorty(System.Type)
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M50242_IG25:
+G_M50242_IG19:
mov edi, 0x3958
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowArgumentNullException(System.String)
call [rax]System.Text.Json.ThrowHelper:ThrowArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M50242_IG26:
+G_M50242_IG20:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 16, PerfScore 115.75, instruction count 202, allocated bytes for code 800 (MethodHash=3ef43bbd) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Numerics.Vector`1[float]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]] (FullOpts)
+; Total bytes of code 652, prolog size 16, PerfScore 96.75, instruction count 167, allocated bytes for code 652 (MethodHash=3ef43bbd) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Numerics.Vector`1[float]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Numerics.Vector`1[float]] (FullOpts)
-79 (-30.38 % of base) - System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Numerics.Vector`1[float]]
; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Numerics.Vector`1[float]] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 OutArgs [V00 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Type[]>
; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
-; V03 tmp3 [V03,T02] ( 3, 4 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V04 tmp4 [V04,T05] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V05 tmp5 [V05,T03] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 4, 3 ) ref -> r14 "CSE #01: aggressive"
+;* V03 tmp3 [V03,T03] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Strict ordering of exceptions for Array store" <System.Type>
+;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V05 tmp5 [V05,T02] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M14670_IG01:
push rbp
push r15
- push r14
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x30]
- ;; size=15 bbWeight=1 PerfScore 4.75
+ sub rsp, 16
+ lea rbp, [rsp+0x20]
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M14670_IG02:
xor rdi, rdi
mov gword ptr [rsp], rdi
;; size=6 bbWeight=1 PerfScore 1.25
G_M14670_IG03:
mov gword ptr [rsp+0x08], rdi
mov rdi, 0xD1FFAB1E ; 'UnboxT`1[System.Numerics.Vector`1[System.Single]]'
mov rsi, 0xD1FFAB1E ; 'NullableField'
mov edx, -1
mov ecx, 40
xor r8, r8
mov r9d, 3
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
call [rax]System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
mov rbx, rax
mov rdi, 0xD1FFAB1E ; System.Type[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
- mov r14, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
call [rax]System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
- test eax, eax
- jne SHORT G_M14670_IG05
- ;; size=111 bbWeight=1 PerfScore 12.75
-G_M14670_IG04:
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- je SHORT G_M14670_IG06
- ;; size=30 bbWeight=0.50 PerfScore 2.50
-G_M14670_IG05:
- xor rsi, rsi
- jmp SHORT G_M14670_IG07
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M14670_IG06:
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
- call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
- cmp dword ptr [rax+0x08], 0
- jbe SHORT G_M14670_IG09
- mov rsi, gword ptr [rax+0x10]
- ;; size=25 bbWeight=0.50 PerfScore 4.75
-G_M14670_IG07:
- lea rdi, bword ptr [r15+0x10]
- call CORINFO_HELP_ASSIGN_REF
+ xor rdi, rdi
+ mov gword ptr [r15+0x10], rdi
mov rdi, rbx
mov rsi, r15
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.Reflection.MethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this
mov rdi, rax
mov rsi, 0xD1FFAB1E ; System.Reflection.MethodInfo:CreateDelegate[System.Func`2[System.Object,System.Numerics.Vector`1[float]]]():System.Func`2[System.Object,System.Numerics.Vector`1[float]]:this
mov rax, 0xD1FFAB1E ; code for System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this
cmp dword ptr [rdi], edi
- ;; size=50 bbWeight=1 PerfScore 12.75
-G_M14670_IG08:
- add rsp, 24
+ ;; size=151 bbWeight=1 PerfScore 23.75
+G_M14670_IG04:
+ add rsp, 16
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax]System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M14670_IG09:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 260, prolog size 15, PerfScore 44.12, instruction count 61, allocated bytes for code 260 (MethodHash=fe9dc6b1) for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Numerics.Vector`1[float]] (FullOpts)
+; Total bytes of code 181, prolog size 13, PerfScore 32.50, instruction count 40, allocated bytes for code 181 (MethodHash=fe9dc6b1) for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Numerics.Vector`1[float]] (FullOpts)
-75 (-12.71 % of base) - System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:NullableFieldUsingReflection(System.Object):System.Numerics.Vector`1[float]
; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:NullableFieldUsingReflection(System.Object):System.Numerics.Vector`1[float] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 RetBuf [V00,T01] ( 8, 5 ) byref -> r15 single-def
; V01 arg0 [V01,T00] ( 13, 7.50) ref -> rbx class-hnd <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) simd32 -> zero-ref <System.Numerics.Vector`1[float]>
-; V03 loc1 [V03,T03] ( 6, 3 ) ref -> r14 class-hnd exact single-def <System.RuntimeType>
+; V03 loc1 [V03,T02] ( 6, 3 ) ref -> r14 class-hnd exact single-def <System.RuntimeType>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
;* V06 loc4 [V06 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V08 tmp1 [V08,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Numerics.Vector`1[float]>
-; V09 tmp2 [V09,T11] ( 3, 1.50) ref -> r13
+;* V08 tmp1 [V08,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Numerics.Vector`1[float]>
+; V09 tmp2 [V09,T08] ( 3, 1.50) ref -> r13
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
-; V12 tmp5 [V12,T12] ( 3, 1.50) ref -> rax
-; V13 tmp6 [V13,T13] ( 3, 1.50) ref -> rax
-; V14 tmp7 [V14,T02] ( 10, 5 ) ref -> r12 class-hnd "Inline return value spill temp" <System.Type>
+;* V12 tmp5 [V12,T12] ( 0, 0 ) ref -> zero-ref
+; V13 tmp6 [V13,T09] ( 3, 1.50) ref -> rax
+;* V14 tmp7 [V14,T13] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Type>
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType[]>
-; V16 tmp9 [V16,T08] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V17 tmp10 [V17,T04] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V18 tmp11 [V18,T05] ( 3, 3 ) ref -> r13 single-def "arr expr"
-; V19 tmp12 [V19,T06] ( 3, 3 ) int -> rax "index expr"
-; V20 cse0 [V20,T14] ( 3, 1.50) long -> r14 "CSE #05: moderate"
-; V21 cse1 [V21,T07] ( 4, 2 ) ref -> r13 "CSE #03: moderate"
-; V22 cse2 [V22,T09] ( 5, 1.75) long -> rdi multi-def "CSE #02: moderate"
-; V23 cse3 [V23,T15] ( 2, 0.50) long -> rax "CSE #01: conservative"
+; V16 tmp9 [V16,T05] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
+;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V18 tmp11 [V18,T03] ( 3, 3 ) ref -> r13 single-def "arr expr"
+; V19 tmp12 [V19,T04] ( 3, 3 ) int -> rax "index expr"
+; V20 cse0 [V20,T10] ( 3, 1.50) long -> r14 "CSE #04: moderate"
+; V21 cse1 [V21,T06] ( 5, 1.75) long -> rdi multi-def "CSE #02: moderate"
+; V22 cse2 [V22,T11] ( 2, 0.50) long -> rax "CSE #01: conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M40660_IG01:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov r15, rdi
mov rbx, rsi
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M40660_IG02:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M40660_IG25
+ je G_M40660_IG20
;; size=19 bbWeight=1 PerfScore 4.25
G_M40660_IG03:
mov rax, 0xD1FFAB1E ; data for System.DBNull:Value
cmp rbx, gword ptr [rax]
- je G_M40660_IG23
+ je G_M40660_IG18
;; size=19 bbWeight=1 PerfScore 4.25
G_M40660_IG04:
test rbx, rbx
je SHORT G_M40660_IG08
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M40660_IG05:
mov rax, qword ptr [rbx]
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
cmp rax, rdi
jne SHORT G_M40660_IG08
;; size=18 bbWeight=0.25 PerfScore 0.88
G_M40660_IG06:
vmovups ymm0, ymmword ptr [rbx+0x08]
vmovups ymmword ptr [r15], ymm0
mov rax, r15
;; size=13 bbWeight=0.50 PerfScore 3.62
G_M40660_IG07:
vzeroupper
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M40660_IG08:
mov rdi, rbx
call System.Object:GetType():System.Type:this
mov r14, rax
- mov r13, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rdi, r13
+ mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
call [rax]System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
- test eax, eax
- jne SHORT G_M40660_IG09
- mov rdi, r13
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- je SHORT G_M40660_IG10
- ;; size=70 bbWeight=0.50 PerfScore 5.75
-G_M40660_IG09:
- xor r12, r12
- jmp SHORT G_M40660_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M40660_IG10:
- mov rdi, r13
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
- call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
- cmp dword ptr [rax+0x08], 0
- jbe G_M40660_IG28
- mov r12, gword ptr [rax+0x10]
- ;; size=29 bbWeight=0.50 PerfScore 4.75
-G_M40660_IG11:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsEnum():ubyte:this
call [rax]System.RuntimeType:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M40660_IG13
+ je SHORT G_M40660_IG10
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsActualEnum():ubyte:this
call [rax]System.RuntimeType:get_IsActualEnum():ubyte:this
test eax, eax
- je G_M40660_IG27
+ je G_M40660_IG22
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M40660_IG26
- ;; size=61 bbWeight=0.50 PerfScore 6.88
-G_M40660_IG12:
+ je G_M40660_IG21
+ ;; size=94 bbWeight=0.50 PerfScore 9.38
+G_M40660_IG09:
mov rdi, 0xD1FFAB1E ; data for System.Enum:s_underlyingTypes
mov r13, gword ptr [rdi]
mov rdi, qword ptr [r14+0x18]
call System.Enum:InternalGetCorElementType(ulong):ubyte
cmp eax, dword ptr [r13+0x08]
- jae G_M40660_IG28
+ jae G_M40660_IG24
mov edi, eax
mov r13, gword ptr [r13+8*rdi+0x10]
- jmp SHORT G_M40660_IG14
+ jmp SHORT G_M40660_IG11
;; size=41 bbWeight=0.50 PerfScore 6.75
-G_M40660_IG13:
+G_M40660_IG10:
mov r13, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M40660_IG14:
- mov rdi, r12
- mov rax, qword ptr [r12]
+G_M40660_IG11:
+ xor rdi, rdi
+ mov rax, qword ptr [0x0000]
mov r14, qword ptr [rax+0x70]
call [r14+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M40660_IG15
- mov rdi, r12
- mov rax, qword ptr [r12]
- mov rax, qword ptr [rax+0xA0]
- call [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
- jmp SHORT G_M40660_IG16
- ;; size=38 bbWeight=0.50 PerfScore 8.88
-G_M40660_IG15:
- mov rax, r12
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M40660_IG16:
+ jne G_M40660_IG23
mov rdi, r13
- mov rsi, rax
+ xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for System.Type:op_Equality(System.Type,System.Type):ubyte
call [rax]System.Type:op_Equality(System.Type,System.Type):ubyte
test eax, eax
- je SHORT G_M40660_IG19
- mov rdi, r12
+ je SHORT G_M40660_IG14
+ xor rdi, rdi
call [r14+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M40660_IG17
- mov rdi, r12
+ je SHORT G_M40660_IG12
+ xor rdi, rdi
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Enum:ToObject(System.Type,System.Object):System.Object
call [rax]System.Enum:ToObject(System.Type,System.Object):System.Object
- jmp SHORT G_M40660_IG18
- ;; size=53 bbWeight=0.50 PerfScore 7.62
-G_M40660_IG17:
+ jmp SHORT G_M40660_IG13
+ ;; size=76 bbWeight=0.50 PerfScore 11.88
+G_M40660_IG12:
mov rdi, rbx
- mov rsi, r12
+ xor rsi, rsi
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object
call [rax]System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object
- ;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M40660_IG18:
+ ;; size=19 bbWeight=0.50 PerfScore 2.00
+G_M40660_IG13:
mov rbx, rax
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M40660_IG19:
+G_M40660_IG14:
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
cmp qword ptr [rbx], rdi
- je SHORT G_M40660_IG21
+ je SHORT G_M40660_IG16
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M40660_IG20:
+G_M40660_IG15:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=15 bbWeight=0.25 PerfScore 0.88
-G_M40660_IG21:
+G_M40660_IG16:
vmovups ymm0, ymmword ptr [rbx+0x08]
vmovups ymmword ptr [r15], ymm0
mov rax, r15
;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M40660_IG22:
+G_M40660_IG17:
vzeroupper
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M40660_IG23:
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M40660_IG18:
vxorps ymm0, ymm0, ymm0
vmovups ymmword ptr [r15], ymm0
mov rax, r15
;; size=12 bbWeight=0.50 PerfScore 1.29
-G_M40660_IG24:
+G_M40660_IG19:
vzeroupper
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M40660_IG25:
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M40660_IG20:
mov rdi, 0xD1FFAB1E ; System.DBNull
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M40660_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40660_IG26:
+G_M40660_IG21:
mov rdi, 0xD1FFAB1E ; System.Enum
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M40660_IG12
+ jmp G_M40660_IG09
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40660_IG27:
+G_M40660_IG22:
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:ThrowMustBeEnum()
call [rax]System.RuntimeType:ThrowMustBeEnum()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M40660_IG28:
+G_M40660_IG23:
+ mov edi, 0x4C5
+ 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
+G_M40660_IG24:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 590, prolog size 16, PerfScore 81.54, instruction count 154, allocated bytes for code 590 (MethodHash=3a1e612b) for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:NullableFieldUsingReflection(System.Object):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 515, prolog size 13, PerfScore 64.54, instruction count 130, allocated bytes for code 515 (MethodHash=3a1e612b) for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:NullableFieldUsingReflection(System.Object):System.Numerics.Vector`1[float] (FullOpts)
-71 (-23.59 % of base) - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this
; Assembly listing for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 10, 6 ) ref -> rbx this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 loc0 [V01,T04] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T07] ( 3, 1.50) ref -> rax
+; V05 tmp3 [V05,T06] ( 3, 1.50) ref -> rax
; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> rax
; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.Numerics.Vector`1[float]]>
-; V08 tmp6 [V08,T06] ( 2, 2 ) int -> r15 "non-inline candidate call"
-; V09 tmp7 [V09,T08] ( 3, 1.50) ubyte -> r13 "Inline return value spill temp"
-; V10 tmp8 [V10,T01] ( 5, 5 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Type>
+;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp8 [V10,T01] ( 5, 5 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Type>
;
; Lcl frame size = 0
G_M27543_IG01:
push rbp
push r15
- push r14
- push r13
push rbx
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M27543_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- jne G_M27543_IG10
+ jne G_M27543_IG08
;; size=34 bbWeight=1 PerfScore 5.00
G_M27543_IG03:
cmp byte ptr [rbx+0x17], 0
- je SHORT G_M27543_IG06
- mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- sete r15b
- movzx r15, r15b
+ je SHORT G_M27543_IG04
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
- mov r14, rax
- mov rdi, r14
- mov rax, qword ptr [r14]
+ mov r15, rax
+ mov rdi, r15
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
- jne SHORT G_M27543_IG04
- xor r13d, r13d
- jmp SHORT G_M27543_IG05
- ;; size=87 bbWeight=0.50 PerfScore 13.75
-G_M27543_IG04:
- mov rdi, r14
- mov rax, qword ptr [r14]
+ je SHORT G_M27543_IG04
+ mov rdi, r15
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- sete r13b
- movzx r13, r13b
- ;; size=34 bbWeight=0.50 PerfScore 4.50
-G_M27543_IG05:
- xor r15d, r13d
- jne SHORT G_M27543_IG11
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M27543_IG06:
+ je SHORT G_M27543_IG09
+ ;; size=67 bbWeight=0.50 PerfScore 14.38
+G_M27543_IG04:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]System.Text.Json.Serialization.JsonConverter:get_SourceConverterForCastingConverter():System.Text.Json.Serialization.JsonConverter:this
test rax, rax
- je SHORT G_M27543_IG07
+ je SHORT G_M27543_IG05
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this
call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this
- jmp SHORT G_M27543_IG08
+ jmp SHORT G_M27543_IG06
;; size=35 bbWeight=0.50 PerfScore 7.00
-G_M27543_IG07:
+G_M27543_IG05:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M27543_IG08:
+G_M27543_IG06:
test rax, rax
- jne SHORT G_M27543_IG09
+ jne SHORT G_M27543_IG07
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Converters.CastingConverter`1[System.Numerics.Vector`1[float]]
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, r15
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Converters.CastingConverter`1[System.Numerics.Vector`1[float]]:.ctor(System.Text.Json.Serialization.JsonConverter):this
call [rax]System.Text.Json.Serialization.Converters.CastingConverter`1[System.Numerics.Vector`1[float]]:.ctor(System.Text.Json.Serialization.JsonConverter):this
mov rax, r15
;; size=44 bbWeight=0.50 PerfScore 3.38
-G_M27543_IG09:
+G_M27543_IG07:
pop rbx
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M27543_IG10:
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M27543_IG08:
pop rbx
- pop r13
- pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M27543_IG11:
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M27543_IG09:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 301, prolog size 13, PerfScore 43.62, instruction count 83, allocated bytes for code 301 (MethodHash=a5569468) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this (FullOpts)
+; Total bytes of code 230, prolog size 9, PerfScore 36.12, instruction count 65, allocated bytes for code 230 (MethodHash=a5569468) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this (FullOpts)
-62 (-7.75 % of base) - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Nullable`1[int]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]
; Assembly listing for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Nullable`1[int]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Text.Json.JsonSerializerOptions>
+; V00 arg0 [V00,T03] ( 6, 5.50) ref -> rbx class-hnd single-def <System.Text.Json.JsonSerializerOptions>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]>
+; V02 tmp1 [V02,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
; V04 tmp3 [V04,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverter>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
-; V06 tmp5 [V06,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" <System.Text.Json.Serialization.JsonConverter>
+; V06 tmp5 [V06,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" <System.Text.Json.Serialization.JsonConverter>
; V07 tmp6 [V07,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverterFactory>
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.Json.Serialization.JsonConverter>
; V09 tmp8 [V09,T11] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Text.Json.Serialization.JsonConverter>
-; V10 tmp9 [V10,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V11 tmp10 [V11,T00] ( 12, 13 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Type>
+; V10 tmp9 [V10,T15] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V11 tmp10 [V11,T00] ( 12, 14 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Type>
; V12 tmp11 [V12,T12] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
;* V13 tmp12 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp13 [V14,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V14 tmp13 [V14,T16] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.RuntimeType>
-;* V16 tmp15 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp16 [V17,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V16 tmp15 [V16,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V17 tmp16 [V17,T19] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-; V19 tmp18 [V19,T15] ( 2, 2 ) int -> r12 "non-inline candidate call"
-; V20 tmp19 [V20,T18] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+; V20 tmp19 [V20,T17] ( 3, 1.50) ubyte -> r12 "Inline return value spill temp"
; V21 tmp20 [V21,T06] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Type>
; V22 tmp21 [V22,T08] ( 3, 3 ) ref -> rax single-def "arr expr"
; V23 tmp22 [V23,T13] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V24 tmp23 [V24,T09] ( 3, 3 ) ref -> rax single-def "arr expr"
; V25 tmp24 [V25,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V26 tmp25 [V26,T22] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V27 cse0 [V27,T19] ( 3, 1.50) long -> [rbp-0x30] "CSE #06: moderate"
-; V28 cse1 [V28,T10] ( 3, 2.50) long -> r13 "CSE #08: moderate"
-; V29 cse2 [V29,T02] ( 14, 8 ) ref -> r15 "CSE #01: aggressive"
+; V26 tmp25 [V26,T21] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V27 cse0 [V27,T18] ( 3, 1.50) long -> [rbp-0x30] "CSE #05: moderate"
+; V28 cse1 [V28,T10] ( 3, 2.50) long -> r13 "CSE #07: moderate"
+; V29 cse2 [V29,T05] ( 12, 6.50) ref -> r15 "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M62242_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdi
;; size=19 bbWeight=1 PerfScore 7.75
G_M62242_IG02:
test rbx, rbx
- je G_M62242_IG25
+ je G_M62242_IG24
mov rdi, rbx
mov r15, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this
call [rax]System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this
mov r14, rax
test r14, r14
jne SHORT G_M62242_IG04
;; size=45 bbWeight=1 PerfScore 6.75
G_M62242_IG03:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetBuiltInConverter(System.Type):System.Text.Json.Serialization.JsonConverter
call [rax]System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetBuiltInConverter(System.Type):System.Text.Json.Serialization.JsonConverter
mov r14, rax
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M62242_IG04:
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r13, rax
test r13, r13
je SHORT G_M62242_IG06
;; size=33 bbWeight=1 PerfScore 5.25
G_M62242_IG05:
mov rdi, r13
mov rdx, rbx
mov rsi, r15
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x60]
call [rax]System.Text.Json.Serialization.JsonConverterFactory:CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this
mov r14, rax
test r14, r14
- je G_M62242_IG21
+ je G_M62242_IG20
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- jne G_M62242_IG24
+ jne G_M62242_IG23
;; size=65 bbWeight=0.50 PerfScore 7.12
G_M62242_IG06:
mov rdi, r14
mov rax, qword ptr [r14]
mov r13, qword ptr [rax+0x40]
call [r13+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
mov r12, rax
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- jne SHORT G_M62242_IG08
- ;; size=47 bbWeight=1 PerfScore 12.50
-G_M62242_IG07:
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Type:get_IsInterface():ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Type:get_IsInterface():ubyte:this
test eax, eax
- jne SHORT G_M62242_IG09
- ;; size=21 bbWeight=0.50 PerfScore 3.88
-G_M62242_IG08:
+ jne SHORT G_M62242_IG08
+ ;; size=38 bbWeight=1 PerfScore 15.25
+G_M62242_IG07:
mov rdi, r12
mov rsi, r15
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0xB0]
call [rax+0x20]System.Type:IsAssignableFrom(System.Type):ubyte:this
- jmp SHORT G_M62242_IG10
+ jmp SHORT G_M62242_IG09
;; size=22 bbWeight=0.50 PerfScore 4.75
-G_M62242_IG09:
+G_M62242_IG08:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
cmp dword ptr [rax+0x08], 0
- jbe G_M62242_IG26
+ jbe G_M62242_IG25
mov rsi, gword ptr [rax+0x10]
mov rdi, r12
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0xB0]
call [rax+0x20]System.Type:IsAssignableFrom(System.Type):ubyte:this
;; size=46 bbWeight=0.50 PerfScore 8.38
-G_M62242_IG10:
+G_M62242_IG09:
test eax, eax
- jne G_M62242_IG15
+ jne G_M62242_IG14
;; size=8 bbWeight=1 PerfScore 1.25
-G_M62242_IG11:
+G_M62242_IG10:
mov rdi, r12
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
- je SHORT G_M62242_IG12
+ je SHORT G_M62242_IG11
mov rdi, r12
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x68]
mov qword ptr [rbp-0x30], rax
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- jne SHORT G_M62242_IG12
+ jne SHORT G_M62242_IG11
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsInterface():ubyte:this
call [rax]System.RuntimeType:get_IsInterface():ubyte:this
test eax, eax
- jne SHORT G_M62242_IG13
+ jne SHORT G_M62242_IG12
;; size=70 bbWeight=0.50 PerfScore 11.50
-G_M62242_IG12:
+G_M62242_IG11:
mov rsi, r12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
- jmp SHORT G_M62242_IG14
+ jmp SHORT G_M62242_IG13
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M62242_IG13:
+G_M62242_IG12:
mov rax, qword ptr [rbp-0x30]
mov rdi, r12
call [rax+0x28]System.Type:GetGenericArguments():System.Type[]:this
cmp dword ptr [rax+0x08], 0
- jbe G_M62242_IG26
+ jbe G_M62242_IG25
mov rsi, gword ptr [rax+0x10]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this
;; size=39 bbWeight=0.50 PerfScore 6.88
-G_M62242_IG14:
+G_M62242_IG13:
test eax, eax
- je G_M62242_IG23
+ je G_M62242_IG22
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M62242_IG15:
+G_M62242_IG14:
cmp byte ptr [r14+0x17], 0
- je SHORT G_M62242_IG19
+ je SHORT G_M62242_IG18
;; size=7 bbWeight=1 PerfScore 4.00
-G_M62242_IG16:
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- sete r12b
- movzx r12, r12b
+G_M62242_IG15:
mov rdi, r14
call [r13+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
mov r13, rax
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
- jne SHORT G_M62242_IG17
- xor eax, eax
- jmp SHORT G_M62242_IG18
- ;; size=68 bbWeight=0.50 PerfScore 9.75
-G_M62242_IG17:
+ jne SHORT G_M62242_IG16
+ xor r12d, r12d
+ jmp SHORT G_M62242_IG17
+ ;; size=33 bbWeight=0.50 PerfScore 7.12
+G_M62242_IG16:
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- sete al
- movzx rax, al
- ;; size=33 bbWeight=0.50 PerfScore 4.50
+ sete r12b
+ movzx r12, r12b
+ ;; size=35 bbWeight=0.50 PerfScore 4.50
+G_M62242_IG17:
+ xor r12d, 1
+ jne SHORT G_M62242_IG21
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
G_M62242_IG18:
- xor eax, r12d
- jne SHORT G_M62242_IG22
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M62242_IG19:
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, r13
mov rcx, rbx
mov rdx, r14
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Metadata.JsonTypeInfo:.ctor(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):this
call [rax]System.Text.Json.Serialization.Metadata.JsonTypeInfo:.ctor(System.Type,System.Text.Json.Serialization.JsonConverter,System.Text.Json.JsonSerializerOptions):this
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this
call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this
lea rdi, bword ptr [r13+0x140]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
;; size=75 bbWeight=1 PerfScore 11.25
-G_M62242_IG20:
+G_M62242_IG19:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M62242_IG21:
+G_M62242_IG20:
mov rdi, r13
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsNull(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsNull(System.Type)
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62242_IG22:
+G_M62242_IG21:
mov rsi, r14
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
int3
;; size=19 bbWeight=0 PerfScore 0.00
-G_M62242_IG23:
+G_M62242_IG22:
mov rdi, r14
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializationConverterNotCompatible(System.Type,System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializationConverterNotCompatible(System.Type,System.Type)
int3
;; size=27 bbWeight=0 PerfScore 0.00
-G_M62242_IG24:
+G_M62242_IG23:
mov rdi, r13
call System.Object:GetType():System.Type:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsJsonConverterFactorty(System.Type)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_SerializerConverterFactoryReturnsJsonConverterFactorty(System.Type)
int3
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62242_IG25:
+G_M62242_IG24:
mov edi, 0x3958
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowArgumentNullException(System.String)
call [rax]System.Text.Json.ThrowHelper:ThrowArgumentNullException(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M62242_IG26:
+G_M62242_IG25:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 800, prolog size 16, PerfScore 115.75, instruction count 202, allocated bytes for code 800 (MethodHash=17d10cdd) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Nullable`1[int]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]] (FullOpts)
+; Total bytes of code 738, prolog size 16, PerfScore 112.00, instruction count 189, allocated bytes for code 738 (MethodHash=17d10cdd) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.Nullable`1[int]](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]] (FullOpts)
-39 (-12.96 % of base) - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this
; Assembly listing for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 10, 6 ) ref -> rbx this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 loc0 [V01,T04] ( 3, 2.50) ref -> rax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T07] ( 3, 1.50) ref -> rax
+; V05 tmp3 [V05,T06] ( 3, 1.50) ref -> rax
; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> rax
; V07 tmp5 [V07,T03] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.Nullable`1[int]]>
-; V08 tmp6 [V08,T06] ( 2, 2 ) int -> r15 "non-inline candidate call"
-; V09 tmp7 [V09,T08] ( 3, 1.50) ubyte -> r13 "Inline return value spill temp"
-; V10 tmp8 [V10,T01] ( 5, 5 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Type>
+;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+; V09 tmp7 [V09,T07] ( 3, 1.50) ubyte -> r14 "Inline return value spill temp"
+; V10 tmp8 [V10,T01] ( 5, 5 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Type>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M61975_IG01:
push rbp
push r15
push r14
- push r13
push rbx
+ push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M61975_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne G_M61975_IG10
;; size=34 bbWeight=1 PerfScore 5.00
G_M61975_IG03:
cmp byte ptr [rbx+0x17], 0
je SHORT G_M61975_IG06
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- sete r15b
- movzx r15, r15b
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Text.Json.Serialization.JsonConverter:get_Type():System.Type:this
- mov r14, rax
- mov rdi, r14
- mov rax, qword ptr [r14]
+ mov r15, rax
+ mov rdi, r15
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
jne SHORT G_M61975_IG04
- xor r13d, r13d
+ xor r14d, r14d
jmp SHORT G_M61975_IG05
- ;; size=87 bbWeight=0.50 PerfScore 13.75
+ ;; size=44 bbWeight=0.50 PerfScore 11.12
G_M61975_IG04:
- mov rdi, r14
- mov rax, qword ptr [r14]
+ mov rdi, r15
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
cmp rax, rdi
- sete r13b
- movzx r13, r13b
+ sete r14b
+ movzx r14, r14b
;; size=34 bbWeight=0.50 PerfScore 4.50
G_M61975_IG05:
- xor r15d, r13d
+ xor r14d, 1
jne SHORT G_M61975_IG11
- ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
G_M61975_IG06:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
call [rax+0x20]System.Text.Json.Serialization.JsonConverter:get_SourceConverterForCastingConverter():System.Text.Json.Serialization.JsonConverter:this
test rax, rax
je SHORT G_M61975_IG07
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this
call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this
jmp SHORT G_M61975_IG08
;; size=35 bbWeight=0.50 PerfScore 7.00
G_M61975_IG07:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M61975_IG08:
test rax, rax
jne SHORT G_M61975_IG09
mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Converters.CastingConverter`1[System.Nullable`1[int]]
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, r15
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Serialization.Converters.CastingConverter`1[System.Nullable`1[int]]:.ctor(System.Text.Json.Serialization.JsonConverter):this
call [rax]System.Text.Json.Serialization.Converters.CastingConverter`1[System.Nullable`1[int]]:.ctor(System.Text.Json.Serialization.JsonConverter):this
mov rax, r15
;; size=44 bbWeight=0.50 PerfScore 3.38
G_M61975_IG09:
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M61975_IG10:
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M61975_IG11:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_ConverterCanConvertMultipleTypes(System.Type,System.Text.Json.Serialization.JsonConverter)
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 301, prolog size 13, PerfScore 43.62, instruction count 83, allocated bytes for code 301 (MethodHash=f7610de8) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this (FullOpts)
+; Total bytes of code 262, prolog size 12, PerfScore 40.75, instruction count 76, allocated bytes for code 262 (MethodHash=f7610de8) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this (FullOpts)
-32 (-29.36 % of base) - System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte
; Assembly listing for method System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 5 ) ref -> rbx class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>
-; V03 tmp2 [V03,T01] ( 2, 2 ) ref -> rbx single-def "argument with side effect"
-; V04 tmp3 [V04,T02] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
;
; Lcl frame size = 8
G_M27238_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M27238_IG02:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
je SHORT G_M27238_IG04
;; size=17 bbWeight=1 PerfScore 8.50
G_M27238_IG03:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
- mov rbx, rax
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rsi, rax
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Type:op_Equality(System.Type,System.Type):ubyte
- call [rax]System.Type:op_Equality(System.Type,System.Type):ubyte
- test eax, eax
- jne SHORT G_M27238_IG06
- ;; size=60 bbWeight=0.50 PerfScore 8.00
+ mov rcx, 0xD1FFAB1E ; 'System.Nullable`1[T]'
+ cmp rax, rcx
+ je SHORT G_M27238_IG06
+ ;; size=28 bbWeight=0.50 PerfScore 4.38
G_M27238_IG04:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M27238_IG05:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M27238_IG06:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M27238_IG07:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 109, prolog size 8, PerfScore 22.75, instruction count 35, allocated bytes for code 109 (MethodHash=14419599) for method System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte (FullOpts)
+; Total bytes of code 77, prolog size 8, PerfScore 19.12, instruction count 28, allocated bytes for code 77 (MethodHash=14419599) for method System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte (FullOpts)
-30 (-11.54 % of base) - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Nullable`1[int]]
; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Nullable`1[int]] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 OutArgs [V00 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Type[]>
; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
; V03 tmp3 [V03,T02] ( 3, 4 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Type>
-; V04 tmp4 [V04,T05] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V04 tmp4 [V04,T04] ( 3, 3 ) ref -> rax single-def "arr expr"
; V05 tmp5 [V05,T03] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 4, 3 ) ref -> r14 "CSE #01: aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M40398_IG01:
push rbp
push r15
- push r14
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x30]
- ;; size=15 bbWeight=1 PerfScore 4.75
+ sub rsp, 16
+ lea rbp, [rsp+0x20]
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M40398_IG02:
xor rdi, rdi
mov gword ptr [rsp], rdi
;; size=6 bbWeight=1 PerfScore 1.25
G_M40398_IG03:
mov gword ptr [rsp+0x08], rdi
mov rdi, 0xD1FFAB1E ; 'UnboxT`1[System.Nullable`1[System.Int32]]'
mov rsi, 0xD1FFAB1E ; 'NullableField'
mov edx, -1
mov ecx, 40
xor r8, r8
mov r9d, 3
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
call [rax]System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
mov rbx, rax
mov rdi, 0xD1FFAB1E ; System.Type[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
- mov r14, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
call [rax]System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
test eax, eax
- jne SHORT G_M40398_IG05
- ;; size=111 bbWeight=1 PerfScore 12.75
+ je SHORT G_M40398_IG05
+ ;; size=108 bbWeight=1 PerfScore 12.50
G_M40398_IG04:
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- je SHORT G_M40398_IG06
- ;; size=30 bbWeight=0.50 PerfScore 2.50
-G_M40398_IG05:
xor rsi, rsi
- jmp SHORT G_M40398_IG07
+ jmp SHORT G_M40398_IG06
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M40398_IG06:
- mov rdi, r14
+G_M40398_IG05:
+ mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
cmp dword ptr [rax+0x08], 0
- jbe SHORT G_M40398_IG09
+ jbe SHORT G_M40398_IG08
mov rsi, gword ptr [rax+0x10]
- ;; size=25 bbWeight=0.50 PerfScore 4.75
-G_M40398_IG07:
+ ;; size=32 bbWeight=0.50 PerfScore 4.75
+G_M40398_IG06:
lea rdi, bword ptr [r15+0x10]
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rsi, r15
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x38]System.Reflection.MethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this
mov rdi, rax
mov rsi, 0xD1FFAB1E ; System.Reflection.MethodInfo:CreateDelegate[System.Func`2[System.Object,System.Nullable`1[int]]]():System.Func`2[System.Object,System.Nullable`1[int]]:this
mov rax, 0xD1FFAB1E ; code for System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this
cmp dword ptr [rdi], edi
;; size=50 bbWeight=1 PerfScore 12.75
-G_M40398_IG08:
- add rsp, 24
+G_M40398_IG07:
+ add rsp, 16
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax]System.Reflection.MethodInfo:CreateDelegate[System.__Canon]():System.__Canon:this
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M40398_IG09:
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M40398_IG08:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 15, PerfScore 44.12, instruction count 61, allocated bytes for code 260 (MethodHash=9e046231) for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Nullable`1[int]] (FullOpts)
+; Total bytes of code 230, prolog size 13, PerfScore 39.88, instruction count 52, allocated bytes for code 230 (MethodHash=9e046231) for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,System.Nullable`1[int]] (FullOpts)
-30 (-5.40 % of base) - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int]
; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
; Emitting BLENDED_CODE for X86 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 11, 6.75) ref -> rbx class-hnd <System.Object>
; V01 loc0 [V01 ] ( 2, 1 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed <System.Nullable`1[int]>
; V02 loc1 [V02,T02] ( 6, 3 ) ref -> r15 class-hnd exact single-def <System.RuntimeType>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Int32>
-; V08 tmp2 [V08,T09] ( 3, 1.50) ref -> r14
+;* V07 tmp1 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Int32>
+; V08 tmp2 [V08,T08] ( 3, 1.50) ref -> r14
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref
-; V11 tmp5 [V11,T10] ( 3, 1.50) ref -> rax
+; V11 tmp5 [V11,T09] ( 3, 1.50) ref -> rax
; V12 tmp6 [V12 ] ( 2, 2 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed "pseudo return buffer" <System.Nullable`1[int]>
-; V13 tmp7 [V13,T11] ( 3, 1.50) ref -> rax
+; V13 tmp7 [V13,T10] ( 3, 1.50) ref -> rax
; V14 tmp8 [V14,T01] ( 10, 5 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Type>
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType[]>
-; V16 tmp10 [V16,T07] ( 2, 2 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
+; V16 tmp10 [V16,T06] ( 2, 2 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
; V17 tmp11 [V17 ] ( 2, 1 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V01.hasValue (fldOffset=0x0)" P-DEP
; V18 tmp12 [V18 ] ( 2, 1 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V01.value (fldOffset=0x4)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V05.hasValue (fldOffset=0x0)" P-DEP
;* V20 tmp14 [V20 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V05.value (fldOffset=0x4)" P-DEP
; V21 tmp15 [V21 ] ( 2, 2 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
; V22 tmp16 [V22 ] ( 2, 2 ) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
; V23 tmp17 [V23,T03] ( 3, 3 ) ref -> rax single-def "arr expr"
; V24 tmp18 [V24,T04] ( 3, 3 ) ref -> r14 single-def "arr expr"
; V25 tmp19 [V25,T05] ( 3, 3 ) int -> rax "index expr"
; V26 cse0 [V26,T12] ( 3, 1.50) long -> r15 "CSE #03: moderate"
-; V27 cse1 [V27,T06] ( 4, 2 ) ref -> r14 "CSE #01: moderate"
+; V27 cse1 [V27,T11] ( 3, 1.50) ref -> r14 "CSE #01: moderate"
;
; Lcl frame size = 16
G_M38004_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
lea rbp, [rsp+0x30]
mov rbx, rdi
;; size=20 bbWeight=1 PerfScore 6.00
G_M38004_IG02:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M38004_IG23
+ je G_M38004_IG22
;; size=19 bbWeight=1 PerfScore 4.25
G_M38004_IG03:
mov rdi, 0xD1FFAB1E ; data for System.DBNull:Value
cmp rbx, gword ptr [rdi]
- je G_M38004_IG21
+ je G_M38004_IG20
;; size=19 bbWeight=1 PerfScore 4.25
G_M38004_IG04:
test rbx, rbx
je SHORT G_M38004_IG08
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M38004_IG05:
mov rdi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rbx], rdi
jne SHORT G_M38004_IG08
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M38004_IG06:
lea rdi, [rbp-0x28]
mov rdx, rbx
mov rsi, 0xD1FFAB1E ; System.Nullable`1[int]
call CORINFO_HELP_UNBOX_NULLABLE
mov rax, qword ptr [rbp-0x28]
;; size=26 bbWeight=0.50 PerfScore 1.50
G_M38004_IG07:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
G_M38004_IG08:
mov rdi, rbx
call System.Object:GetType():System.Type:this
mov r15, rax
mov r14, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
call [rax]System.RuntimeType:get_IsGenericTypeDefinition():ubyte:this
test eax, eax
- jne SHORT G_M38004_IG09
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- call [rax]System.RuntimeType:GetGenericTypeDefinition():System.Type:this
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[T]'
- cmp rax, rdi
- je SHORT G_M38004_IG10
- ;; size=70 bbWeight=0.50 PerfScore 5.75
-G_M38004_IG09:
+ je SHORT G_M38004_IG09
xor r13, r13
- jmp SHORT G_M38004_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M38004_IG10:
+ jmp SHORT G_M38004_IG10
+ ;; size=45 bbWeight=0.50 PerfScore 4.38
+G_M38004_IG09:
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this
call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this
cmp dword ptr [rax+0x08], 0
- jbe G_M38004_IG26
+ jbe G_M38004_IG25
mov r13, gword ptr [rax+0x10]
;; size=29 bbWeight=0.50 PerfScore 4.75
-G_M38004_IG11:
+G_M38004_IG10:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsEnum():ubyte:this
call [rax]System.RuntimeType:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M38004_IG13
+ je SHORT G_M38004_IG12
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsActualEnum():ubyte:this
call [rax]System.RuntimeType:get_IsActualEnum():ubyte:this
test eax, eax
- je G_M38004_IG25
+ je G_M38004_IG24
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M38004_IG24
+ je G_M38004_IG23
;; size=61 bbWeight=0.50 PerfScore 6.88
-G_M38004_IG12:
+G_M38004_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Enum:s_underlyingTypes
mov r14, gword ptr [rdi]
mov rdi, qword ptr [r15+0x18]
call System.Enum:InternalGetCorElementType(ulong):ubyte
cmp eax, dword ptr [r14+0x08]
- jae G_M38004_IG26
+ jae G_M38004_IG25
mov edi, eax
mov r14, gword ptr [r14+8*rdi+0x10]
- jmp SHORT G_M38004_IG14
+ jmp SHORT G_M38004_IG13
;; size=41 bbWeight=0.50 PerfScore 6.75
-G_M38004_IG13:
+G_M38004_IG12:
mov r14, r15
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M38004_IG14:
+G_M38004_IG13:
mov rdi, r13
mov rax, qword ptr [r13]
mov r15, qword ptr [rax+0x70]
call [r15+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M38004_IG15
+ je SHORT G_M38004_IG14
mov rdi, r13
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0xA0]
call [rax+0x18]System.Type:GetEnumUnderlyingType():System.Type:this
- jmp SHORT G_M38004_IG16
+ jmp SHORT G_M38004_IG15
;; size=38 bbWeight=0.50 PerfScore 8.88
-G_M38004_IG15:
+G_M38004_IG14:
mov rax, r13
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M38004_IG16:
+G_M38004_IG15:
mov rdi, r14
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for System.Type:op_Equality(System.Type,System.Type):ubyte
call [rax]System.Type:op_Equality(System.Type,System.Type):ubyte
test eax, eax
- je SHORT G_M38004_IG19
+ je SHORT G_M38004_IG18
mov rdi, r13
call [r15+0x30]System.Type:get_IsEnum():ubyte:this
test eax, eax
- je SHORT G_M38004_IG17
+ je SHORT G_M38004_IG16
mov rdi, r13
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Enum:ToObject(System.Type,System.Object):System.Object
call [rax]System.Enum:ToObject(System.Type,System.Object):System.Object
- jmp SHORT G_M38004_IG18
+ jmp SHORT G_M38004_IG17
;; size=53 bbWeight=0.50 PerfScore 7.62
-G_M38004_IG17:
+G_M38004_IG16:
mov rdi, rbx
mov rsi, r13
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object
call [rax]System.Convert:ChangeType(System.Object,System.Type,System.IFormatProvider):System.Object
;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M38004_IG18:
+G_M38004_IG17:
mov rbx, rax
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M38004_IG19:
+G_M38004_IG18:
lea rdi, [rbp-0x30]
mov rdx, rbx
mov rsi, 0xD1FFAB1E ; System.Nullable`1[int]
call CORINFO_HELP_UNBOX_NULLABLE
mov rax, qword ptr [rbp-0x30]
;; size=26 bbWeight=0.50 PerfScore 1.50
-G_M38004_IG20:
+G_M38004_IG19:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M38004_IG21:
+G_M38004_IG20:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M38004_IG22:
+G_M38004_IG21:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M38004_IG23:
+G_M38004_IG22:
mov rdi, 0xD1FFAB1E ; System.DBNull
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M38004_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38004_IG24:
+G_M38004_IG23:
mov rdi, 0xD1FFAB1E ; System.Enum
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M38004_IG12
+ jmp G_M38004_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38004_IG25:
+G_M38004_IG24:
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:ThrowMustBeEnum()
call [rax]System.RuntimeType:ThrowMustBeEnum()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M38004_IG26:
+G_M38004_IG25:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 556, prolog size 17, PerfScore 69.06, instruction count 141, allocated bytes for code 556 (MethodHash=b9ca6b8b) for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
+; Total bytes of code 526, prolog size 17, PerfScore 66.56, instruction count 135, allocated bytes for code 526 (MethodHash=b9ca6b8b) for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)