forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[X64] [Sergio0694] Intrinsify typeof(T).GetGenericTypeDefinition() #440
Comments
Top method regressionsNote: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/a771fac250ebab3c72b2a3f61fa4bb45 |
Top method improvements-148 (-18.50 % 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>
-; 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_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_IG19
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_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_M62242_IG24
+ jne G_M62242_IG18
;; 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:
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
- ;; size=22 bbWeight=0.50 PerfScore 4.75
-G_M62242_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_M62242_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_M62242_IG10:
test eax, eax
- jne G_M62242_IG15
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M62242_IG11:
+ jne G_M62242_IG11
+ ;; size=45 bbWeight=1 PerfScore 16.25
+G_M62242_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_M62242_IG12
+ je SHORT G_M62242_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_M62242_IG12
+ jne SHORT G_M62242_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_M62242_IG13
+ jne SHORT G_M62242_IG09
;; size=70 bbWeight=0.50 PerfScore 11.50
-G_M62242_IG12:
+G_M62242_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_M62242_IG14
+ jmp SHORT G_M62242_IG10
;; size=20 bbWeight=0.50 PerfScore 2.88
-G_M62242_IG13:
+G_M62242_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_M62242_IG26
+ jbe G_M62242_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_M62242_IG14:
+G_M62242_IG10:
test eax, eax
- je G_M62242_IG23
+ je G_M62242_IG17
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M62242_IG15:
+G_M62242_IG11:
cmp byte ptr [r14+0x17], 0
- je SHORT G_M62242_IG19
+ je SHORT G_M62242_IG13
;; 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_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_M62242_IG17
- xor eax, eax
- jmp SHORT G_M62242_IG18
- ;; size=68 bbWeight=0.50 PerfScore 9.75
-G_M62242_IG17:
+ je SHORT G_M62242_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_M62242_IG18:
- xor eax, r12d
- jne SHORT G_M62242_IG22
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M62242_IG19:
+ je SHORT G_M62242_IG16
+ ;; size=57 bbWeight=0.50 PerfScore 10.38
+G_M62242_IG13:
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_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_M62242_IG21:
+G_M62242_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_M62242_IG22:
+G_M62242_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_M62242_IG23:
+G_M62242_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_M62242_IG24:
+G_M62242_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_M62242_IG25:
+G_M62242_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_M62242_IG26:
+G_M62242_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=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 652, prolog size 16, PerfScore 96.75, instruction count 167, allocated bytes for code 652 (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) -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.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"
-; 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_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
-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
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M40398_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_M40398_IG09
- mov rsi, gword ptr [rax+0x10]
- ;; size=25 bbWeight=0.50 PerfScore 4.75
-G_M40398_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.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
+ ;; size=151 bbWeight=1 PerfScore 23.75
+G_M40398_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_M40398_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=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 181, prolog size 13, PerfScore 32.50, instruction count 40, allocated bytes for code 181 (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) -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) Larger list of diffs: https://gist.github.com/MihuBot/b58f2c6e1a830512bed7db1d8374389a |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
dotnet/runtime#103528
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: