MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [Sergio0694] Intrinsify typeof(T).GetGenericTypeDefinition() #440

Open MihuBot opened 3 weeks ago

MihuBot commented 3 weeks ago

Job completed in 15 minutes. https://github.com/dotnet/runtime/pull/103528

Diffs

Found 264 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41358797
Total bytes of diff: 41357896
Total bytes of delta: -901 (-0.00 % of base)
Total relative delta: -1.70
    diff is an improvement.
    relative diff is an improvement.

Total byte diff includes -109 bytes from reconciling methods
    Base had    1 unique methods,      109 unique bytes
    Diff had    0 unique methods,        0 unique bytes

Top file regressions (bytes):
          74 : System.Private.DataContractSerialization.dasm (0.01 % of base)

Top file improvements (bytes):
        -438 : System.Text.Json.dasm (-0.03 % of base)
        -295 : System.Data.Common.dasm (-0.02 % of base)
        -242 : System.Private.Xml.dasm (-0.01 % of base)

4 total files with Code Size differences (3 improved, 1 regressed), 254 unchanged.

Top method regressions (bytes):
          74 (1.39 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)

Top method improvements (bytes):
        -148 (-18.50 % of base) : System.Text.Json.dasm - 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.dasm - 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)
        -109 (-100.00 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte (FullOpts) (1 base, 0 diff methods)
         -79 (-30.38 % of base) : System.Data.Common.dasm - 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.Common.dasm - 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.Common.dasm - 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.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this (FullOpts)
         -71 (-23.59 % of base) : System.Text.Json.dasm - 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 (-11.15 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -48 (-0.52 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
         -46 (-1.54 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteEnumMethod(System.Xml.Serialization.EnumMapping):this (FullOpts)
         -39 (-0.90 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteEnumMethod(System.Xml.Serialization.EnumMapping):this (FullOpts)

Top method regressions (percentages):
          74 (1.39 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)

Top method improvements (percentages):
        -109 (-100.00 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TypeScope:IsOptionalValue(System.Type):ubyte (FullOpts) (1 base, 0 diff methods)
         -79 (-30.38 % of base) : System.Data.Common.dasm - 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.Common.dasm - 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)
         -71 (-23.59 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Nullable`1[int]]():System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:this (FullOpts)
         -71 (-23.59 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.Numerics.Vector`1[float]]():System.Text.Json.Serialization.JsonConverter`1[System.Numerics.Vector`1[float]]:this (FullOpts)
        -148 (-18.50 % of base) : System.Text.Json.dasm - 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.dasm - 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)
         -75 (-12.71 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]:NullableFieldUsingReflection(System.Object):System.Numerics.Vector`1[float] (FullOpts)
         -62 (-11.15 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -46 (-1.54 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteEnumMethod(System.Xml.Serialization.EnumMapping):this (FullOpts)
         -39 (-0.90 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteEnumMethod(System.Xml.Serialization.EnumMapping):this (FullOpts)
         -48 (-0.52 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)

13 total methods with Code Size differences (12 improved, 1 regressed), 252278 unchanged.

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

Artifacts:

MihuBot commented 3 weeks ago

Top method regressions

Note: some changes were skipped as they were too large to fit into a comment.

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

MihuBot commented 3 weeks ago

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]] ```diff ; 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 +; V00 arg0 [V00,T03] ( 6, 5.50) ref -> rbx class-hnd single-def ;# 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" +; V02 tmp1 [V02,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" ; V04 tmp3 [V04,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V06 tmp5 [V06,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" +; V06 tmp5 [V06,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" ; V07 tmp6 [V07,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" ;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V09 tmp8 [V09,T11] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -; 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" -; 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" +; 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" +; 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" -;* 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" -; 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" -; 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]] ```diff ; 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 +; V00 arg0 [V00,T03] ( 6, 5.50) ref -> rbx class-hnd single-def ;# 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" +; V02 tmp1 [V02,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" ; V04 tmp3 [V04,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V06 tmp5 [V06,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" +; V06 tmp5 [V06,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" ; V07 tmp6 [V07,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" ;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V09 tmp8 [V09,T11] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -; 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" -; 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" +; 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" +; 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" -;* 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" -; 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" -; 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]] ```diff ; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]: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" ; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> rbx class-hnd single-def "impAppendStmt" -; V03 tmp3 [V03,T02] ( 3, 4 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" -; 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" +;* 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]]: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]]: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]] ```diff ; Assembly listing for method System.Data.DataRowExtensions+UnboxT`1[System.Numerics.Vector`1[float]]: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" ; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> rbx class-hnd single-def "impAppendStmt" -; V03 tmp3 [V03,T02] ( 3, 4 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" -; 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" +;* 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]]: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]]: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

MihuBot commented 3 weeks ago

@Sergio0694