MihuBot / runtime-utils

0 stars 0 forks source link

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

Open MihuBot opened 6 months ago

MihuBot commented 6 months ago

Build completed in 1 hour 45 minutes.

Diffs

Found 262 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38768135
Total bytes of diff: 38764916
Total bytes of delta: -3219 (-0.01 % of base)
Total relative delta: -7.17
    diff is an improvement.
    relative diff is an improvement.

Top file improvements (bytes):
       -1797 : System.Text.Json.dasm (-0.14 % of base)
       -1391 : System.Data.Common.dasm (-0.08 % of base)
         -31 : System.Private.DataContractSerialization.dasm (-0.00 % of base)

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

Top method improvements (bytes):
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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[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 (-17.13 % 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)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[double]():System.Text.Json.Serialization.JsonConverter`1[double]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[long]():System.Text.Json.Serialization.JsonConverter`1[long]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[short]():System.Text.Json.Serialization.JsonConverter`1[short]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[ubyte]():System.Text.Json.Serialization.JsonConverter`1[ubyte]:this (FullOpts)
        -106 (-18.63 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
         -90 (-16.27 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:NullableFieldUsingReflection(System.Object):double (FullOpts)
         -90 (-16.48 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:NullableFieldUsingReflection(System.Object):int (FullOpts)
         -90 (-16.45 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:NullableFieldUsingReflection(System.Object):long (FullOpts)
         -90 (-16.42 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:NullableFieldUsingReflection(System.Object):short (FullOpts)
         -90 (-16.45 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:NullableFieldUsingReflection(System.Object):ubyte (FullOpts)
         -47 (-5.61 % 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)
         -47 (-5.61 % 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)
         -35 (-10.74 % 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)
         -35 (-10.74 % 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)
         -31 (-0.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionOrTryCreate(System.Type,ubyte,byref,byref,ubyte,ubyte):ubyte (FullOpts)
         -19 (-6.81 % 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)
         -19 (-3.29 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -19 (-6.81 % 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)
         -19 (-3.06 % 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)

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[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)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[double]():System.Text.Json.Serialization.JsonConverter`1[double]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[long]():System.Text.Json.Serialization.JsonConverter`1[long]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[short]():System.Text.Json.Serialization.JsonConverter`1[short]:this (FullOpts)
        -107 (-32.82 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[ubyte]():System.Text.Json.Serialization.JsonConverter`1[ubyte]:this (FullOpts)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -196 (-23.39 % 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)
        -106 (-18.63 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.__Canon]:NullableFieldUsingReflection(System.Object):System.__Canon (FullOpts)
        -118 (-17.13 % 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)
         -90 (-16.48 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[int]:NullableFieldUsingReflection(System.Object):int (FullOpts)
         -90 (-16.45 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[long]:NullableFieldUsingReflection(System.Object):long (FullOpts)
         -90 (-16.45 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[ubyte]:NullableFieldUsingReflection(System.Object):ubyte (FullOpts)
         -90 (-16.42 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[short]:NullableFieldUsingReflection(System.Object):short (FullOpts)
         -90 (-16.27 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[double]:NullableFieldUsingReflection(System.Object):double (FullOpts)
         -35 (-10.74 % 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)
         -35 (-10.74 % 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)
         -19 (-6.81 % 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)
         -19 (-6.81 % 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)
         -47 (-5.61 % 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)
         -47 (-5.61 % 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)
         -19 (-3.29 % of base) : System.Data.Common.dasm - System.Data.DataRowExtensions+UnboxT`1[System.Nullable`1[int]]:NullableFieldUsingReflection(System.Object):System.Nullable`1[int] (FullOpts)
         -19 (-3.06 % 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)
         -31 (-0.58 % 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), 239640 unchanged.

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

Artifacts:

MihuBot commented 6 months ago

Top method improvements

-196 (-23.39 % 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 X64 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 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V05 tmp3 [V05,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V07 tmp5 [V07,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" +; V07 tmp5 [V07,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" ; V08 tmp6 [V08,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V10 tmp8 [V10,T12] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -; V11 tmp9 [V11,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V12 tmp10 [V12,T00] ( 12, 13 ) ref -> r12 class-hnd single-def "Inlining Arg" -; V13 tmp11 [V13,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V14 tmp12 [V14,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V15 tmp13 [V15,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" +; V10 tmp8 [V10,T10] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" +; V11 tmp9 [V11,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +; V12 tmp10 [V12,T00] ( 9, 12 ) ref -> r12 class-hnd single-def "Inlining Arg" +; V13 tmp11 [V13,T12] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" +;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V15 tmp13 [V15,T14] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" -;* V17 tmp15 [V17,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V18 tmp16 [V18,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +;* V17 tmp15 [V17,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V18 tmp16 [V18,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" -; V20 tmp18 [V20,T10] ( 3, 3 ) int -> r12 "non-inline candidate call" -; V21 tmp19 [V21,T18] ( 3, 1.50) ubyte -> rdi "Inline return value spill temp" -; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" -; V23 tmp21 [V23,T08] ( 3, 3 ) ref -> rax single-def "arr expr" -; V24 tmp22 [V24,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V25 tmp23 [V25,T09] ( 3, 3 ) ref -> rax single-def "arr expr" -; V26 tmp24 [V26,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V27 tmp25 [V27,T23] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V28 cse0 [V28,T19] ( 3, 1.50) long -> [rbp-0x30] "CSE #06: moderate" -; V29 cse1 [V29,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V30 cse2 [V30,T02] ( 16, 9 ) ref -> r15 "CSE #01: aggressive" +;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V21 tmp19 [V21,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r12 class-hnd single-def "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V25 tmp23 [V25,T08] ( 3, 3 ) ref -> rax single-def "arr expr" +; V26 tmp24 [V26,T11] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V27 tmp25 [V27,T19] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 1.50) long -> [rbp-0x30] "CSE #04: moderate" +; V29 cse1 [V29,T09] ( 3, 2.50) long -> r13 "CSE #06: moderate" +; V30 cse2 [V30,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_IG22 + je G_M13506_IG15 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 call CORINFO_HELP_ISINSTANCEOFCLASS mov r13, rax test r13, r13 je SHORT G_M13506_IG06 ;; size=26 bbWeight=1 PerfScore 3.00 G_M13506_IG05: mov rdi, r13 mov rdx, rbx mov rsi, r15 mov rax, qword ptr [r13] mov rax, qword ptr [rax+0x58] call [rax+0x30]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_IG24 + je G_M13506_IG17 mov rsi, r14 mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax - jne G_M13506_IG23 + jne G_M13506_IG16 ;; size=59 bbWeight=0.50 PerfScore 6.00 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 - je SHORT G_M13506_IG08 - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this - call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this - cmp dword ptr [rax+0x08], 0 - jbe G_M13506_IG21 - 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 - jmp SHORT G_M13506_IG09 - ;; size=99 bbWeight=0.50 PerfScore 15.75 -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 - ;; size=20 bbWeight=0.50 PerfScore 3.75 -G_M13506_IG09: test eax, eax - jne G_M13506_IG13 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M13506_IG10: + jne G_M13506_IG10 + ;; 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_IG11 + 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 rsi, 0xD1FFAB1E ; 'System.Nullable`1[T]' cmp rax, rsi - jne SHORT G_M13506_IG11 + jne SHORT G_M13506_IG08 mov rdi, r15 mov rcx, 0xD1FFAB1E ; code for System.RuntimeType:get_IsInterface():ubyte:this call [rcx]System.RuntimeType:get_IsInterface():ubyte:this test eax, eax - je SHORT G_M13506_IG11 + je SHORT G_M13506_IG08 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_IG21 + jbe G_M13506_IG14 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 - jmp SHORT G_M13506_IG12 + jmp SHORT G_M13506_IG09 ;; size=111 bbWeight=0.50 PerfScore 19.38 -G_M13506_IG11: +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 ;; size=18 bbWeight=0.50 PerfScore 1.88 -G_M13506_IG12: +G_M13506_IG09: test eax, eax - je G_M13506_IG25 + je G_M13506_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M13506_IG13: +G_M13506_IG10: cmp byte ptr [r14+0x17], 0 - je G_M13506_IG19 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M13506_IG14: - 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_IG15 - 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]' - - xor r12d, r12d - cmp rax, rdi - sete r12b - jmp SHORT G_M13506_IG16 - ;; size=56 bbWeight=0.50 PerfScore 6.00 -G_M13506_IG15: - xor r12d, r12d - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M13506_IG16: + je SHORT G_M13506_IG12 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M13506_IG11: 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 r12, rax + 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_IG17 - mov rdi, r13 - mov rax, qword ptr [r13] + je SHORT G_M13506_IG12 + mov rdi, r12 + mov rax, qword ptr [r12] 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 dil - movzx rdi, dil - jmp SHORT G_M13506_IG18 - ;; size=65 bbWeight=0.50 PerfScore 11.50 -G_M13506_IG17: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M13506_IG18: - xor edi, r12d - jne G_M13506_IG26 - ;; size=9 bbWeight=0.50 PerfScore 0.62 -G_M13506_IG19: + je G_M13506_IG19 + ;; size=61 bbWeight=0.50 PerfScore 10.38 +G_M13506_IG12: 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+0x138] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rax, r13 ;; size=75 bbWeight=1 PerfScore 11.25 -G_M13506_IG20: +G_M13506_IG13: 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_IG21: +G_M13506_IG14: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 -G_M13506_IG22: +G_M13506_IG15: mov edi, 0x3614 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_IG23: +G_M13506_IG16: 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_IG24: +G_M13506_IG17: 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_IG25: +G_M13506_IG18: 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_IG19: 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 -; Total bytes of code 838, prolog size 16, PerfScore 118.12, instruction count 211, allocated bytes for code 838 (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 642, prolog size 16, PerfScore 93.38, instruction count 164, allocated bytes for code 642 (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) ```
-196 (-23.39 % 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 X64 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 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V05 tmp3 [V05,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V07 tmp5 [V07,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" +; V07 tmp5 [V07,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" ; V08 tmp6 [V08,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V10 tmp8 [V10,T12] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -; V11 tmp9 [V11,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V12 tmp10 [V12,T00] ( 12, 13 ) ref -> r12 class-hnd single-def "Inlining Arg" -; V13 tmp11 [V13,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V14 tmp12 [V14,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V15 tmp13 [V15,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" +; V10 tmp8 [V10,T10] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" +; V11 tmp9 [V11,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +; V12 tmp10 [V12,T00] ( 9, 12 ) ref -> r12 class-hnd single-def "Inlining Arg" +; V13 tmp11 [V13,T12] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" +;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V15 tmp13 [V15,T14] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" -;* V17 tmp15 [V17,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V18 tmp16 [V18,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +;* V17 tmp15 [V17,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V18 tmp16 [V18,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" -; V20 tmp18 [V20,T10] ( 3, 3 ) int -> r12 "non-inline candidate call" -; V21 tmp19 [V21,T18] ( 3, 1.50) ubyte -> rdi "Inline return value spill temp" -; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" -; V23 tmp21 [V23,T08] ( 3, 3 ) ref -> rax single-def "arr expr" -; V24 tmp22 [V24,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V25 tmp23 [V25,T09] ( 3, 3 ) ref -> rax single-def "arr expr" -; V26 tmp24 [V26,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V27 tmp25 [V27,T23] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V28 cse0 [V28,T19] ( 3, 1.50) long -> [rbp-0x30] "CSE #06: moderate" -; V29 cse1 [V29,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V30 cse2 [V30,T02] ( 16, 9 ) ref -> r15 "CSE #01: aggressive" +;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V21 tmp19 [V21,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r12 class-hnd single-def "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V25 tmp23 [V25,T08] ( 3, 3 ) ref -> rax single-def "arr expr" +; V26 tmp24 [V26,T11] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V27 tmp25 [V27,T19] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 1.50) long -> [rbp-0x30] "CSE #04: moderate" +; V29 cse1 [V29,T09] ( 3, 2.50) long -> r13 "CSE #06: moderate" +; V30 cse2 [V30,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_IG22 + je G_M43202_IG15 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 call CORINFO_HELP_ISINSTANCEOFCLASS mov r13, rax test r13, r13 je SHORT G_M43202_IG06 ;; size=26 bbWeight=1 PerfScore 3.00 G_M43202_IG05: mov rdi, r13 mov rdx, rbx mov rsi, r15 mov rax, qword ptr [r13] mov rax, qword ptr [rax+0x58] call [rax+0x30]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_IG24 + je G_M43202_IG17 mov rsi, r14 mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax - jne G_M43202_IG23 + jne G_M43202_IG16 ;; size=59 bbWeight=0.50 PerfScore 6.00 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 - je SHORT G_M43202_IG08 - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this - call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this - cmp dword ptr [rax+0x08], 0 - jbe G_M43202_IG21 - 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 - jmp SHORT G_M43202_IG09 - ;; size=99 bbWeight=0.50 PerfScore 15.75 -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 - ;; size=20 bbWeight=0.50 PerfScore 3.75 -G_M43202_IG09: test eax, eax - jne G_M43202_IG13 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M43202_IG10: + jne G_M43202_IG10 + ;; 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_IG11 + 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 rsi, 0xD1FFAB1E ; 'System.Nullable`1[T]' cmp rax, rsi - jne SHORT G_M43202_IG11 + jne SHORT G_M43202_IG08 mov rdi, r15 mov rcx, 0xD1FFAB1E ; code for System.RuntimeType:get_IsInterface():ubyte:this call [rcx]System.RuntimeType:get_IsInterface():ubyte:this test eax, eax - je SHORT G_M43202_IG11 + je SHORT G_M43202_IG08 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_IG21 + jbe G_M43202_IG14 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 - jmp SHORT G_M43202_IG12 + jmp SHORT G_M43202_IG09 ;; size=111 bbWeight=0.50 PerfScore 19.38 -G_M43202_IG11: +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 ;; size=18 bbWeight=0.50 PerfScore 1.88 -G_M43202_IG12: +G_M43202_IG09: test eax, eax - je G_M43202_IG25 + je G_M43202_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M43202_IG13: +G_M43202_IG10: cmp byte ptr [r14+0x17], 0 - je G_M43202_IG19 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M43202_IG14: - 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_IG15 - 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]' - - xor r12d, r12d - cmp rax, rdi - sete r12b - jmp SHORT G_M43202_IG16 - ;; size=56 bbWeight=0.50 PerfScore 6.00 -G_M43202_IG15: - xor r12d, r12d - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M43202_IG16: + je SHORT G_M43202_IG12 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M43202_IG11: 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 r12, rax + 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_IG17 - mov rdi, r13 - mov rax, qword ptr [r13] + je SHORT G_M43202_IG12 + mov rdi, r12 + mov rax, qword ptr [r12] 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 dil - movzx rdi, dil - jmp SHORT G_M43202_IG18 - ;; size=65 bbWeight=0.50 PerfScore 11.50 -G_M43202_IG17: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M43202_IG18: - xor edi, r12d - jne G_M43202_IG26 - ;; size=9 bbWeight=0.50 PerfScore 0.62 -G_M43202_IG19: + je G_M43202_IG19 + ;; size=61 bbWeight=0.50 PerfScore 10.38 +G_M43202_IG12: 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+0x138] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rax, r13 ;; size=75 bbWeight=1 PerfScore 11.25 -G_M43202_IG20: +G_M43202_IG13: 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_IG21: +G_M43202_IG14: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 -G_M43202_IG22: +G_M43202_IG15: mov edi, 0x3614 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_IG23: +G_M43202_IG16: 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_IG24: +G_M43202_IG17: 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_IG25: +G_M43202_IG18: 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_IG19: 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 -; Total bytes of code 838, prolog size 16, PerfScore 118.12, instruction count 211, allocated bytes for code 838 (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 642, prolog size 16, PerfScore 93.38, instruction count 164, allocated bytes for code 642 (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) ```
-196 (-23.39 % 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 X64 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 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V03 tmp1 [V03,T03] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" ; V05 tmp3 [V05,T01] ( 13, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V07 tmp5 [V07,T05] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" +; V07 tmp5 [V07,T04] ( 4, 7 ) ref -> r14 class-hnd "Inlining Arg" ; V08 tmp6 [V08,T07] ( 6, 3 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V10 tmp8 [V10,T12] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" -; V11 tmp9 [V11,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" -; V12 tmp10 [V12,T00] ( 12, 13 ) ref -> r12 class-hnd single-def "Inlining Arg" -; V13 tmp11 [V13,T13] ( 3, 2 ) ubyte -> rax "Inline return value spill temp" -;* V14 tmp12 [V14,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V15 tmp13 [V15,T17] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" +; V10 tmp8 [V10,T10] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" +; V11 tmp9 [V11,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +; V12 tmp10 [V12,T00] ( 9, 12 ) ref -> r12 class-hnd single-def "Inlining Arg" +; V13 tmp11 [V13,T12] ( 2, 2 ) ubyte -> rax "Inline return value spill temp" +;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V15 tmp13 [V15,T14] ( 3, 1.50) ubyte -> rax "Inline return value spill temp" ;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" -;* V17 tmp15 [V17,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V18 tmp16 [V18,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" +;* V17 tmp15 [V17,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V18 tmp16 [V18,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" -; V20 tmp18 [V20,T10] ( 3, 3 ) int -> r12 "non-inline candidate call" -; V21 tmp19 [V21,T18] ( 3, 1.50) ubyte -> rdi "Inline return value spill temp" -; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r13 class-hnd single-def "Inlining Arg" -; V23 tmp21 [V23,T08] ( 3, 3 ) ref -> rax single-def "arr expr" -; V24 tmp22 [V24,T14] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V25 tmp23 [V25,T09] ( 3, 3 ) ref -> rax single-def "arr expr" -; V26 tmp24 [V26,T15] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V27 tmp25 [V27,T23] ( 2, 0 ) ref -> rdi single-def "argument with side effect" -; V28 cse0 [V28,T19] ( 3, 1.50) long -> [rbp-0x30] "CSE #06: moderate" -; V29 cse1 [V29,T11] ( 3, 2.50) long -> r13 "CSE #08: moderate" -; V30 cse2 [V30,T02] ( 16, 9 ) ref -> r15 "CSE #01: aggressive" +;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V21 tmp19 [V21,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V22 tmp20 [V22,T06] ( 5, 5 ) ref -> r12 class-hnd single-def "Inlining Arg" +;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V25 tmp23 [V25,T08] ( 3, 3 ) ref -> rax single-def "arr expr" +; V26 tmp24 [V26,T11] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V27 tmp25 [V27,T19] ( 2, 0 ) ref -> rdi single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 1.50) long -> [rbp-0x30] "CSE #04: moderate" +; V29 cse1 [V29,T09] ( 3, 2.50) long -> r13 "CSE #06: moderate" +; V30 cse2 [V30,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_IG22 + je G_M9890_IG15 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 call CORINFO_HELP_ISINSTANCEOFCLASS mov r13, rax test r13, r13 je SHORT G_M9890_IG06 ;; size=26 bbWeight=1 PerfScore 3.00 G_M9890_IG05: mov rdi, r13 mov rdx, rbx mov rsi, r15 mov rax, qword ptr [r13] mov rax, qword ptr [rax+0x58] call [rax+0x30]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_IG24 + je G_M9890_IG17 mov rsi, r14 mov rdi, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax - jne G_M9890_IG23 + jne G_M9890_IG16 ;; size=59 bbWeight=0.50 PerfScore 6.00 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 - je SHORT G_M9890_IG08 - mov rdi, r15 - mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetGenericArguments():System.Type[]:this - call [rax]System.RuntimeType:GetGenericArguments():System.Type[]:this - cmp dword ptr [rax+0x08], 0 - jbe G_M9890_IG21 - 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 - jmp SHORT G_M9890_IG09 - ;; size=99 bbWeight=0.50 PerfScore 15.75 -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 - ;; size=20 bbWeight=0.50 PerfScore 3.75 -G_M9890_IG09: test eax, eax - jne G_M9890_IG13 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M9890_IG10: + jne G_M9890_IG10 + ;; 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_IG11 + 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 rsi, 0xD1FFAB1E ; 'System.Nullable`1[T]' cmp rax, rsi - jne SHORT G_M9890_IG11 + jne SHORT G_M9890_IG08 mov rdi, r15 mov rcx, 0xD1FFAB1E ; code for System.RuntimeType:get_IsInterface():ubyte:this call [rcx]System.RuntimeType:get_IsInterface():ubyte:this test eax, eax - je SHORT G_M9890_IG11 + je SHORT G_M9890_IG08 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_IG21 + jbe G_M9890_IG14 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 - jmp SHORT G_M9890_IG12 + jmp SHORT G_M9890_IG09 ;; size=111 bbWeight=0.50 PerfScore 19.38 -G_M9890_IG11: +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 ;; size=18 bbWeight=0.50 PerfScore 1.88 -G_M9890_IG12: +G_M9890_IG09: test eax, eax - je G_M9890_IG25 + je G_M9890_IG18 ;; size=8 bbWeight=0.50 PerfScore 0.62 -G_M9890_IG13: +G_M9890_IG10: cmp byte ptr [r14+0x17], 0 - je G_M9890_IG19 - ;; size=11 bbWeight=1 PerfScore 4.00 -G_M9890_IG14: - 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_IG15 - 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]' - - xor r12d, r12d - cmp rax, rdi - sete r12b - jmp SHORT G_M9890_IG16 - ;; size=56 bbWeight=0.50 PerfScore 6.00 -G_M9890_IG15: - xor r12d, r12d - ;; size=3 bbWeight=0.50 PerfScore 0.12 -G_M9890_IG16: + je SHORT G_M9890_IG12 + ;; size=7 bbWeight=1 PerfScore 4.00 +G_M9890_IG11: 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 r12, rax + 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_IG17 - mov rdi, r13 - mov rax, qword ptr [r13] + je SHORT G_M9890_IG12 + mov rdi, r12 + mov rax, qword ptr [r12] 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 dil - movzx rdi, dil - jmp SHORT G_M9890_IG18 - ;; size=65 bbWeight=0.50 PerfScore 11.50 -G_M9890_IG17: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M9890_IG18: - xor edi, r12d - jne G_M9890_IG26 - ;; size=9 bbWeight=0.50 PerfScore 0.62 -G_M9890_IG19: + je G_M9890_IG19 + ;; size=61 bbWeight=0.50 PerfScore 10.38 +G_M9890_IG12: 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+0x138] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rax, r13 ;; size=75 bbWeight=1 PerfScore 11.25 -G_M9890_IG20: +G_M9890_IG13: 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_IG21: +G_M9890_IG14: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 -G_M9890_IG22: +G_M9890_IG15: mov edi, 0x3614 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_IG23: +G_M9890_IG16: 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_IG24: +G_M9890_IG17: 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_IG25: +G_M9890_IG18: 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_IG19: 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 -; Total bytes of code 838, prolog size 16, PerfScore 118.12, instruction count 211, allocated bytes for code 838 (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 642, prolog size 16, PerfScore 93.38, instruction count 164, allocated bytes for code 642 (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/51c6d1babb9c37ce3588f0547ebe389b

MihuBot commented 6 months ago

@MihaZupan

MihaZupan commented 6 months ago

@Sergio0694