MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [Sergio0694] Intrinsify typeof(T).IsGenericType #439

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 16 minutes. https://github.com/dotnet/runtime/pull/99555

Diffs

Found 264 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41361515
Total bytes of diff: 41357425
Total bytes of delta: -4090 (-0.01 % of base)
Total relative delta: -8.93
    diff is an improvement.
    relative diff is an improvement.

Top file improvements (bytes):
       -2225 : System.Text.Json.dasm (-0.17 % of base)
       -1791 : System.Data.Common.dasm (-0.11 % of base)
         -74 : System.Private.DataContractSerialization.dasm (-0.01 % of base)

3 total files with Code Size differences (3 improved, 0 regressed), 255 unchanged.

Top method improvements (bytes):
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[short](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[short] (FullOpts)
        -195 (-23.02 % 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)
        -195 (-23.02 % 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)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[ubyte](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[ubyte] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,double] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,int] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,long] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,short] (FullOpts)
        -127 (-45.52 % 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)
        -127 (-45.52 % 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)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,ubyte] (FullOpts)
        -124 (-37.46 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
        -118 (-14.88 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
        -116 (-19.05 % 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)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[double]():System.Text.Json.Serialization.JsonConverter`1[double]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[long]():System.Text.Json.Serialization.JsonConverter`1[long]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[short]():System.Text.Json.Serialization.JsonConverter`1[short]:this (FullOpts)
        -106 (-31.55 % 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)
        -106 (-31.55 % 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)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[ubyte]():System.Text.Json.Serialization.JsonConverter`1[ubyte]:this (FullOpts)
        -103 (-17.91 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -99 (-17.37 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
         -92 (-16.88 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:NullableFieldUsingReflection(System.Object):double (FullOpts)
         -92 (-17.01 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:NullableFieldUsingReflection(System.Object):int (FullOpts)
         -92 (-16.97 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:NullableFieldUsingReflection(System.Object):long (FullOpts)
         -92 (-16.94 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:NullableFieldUsingReflection(System.Object):short (FullOpts)
         -92 (-16.97 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:NullableFieldUsingReflection(System.Object):ubyte (FullOpts)
         -74 (-1.37 % 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):
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,double] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,int] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,long] (FullOpts)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,short] (FullOpts)
        -127 (-45.52 % 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)
        -127 (-45.52 % 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)
        -127 (-45.52 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.Object,ubyte] (FullOpts)
        -124 (-37.46 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:<Create>g__CreateWhenDynamicCodeSupported|1_0():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[double]():System.Text.Json.Serialization.JsonConverter`1[double]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[long]():System.Text.Json.Serialization.JsonConverter`1[long]:this (FullOpts)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[short]():System.Text.Json.Serialization.JsonConverter`1[short]:this (FullOpts)
        -106 (-31.55 % 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)
        -106 (-31.55 % 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)
        -106 (-31.55 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[ubyte]():System.Text.Json.Serialization.JsonConverter`1[ubyte]:this (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] (FullOpts)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[short](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[short] (FullOpts)
        -195 (-23.02 % 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)
        -195 (-23.02 % 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)
        -195 (-23.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[ubyte](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[ubyte] (FullOpts)
        -116 (-19.05 % 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)
        -103 (-17.91 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -99 (-17.37 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
         -92 (-17.01 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:NullableFieldUsingReflection(System.Object):int (FullOpts)
         -92 (-16.97 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:NullableFieldUsingReflection(System.Object):long (FullOpts)
         -92 (-16.97 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:NullableFieldUsingReflection(System.Object):ubyte (FullOpts)
         -92 (-16.94 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:NullableFieldUsingReflection(System.Object):short (FullOpts)
         -92 (-16.88 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:NullableFieldUsingReflection(System.Object):double (FullOpts)
        -118 (-14.88 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
         -74 (-1.37 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)

32 total methods with Code Size differences (32 improved, 0 regressed), 252258 unchanged.

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

Artifacts:

MihuBot commented 1 month ago

Top method improvements

-195 (-23.02 % of base) - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] ```diff ; Assembly listing for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] (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,T12] ( 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,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V13 tmp12 [V13,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp13 [V14,T17] ( 3, 1.50) 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,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,T22] ( 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,T10] ( 3, 3 ) 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,T14] ( 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,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V26 tmp25 [V26,T23] ( 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,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V29 cse2 [V29,T02] ( 16, 9 ) 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_M13506_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_M13506_IG02: test rbx, rbx - je G_M13506_IG27 + je G_M13506_IG19 mov rdi, rbx mov r15, 0xD1FFAB1E ; 'System.Double' 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_M13506_IG04 ;; size=45 bbWeight=1 PerfScore 6.75 G_M13506_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_M13506_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_M13506_IG06 ;; size=33 bbWeight=1 PerfScore 5.25 G_M13506_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_M13506_IG23 + je G_M13506_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_M13506_IG26 + jne G_M13506_IG18 ;; size=65 bbWeight=0.50 PerfScore 7.12 G_M13506_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:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - je SHORT G_M13506_IG08 - ;; size=36 bbWeight=1 PerfScore 12.25 -G_M13506_IG07: - 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_M13506_IG08 - 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_M13506_IG09 - ;; size=51 bbWeight=0.50 PerfScore 6.38 -G_M13506_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_M13506_IG10 - ;; size=22 bbWeight=0.50 PerfScore 4.75 -G_M13506_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_M13506_IG28 - 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_M13506_IG10: test eax, eax - jne G_M13506_IG15 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M13506_IG11: + jne G_M13506_IG11 + ;; size=45 bbWeight=1 PerfScore 16.25 +G_M13506_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_M13506_IG12 + je SHORT G_M13506_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_M13506_IG12 + jne SHORT G_M13506_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_M13506_IG13 + jne SHORT G_M13506_IG09 ;; size=70 bbWeight=0.50 PerfScore 11.50 -G_M13506_IG12: +G_M13506_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_M13506_IG14 + jmp SHORT G_M13506_IG10 ;; size=20 bbWeight=0.50 PerfScore 2.88 -G_M13506_IG13: +G_M13506_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_M13506_IG28 + jbe G_M13506_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_M13506_IG14: +G_M13506_IG10: test eax, eax - je G_M13506_IG25 + je G_M13506_IG17 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M13506_IG15: +G_M13506_IG11: cmp byte ptr [r14+0x17], 0 - je G_M13506_IG21 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M13506_IG16: - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - jne SHORT G_M13506_IG17 - xor r12d, r12d - jmp SHORT G_M13506_IG18 - ;; size=24 bbWeight=0.50 PerfScore 3.50 -G_M13506_IG17: - 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 - ;; size=36 bbWeight=0.50 PerfScore 2.62 -G_M13506_IG18: + je SHORT G_M13506_IG13 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M13506_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_M13506_IG19 - xor eax, eax - jmp SHORT G_M13506_IG20 - ;; size=32 bbWeight=0.50 PerfScore 7.12 -G_M13506_IG19: + je SHORT G_M13506_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_M13506_IG20: - xor eax, r12d - jne SHORT G_M13506_IG24 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M13506_IG21: + je SHORT G_M13506_IG16 + ;; size=57 bbWeight=0.50 PerfScore 10.38 +G_M13506_IG13: mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] 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[double]():System.Text.Json.Serialization.JsonConverter`1[double]:this call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[double]():System.Text.Json.Serialization.JsonConverter`1[double]: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_M13506_IG22: +G_M13506_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_M13506_IG23: +G_M13506_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_M13506_IG24: +G_M13506_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_M13506_IG25: +G_M13506_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_M13506_IG26: +G_M13506_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_M13506_IG27: +G_M13506_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_M13506_IG28: +G_M13506_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 847, prolog size 16, PerfScore 121.50, instruction count 214, allocated bytes for code 847 (MethodHash=551dcb3d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] (FullOpts) +; Total bytes of code 652, prolog size 16, PerfScore 96.75, instruction count 167, allocated bytes for code 652 (MethodHash=551dcb3d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[double](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double] (FullOpts) ```
-195 (-23.02 % of base) - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int] ```diff ; Assembly listing for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`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,T12] ( 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,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V13 tmp12 [V13,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp13 [V14,T17] ( 3, 1.50) 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,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,T22] ( 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,T10] ( 3, 3 ) 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,T14] ( 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,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V26 tmp25 [V26,T23] ( 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,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V29 cse2 [V29,T02] ( 16, 9 ) 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_M43202_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_M43202_IG02: test rbx, rbx - je G_M43202_IG27 + je G_M43202_IG19 mov rdi, rbx mov r15, 0xD1FFAB1E ; '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_M43202_IG04 ;; size=45 bbWeight=1 PerfScore 6.75 G_M43202_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_M43202_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_M43202_IG06 ;; size=33 bbWeight=1 PerfScore 5.25 G_M43202_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_M43202_IG23 + je G_M43202_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_M43202_IG26 + jne G_M43202_IG18 ;; size=65 bbWeight=0.50 PerfScore 7.12 G_M43202_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:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - je SHORT G_M43202_IG08 - ;; size=36 bbWeight=1 PerfScore 12.25 -G_M43202_IG07: - 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_M43202_IG08 - 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_M43202_IG09 - ;; size=51 bbWeight=0.50 PerfScore 6.38 -G_M43202_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_M43202_IG10 - ;; size=22 bbWeight=0.50 PerfScore 4.75 -G_M43202_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_M43202_IG28 - 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_M43202_IG10: test eax, eax - jne G_M43202_IG15 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M43202_IG11: + jne G_M43202_IG11 + ;; size=45 bbWeight=1 PerfScore 16.25 +G_M43202_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_M43202_IG12 + je SHORT G_M43202_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_M43202_IG12 + jne SHORT G_M43202_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_M43202_IG13 + jne SHORT G_M43202_IG09 ;; size=70 bbWeight=0.50 PerfScore 11.50 -G_M43202_IG12: +G_M43202_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_M43202_IG14 + jmp SHORT G_M43202_IG10 ;; size=20 bbWeight=0.50 PerfScore 2.88 -G_M43202_IG13: +G_M43202_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_M43202_IG28 + jbe G_M43202_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_M43202_IG14: +G_M43202_IG10: test eax, eax - je G_M43202_IG25 + je G_M43202_IG17 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M43202_IG15: +G_M43202_IG11: cmp byte ptr [r14+0x17], 0 - je G_M43202_IG21 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M43202_IG16: - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - jne SHORT G_M43202_IG17 - xor r12d, r12d - jmp SHORT G_M43202_IG18 - ;; size=24 bbWeight=0.50 PerfScore 3.50 -G_M43202_IG17: - 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 - ;; size=36 bbWeight=0.50 PerfScore 2.62 -G_M43202_IG18: + je SHORT G_M43202_IG13 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M43202_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_M43202_IG19 - xor eax, eax - jmp SHORT G_M43202_IG20 - ;; size=32 bbWeight=0.50 PerfScore 7.12 -G_M43202_IG19: + je SHORT G_M43202_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_M43202_IG20: - xor eax, r12d - jne SHORT G_M43202_IG24 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M43202_IG21: + je SHORT G_M43202_IG16 + ;; size=57 bbWeight=0.50 PerfScore 10.38 +G_M43202_IG13: mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Metadata.JsonTypeInfo`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[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`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_M43202_IG22: +G_M43202_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_M43202_IG23: +G_M43202_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_M43202_IG24: +G_M43202_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_M43202_IG25: +G_M43202_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_M43202_IG26: +G_M43202_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_M43202_IG27: +G_M43202_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_M43202_IG28: +G_M43202_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 847, prolog size 16, PerfScore 121.50, instruction count 214, allocated bytes for code 847 (MethodHash=dc48573d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int] (FullOpts) +; Total bytes of code 652, prolog size 16, PerfScore 96.75, instruction count 167, allocated bytes for code 652 (MethodHash=dc48573d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[int](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int] (FullOpts) ```
-195 (-23.02 % of base) - System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] ```diff ; Assembly listing for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] (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,T12] ( 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,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V13 tmp12 [V13,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp13 [V14,T17] ( 3, 1.50) 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,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,T22] ( 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,T10] ( 3, 3 ) 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,T14] ( 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,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V26 tmp25 [V26,T23] ( 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,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V29 cse2 [V29,T02] ( 16, 9 ) 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_M9890_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_M9890_IG02: test rbx, rbx - je G_M9890_IG27 + je G_M9890_IG19 mov rdi, rbx mov r15, 0xD1FFAB1E ; 'System.Int64' 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_M9890_IG04 ;; size=45 bbWeight=1 PerfScore 6.75 G_M9890_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_M9890_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_M9890_IG06 ;; size=33 bbWeight=1 PerfScore 5.25 G_M9890_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_M9890_IG23 + je G_M9890_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_M9890_IG26 + jne G_M9890_IG18 ;; size=65 bbWeight=0.50 PerfScore 7.12 G_M9890_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:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - je SHORT G_M9890_IG08 - ;; size=36 bbWeight=1 PerfScore 12.25 -G_M9890_IG07: - 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_M9890_IG08 - 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_M9890_IG09 - ;; size=51 bbWeight=0.50 PerfScore 6.38 -G_M9890_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_M9890_IG10 - ;; size=22 bbWeight=0.50 PerfScore 4.75 -G_M9890_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_M9890_IG28 - 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_M9890_IG10: test eax, eax - jne G_M9890_IG15 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M9890_IG11: + jne G_M9890_IG11 + ;; size=45 bbWeight=1 PerfScore 16.25 +G_M9890_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_M9890_IG12 + je SHORT G_M9890_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_M9890_IG12 + jne SHORT G_M9890_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_M9890_IG13 + jne SHORT G_M9890_IG09 ;; size=70 bbWeight=0.50 PerfScore 11.50 -G_M9890_IG12: +G_M9890_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_M9890_IG14 + jmp SHORT G_M9890_IG10 ;; size=20 bbWeight=0.50 PerfScore 2.88 -G_M9890_IG13: +G_M9890_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_M9890_IG28 + jbe G_M9890_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_M9890_IG14: +G_M9890_IG10: test eax, eax - je G_M9890_IG25 + je G_M9890_IG17 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M9890_IG15: +G_M9890_IG11: cmp byte ptr [r14+0x17], 0 - je G_M9890_IG21 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M9890_IG16: - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this - call [rax]System.RuntimeType:get_IsGenericType():ubyte:this - test eax, eax - jne SHORT G_M9890_IG17 - xor r12d, r12d - jmp SHORT G_M9890_IG18 - ;; size=24 bbWeight=0.50 PerfScore 3.50 -G_M9890_IG17: - 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 - ;; size=36 bbWeight=0.50 PerfScore 2.62 -G_M9890_IG18: + je SHORT G_M9890_IG13 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M9890_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_M9890_IG19 - xor eax, eax - jmp SHORT G_M9890_IG20 - ;; size=32 bbWeight=0.50 PerfScore 7.12 -G_M9890_IG19: + je SHORT G_M9890_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_M9890_IG20: - xor eax, r12d - jne SHORT G_M9890_IG24 - ;; size=5 bbWeight=0.50 PerfScore 0.62 -G_M9890_IG21: + je SHORT G_M9890_IG16 + ;; size=57 bbWeight=0.50 PerfScore 10.38 +G_M9890_IG13: mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] 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[long]():System.Text.Json.Serialization.JsonConverter`1[long]:this call [rax]System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[long]():System.Text.Json.Serialization.JsonConverter`1[long]: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_M9890_IG22: +G_M9890_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_M9890_IG23: +G_M9890_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_M9890_IG24: +G_M9890_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_M9890_IG25: +G_M9890_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_M9890_IG26: +G_M9890_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_M9890_IG27: +G_M9890_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_M9890_IG28: +G_M9890_IG20: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 847, prolog size 16, PerfScore 121.50, instruction count 214, allocated bytes for code 847 (MethodHash=1893d95d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] (FullOpts) +; Total bytes of code 652, prolog size 16, PerfScore 96.75, instruction count 167, allocated bytes for code 652 (MethodHash=1893d95d) for method System.Text.Json.Serialization.Metadata.JsonTypeInfo:CreateJsonTypeInfo[long](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long] (FullOpts) ```

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

MihuBot commented 1 month ago

@Sergio0694