Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JitDiff X64] [AndyAyersMS] JIT: enable devirtualization/inlining of other array interface methods #763

Open
MihuBot opened this issue Oct 27, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 27, 2024

Job completed in 21 minutes 4 seconds.
dotnet/runtime#109209

Diffs

Found 274 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39560127
Total bytes of diff: 39560643
Total bytes of delta: 516 (0.00 % of base)
Total relative delta: 2.36
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
         229 : System.Net.Http.dasm (0.03 % of base)
         208 : System.Net.Requests.dasm (0.14 % of base)
         200 : Microsoft.Extensions.Http.dasm (0.29 % of base)
         102 : System.Private.DataContractSerialization.dasm (0.01 % of base)
          73 : System.Composition.Convention.dasm (0.06 % of base)
          25 : System.Linq.Queryable.dasm (0.01 % of base)
          25 : System.Composition.Hosting.dasm (0.02 % of base)
          17 : System.ComponentModel.Annotations.dasm (0.03 % of base)
          17 : System.Composition.TypedParts.dasm (0.04 % of base)
          12 : Microsoft.VisualBasic.Core.dasm (0.00 % of base)

Top file improvements (bytes):
        -259 : System.ComponentModel.Composition.dasm (-0.06 % of base)
         -59 : Microsoft.Extensions.DependencyModel.dasm (-0.08 % of base)
         -37 : Microsoft.CSharp.dasm (-0.01 % of base)
         -37 : System.Linq.Expressions.dasm (-0.00 % of base)

14 total files with Code Size differences (4 improved, 10 regressed), 245 unchanged.

Top method regressions (bytes):
         208 (25.27 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
         200 (25.00 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:get_Values():System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
         119 (99.17 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts)
         110 (94.83 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
          56 (29.47 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
          27 (36.00 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
          25 (4.51 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ImportMany.ImportManyExportDescriptorProvider:GetExportDescriptors(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.DependencyAccessor):System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.ExportDescriptorPromise]:this (FullOpts)
          25 (7.00 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts)
          25 (4.30 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts)
          18 (0.41 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          18 (0.88 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          17 (3.15 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts)
          17 (7.30 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts)
          17 (0.98 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts)
          17 (5.56 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts)
          16 (0.43 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          14 (0.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:ImportKnownTypeAttributes(System.Type,System.Collections.Generic.Dictionary`2[System.Type,System.Type],byref) (FullOpts)
          12 (2.31 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:LookupDefaultMembers(byref,System.Type):System.Reflection.MemberInfo[]:this (FullOpts)
           9 (1.40 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts)
           8 (5.48 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts)
           1 (0.19 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

Top method improvements (bytes):
        -130 (-37.46 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
        -129 (-24.48 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
         -76 (-41.53 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
         -54 (-4.64 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
         -16 (-1.36 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -9 (-0.75 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
          -7 (-2.39 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
          -6 (-3.64 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
          -5 (-0.52 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -4 (-0.61 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -3 (-0.55 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -2 (-0.26 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -2 (-0.30 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

Top method regressions (percentages):
         119 (99.17 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts)
         110 (94.83 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
          27 (36.00 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
          56 (29.47 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
         208 (25.27 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
         200 (25.00 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:get_Values():System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
          17 (7.30 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts)
          25 (7.00 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts)
          17 (5.56 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts)
           8 (5.48 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts)
          25 (4.51 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ImportMany.ImportManyExportDescriptorProvider:GetExportDescriptors(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.DependencyAccessor):System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.ExportDescriptorPromise]:this (FullOpts)
          25 (4.30 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts)
          17 (3.15 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts)
          12 (2.31 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:LookupDefaultMembers(byref,System.Type):System.Reflection.MemberInfo[]:this (FullOpts)
           9 (1.40 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts)
          17 (0.98 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts)
          18 (0.88 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
          14 (0.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:ImportKnownTypeAttributes(System.Type,System.Collections.Generic.Dictionary`2[System.Type,System.Type],byref) (FullOpts)
          16 (0.43 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          18 (0.41 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts)
           1 (0.19 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

Top method improvements (percentages):
         -76 (-41.53 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
        -130 (-37.46 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
        -129 (-24.48 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
         -54 (-4.64 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
          -6 (-3.64 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
          -7 (-2.39 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
         -16 (-1.36 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -9 (-0.75 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
          -4 (-0.61 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -3 (-0.55 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -5 (-0.52 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -2 (-0.30 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
          -2 (-0.26 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

34 total methods with Code Size differences (13 improved, 21 regressed), 232623 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 27, 2024

Top method regressions

208 (25.27 % of base) - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this
 ; Assembly listing for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] ( 12, 15   )     ref  ->  rbx         this class-hnd single-def <System.Net.HttpWebResponse>
-;  V01 loc0         [V01,T02] ( 12, 18   )     ref  ->  [rbp-0x20]  do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V01 loc0         [V01,T02] ( 12, 18   )     ref  ->  [rbp-0x28]  do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;* V02 loc1         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V03 loc2         [V03    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
+;  V05 tmp1         [V05,T12] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V07 tmp3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
 ;* V11 tmp7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V12 tmp8         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V13 tmp9         [V13,T16] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.StringComparer>
+;  V13 tmp9         [V13,T20] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.StringComparer>
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V15 tmp11        [V15,T15] (  5,  2.50)     ref  ->  rsi        
-;  V16 tmp12        [V16,T17] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V17 tmp13        [V17,T13] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpResponseHeaders>
-;  V18 tmp14        [V18,T11] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;* V20 tmp16        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V21 tmp17        [V21,T18] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V22 tmp18        [V22,T14] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpContentHeaders>
-;  V23 tmp19        [V23,T12] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V15 tmp11        [V15,T19] (  5,  2.50)     ref  ->  rsi        
+;  V16 tmp12        [V16,T21] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V17 tmp13        [V17,T15] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpResponseHeaders>
+;  V18 tmp14        [V18,T13] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V19 tmp15        [V19,T22] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V20 tmp16        [V20,T16] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;* V21 tmp17        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;  V22 tmp18        [V22,T26] (  3,  1.50)     int  ->  r14         "Inline stloc first use temp"
+;  V23 tmp19        [V23,T10] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
 ;* V25 tmp21        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V26 tmp22        [V26,T06] (  2,  8   )     ref  ->  r15         "field V02.key (fldOffset=0x0)" P-INDEP
-;  V27 tmp23        [V27,T07] (  2,  8   )     ref  ->  rsi         "field V02.value (fldOffset=0x8)" P-INDEP
-;  V28 tmp24        [V28,T08] (  2,  8   )     ref  ->  r15         "field V03.key (fldOffset=0x0)" P-INDEP
-;  V29 tmp25        [V29,T09] (  2,  8   )     ref  ->  rsi         "field V03.value (fldOffset=0x8)" P-INDEP
-;* V30 tmp26        [V30    ] (  0,  0   )     ref  ->  zero-ref    "field V06.key (fldOffset=0x0)" P-DEP
-;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref    "field V06.value (fldOffset=0x8)" P-DEP
-;* V32 tmp28        [V32    ] (  0,  0   )     ref  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-DEP
-;* V33 tmp29        [V33    ] (  0,  0   )     ref  ->  zero-ref    "field V09.value (fldOffset=0x8)" P-DEP
-;  V34 tmp30        [V34,T04] (  2, 16   )     ref  ->  rdx         "argument with side effect"
-;  V35 tmp31        [V35,T00] (  3, 24   )     ref  ->  r14         "argument with side effect"
-;  V36 tmp32        [V36,T05] (  2, 16   )     ref  ->  rdx         "argument with side effect"
-;  V37 tmp33        [V37,T01] (  3, 24   )     ref  ->  r14         "argument with side effect"
-;  V38 PSPSym       [V38,T20] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
-;  V39 cse0         [V39,T19] (  3,  1.50)     ref  ->  rdi         "CSE #05: moderate"
+;  V26 tmp22        [V26,T23] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V27 tmp23        [V27,T17] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpContentHeaders>
+;  V28 tmp24        [V28,T14] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V29 tmp25        [V29,T24] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V30 tmp26        [V30,T18] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;  V32 tmp28        [V32,T27] (  3,  1.50)     int  ->  r14         "Inline stloc first use temp"
+;  V33 tmp29        [V33,T11] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;* V34 tmp30        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
+;* V35 tmp31        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
+;  V36 tmp32        [V36,T06] (  2,  8   )     ref  ->  r15         "field V02.key (fldOffset=0x0)" P-INDEP
+;  V37 tmp33        [V37,T07] (  2,  8   )     ref  ->  rsi         "field V02.value (fldOffset=0x8)" P-INDEP
+;  V38 tmp34        [V38,T08] (  2,  8   )     ref  ->  r15         "field V03.key (fldOffset=0x0)" P-INDEP
+;  V39 tmp35        [V39,T09] (  2,  8   )     ref  ->  rsi         "field V03.value (fldOffset=0x8)" P-INDEP
+;* V40 tmp36        [V40    ] (  0,  0   )     ref  ->  zero-ref    "field V06.key (fldOffset=0x0)" P-DEP
+;* V41 tmp37        [V41    ] (  0,  0   )     ref  ->  zero-ref    "field V06.value (fldOffset=0x8)" P-DEP
+;* V42 tmp38        [V42    ] (  0,  0   )     ref  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-DEP
+;* V43 tmp39        [V43    ] (  0,  0   )     ref  ->  zero-ref    "field V09.value (fldOffset=0x8)" P-DEP
+;  V44 tmp40        [V44,T04] (  2, 16   )     ref  ->  rdx         "argument with side effect"
+;  V45 tmp41        [V45,T00] (  3, 24   )     ref  ->  r14         "argument with side effect"
+;  V46 tmp42        [V46,T05] (  2, 16   )     ref  ->  rdx         "argument with side effect"
+;  V47 tmp43        [V47,T01] (  3, 24   )     ref  ->  r14         "argument with side effect"
+;  V48 PSPSym       [V48,T28] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
+;  V49 cse0         [V49,T25] (  3,  1.50)     ref  ->  rdi         "CSE #05: moderate"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 16
 
 G_M7504_IG01:
        push     rbp
        push     r15
        push     r14
+       push     r13
        push     rbx
-       sub      rsp, 24
+       sub      rsp, 16
        lea      rbp, [rsp+0x30]
        mov      qword ptr [rbp-0x30], rsp
        mov      rbx, rdi
-						;; size=22 bbWeight=1 PerfScore 6.00
+						;; size=24 bbWeight=1 PerfScore 7.00
 G_M7504_IG02:
        cmp      gword ptr [rbx+0x08], 0
-       je       G_M7504_IG24
+       je       G_M7504_IG31
        cmp      gword ptr [rbx+0x20], 0
-       jne      G_M7504_IG19
+       jne      G_M7504_IG24
 						;; size=22 bbWeight=1 PerfScore 8.00
 G_M7504_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Net.WebHeaderCollection
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M7504_IG21
+       je       G_M7504_IG26
 						;; size=37 bbWeight=0.50 PerfScore 2.88
 G_M7504_IG04:
        mov      rdi, 0xD1FFAB1E      ; data for System.Collections.Specialized.NameObjectCollectionBase:s_defaultComparer
        mov      rdi, gword ptr [rdi]
        mov      rsi, rdi
        test     rsi, rsi
        cmove    rsi, rdi
        lea      rdi, bword ptr [r15+0x10]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Specialized.NameObjectCollectionBase:Reset():this
        call     [rax]System.Collections.Specialized.NameObjectCollectionBase:Reset():this
        lea      rdi, bword ptr [rbx+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
        mov      r15, rax
        cmp      dword ptr [r15+0x10], 0
        je       SHORT G_M7504_IG05
        mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      r13, rax
        xor      edi, edi
-       mov      dword ptr [r14+0x18], edi
-       lea      rdi, bword ptr [r14+0x08]
+       mov      dword ptr [r13+0x18], edi
+       lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, r14
-       jmp      SHORT G_M7504_IG07
-						;; size=128 bbWeight=0.50 PerfScore 14.50
+       jmp      SHORT G_M7504_IG09
+						;; size=125 bbWeight=0.50 PerfScore 14.38
 G_M7504_IG05:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M7504_IG22
+       je       G_M7504_IG27
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M7504_IG06:
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      rdi, gword ptr [rdi]
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
-						;; size=20 bbWeight=0.50 PerfScore 3.12
+       mov      r15, gword ptr [rdi]
+       mov      r14d, dword ptr [r15+0x08]
+       test     r14d, r14d
+       je       SHORT G_M7504_IG07
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_NEWSFAST
+       mov      r13, rax
+       mov      dword ptr [r13+0x08], -1
+       mov      dword ptr [r13+0x0C], r14d
+       lea      rdi, bword ptr [r13+0x10]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+       jmp      SHORT G_M7504_IG09
+						;; size=66 bbWeight=0.50 PerfScore 6.38
 G_M7504_IG07:
-       mov      gword ptr [rbp-0x20], rax
-						;; size=4 bbWeight=0.50 PerfScore 0.50
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M7504_IG28
+						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M7504_IG08:
-       jmp      SHORT G_M7504_IG10
-						;; size=2 bbWeight=0.50 PerfScore 1.00
+       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
+       mov      r13, gword ptr [rdi]
+						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M7504_IG09:
-       mov      rdi, gword ptr [rbp-0x20]
+       mov      gword ptr [rbp-0x28], r13
+						;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M7504_IG10:
+       jmp      SHORT G_M7504_IG12
+						;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M7504_IG11:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        mov      r15, rax
        mov      rsi, rdx
        mov      r14, gword ptr [rbx+0x20]
        mov      rdi, 0xD1FFAB1E      ; ', '
        mov      rax, 0xD1FFAB1E      ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        call     [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        mov      rdx, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
 						;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG10:
-       mov      rdi, gword ptr [rbp-0x20]
+G_M7504_IG12:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
-       jne      SHORT G_M7504_IG09
+       jne      SHORT G_M7504_IG11
 						;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG11:
-       mov      rdi, gword ptr [rbp-0x20]
+G_M7504_IG13:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        test     rax, rax
-       je       G_M7504_IG19
+       je       G_M7504_IG24
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
        mov      r15, rax
        cmp      dword ptr [r15+0x10], 0
-       jne      SHORT G_M7504_IG13
+       jne      SHORT G_M7504_IG18
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M7504_IG23
+       je       G_M7504_IG29
 						;; size=108 bbWeight=0.50 PerfScore 18.50
-G_M7504_IG12:
+G_M7504_IG14:
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      rdi, gword ptr [rdi]
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
-       jmp      SHORT G_M7504_IG14
-						;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M7504_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
+       mov      r15, gword ptr [rdi]
+       mov      r14d, dword ptr [r15+0x08]
+       test     r14d, r14d
+       je       SHORT G_M7504_IG15
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
-       xor      edi, edi
-       mov      dword ptr [r14+0x18], edi
-       lea      rdi, bword ptr [r14+0x08]
+       mov      r13, rax
+       mov      dword ptr [r13+0x08], -1
+       mov      dword ptr [r13+0x0C], r14d
+       lea      rdi, bword ptr [r13+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, r14
-						;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M7504_IG14:
-       mov      gword ptr [rbp-0x20], rax
-						;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG15:
        jmp      SHORT G_M7504_IG17
-						;; size=2 bbWeight=0.50 PerfScore 1.00
+						;; size=66 bbWeight=0.50 PerfScore 6.38
+G_M7504_IG15:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M7504_IG30
+						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M7504_IG16:
-       mov      rdi, gword ptr [rbp-0x20]
+       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
+       mov      r13, gword ptr [rdi]
+						;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M7504_IG17:
+       jmp      SHORT G_M7504_IG19
+						;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M7504_IG18:
+       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
+       call     CORINFO_HELP_NEWSFAST
+       mov      r13, rax
+       xor      edi, edi
+       mov      dword ptr [r13+0x18], edi
+       lea      rdi, bword ptr [r13+0x08]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+						;; size=36 bbWeight=0.50 PerfScore 2.25
+G_M7504_IG19:
+       mov      gword ptr [rbp-0x28], r13
+						;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M7504_IG20:
+       jmp      SHORT G_M7504_IG22
+						;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M7504_IG21:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        mov      r15, rax
        mov      rsi, rdx
        mov      r14, gword ptr [rbx+0x20]
        mov      rdi, 0xD1FFAB1E      ; ', '
        mov      rax, 0xD1FFAB1E      ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        call     [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        mov      rdx, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
 						;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG17:
-       mov      rdi, gword ptr [rbp-0x20]
+G_M7504_IG22:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
-       jne      SHORT G_M7504_IG16
+       jne      SHORT G_M7504_IG21
 						;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG18:
-       mov      rdi, gword ptr [rbp-0x20]
+G_M7504_IG23:
+       mov      rdi, gword ptr [rbp-0x28]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG19:
+G_M7504_IG24:
        mov      rax, gword ptr [rbx+0x20]
 						;; size=4 bbWeight=1 PerfScore 2.00
-G_M7504_IG20:
-       add      rsp, 24
+G_M7504_IG25:
+       add      rsp, 16
        pop      rbx
+       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
-G_M7504_IG21:
+						;; size=13 bbWeight=1 PerfScore 3.75
+G_M7504_IG26:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Specialized.NameObjectCollectionBase
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M7504_IG04
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG22:
+G_M7504_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M7504_IG06
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG23:
+G_M7504_IG28:
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M7504_IG08
+						;; size=20 bbWeight=0 PerfScore 0.00
+G_M7504_IG29:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M7504_IG12
+       jmp      G_M7504_IG14
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG24:
+G_M7504_IG30:
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M7504_IG16
+						;; size=20 bbWeight=0 PerfScore 0.00
+G_M7504_IG31:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        call     [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
-G_M7504_IG25:
-       push     rbp
-       push     r15
-       push     r14
-       push     rbx
-       push     rax
-       mov      rbp, qword ptr [rdi]
-       mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x30]
-						;; size=18 bbWeight=0 PerfScore 0.00
-G_M7504_IG26:
-       cmp      gword ptr [rbp-0x20], 0
-       je       SHORT G_M7504_IG27
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
-       call     [r11]System.IDisposable:Dispose():this
-						;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG27:
-       nop      
-						;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG28:
-       add      rsp, 8
-       pop      rbx
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=11 bbWeight=0 PerfScore 0.00
-G_M7504_IG29:
-       push     rbp
-       push     r15
-       push     r14
-       push     rbx
-       push     rax
-       mov      rbp, qword ptr [rdi]
-       mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x30]
-						;; size=18 bbWeight=0 PerfScore 0.00
-G_M7504_IG30:
-       cmp      gword ptr [rbp-0x20], 0
-       je       SHORT G_M7504_IG31
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
-       call     [r11]System.IDisposable:Dispose():this
-						;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG31:
-       nop      
-						;; size=1 bbWeight=0 PerfScore 0.00
 G_M7504_IG32:
-       add      rsp, 8
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     rbx
+       sub      rsp, 16
+       mov      rbp, qword ptr [rdi]
+       mov      qword ptr [rsp], rbp
+       lea      rbp, [rbp+0x30]
+						;; size=23 bbWeight=0 PerfScore 0.00
+G_M7504_IG33:
+       cmp      gword ptr [rbp-0x28], 0
+       je       SHORT G_M7504_IG34
+       mov      rdi, gword ptr [rbp-0x28]
+       mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
+       call     [r11]System.IDisposable:Dispose():this
+						;; size=24 bbWeight=0 PerfScore 0.00
+G_M7504_IG34:
+       nop      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M7504_IG35:
+       add      rsp, 16
        pop      rbx
+       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
+G_M7504_IG36:
+       push     rbp
+       push     r15
+       push     r14
+       push     r13
+       push     rbx
+       sub      rsp, 16
+       mov      rbp, qword ptr [rdi]
+       mov      qword ptr [rsp], rbp
+       lea      rbp, [rbp+0x30]
+						;; size=23 bbWeight=0 PerfScore 0.00
+G_M7504_IG37:
+       cmp      gword ptr [rbp-0x28], 0
+       je       SHORT G_M7504_IG38
+       mov      rdi, gword ptr [rbp-0x28]
+       mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
+       call     [r11]System.IDisposable:Dispose():this
+						;; size=24 bbWeight=0 PerfScore 0.00
+G_M7504_IG38:
+       nop      
+						;; size=1 bbWeight=0 PerfScore 0.00
+G_M7504_IG39:
+       add      rsp, 16
+       pop      rbx
+       pop      r13
+       pop      r14
+       pop      r15
+       pop      rbp
+       ret      
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 823, prolog size 22, PerfScore 260.00, instruction count 199, allocated bytes for code 823 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
+; Total bytes of code 1031, prolog size 24, PerfScore 274.25, instruction count 239, allocated bytes for code 1031 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
 ; ============================================================
119 (99.17 % of base) - System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
 ; Assembly listing for method System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V02 tmp1         [V02,T02] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V03 tmp2         [V03,T04] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V04 tmp3         [V04,T03] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;  V06 tmp5         [V06,T05] (  3,  1.50)     int  ->  r15         "Inline stloc first use temp"
+;  V07 tmp6         [V07,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M54964_IG01:
        push     rbp
        push     r15
+       push     r14
        push     rbx
-       lea      rbp, [rsp+0x10]
+       push     rax
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
-						;; size=12 bbWeight=1 PerfScore 3.75
+						;; size=15 bbWeight=1 PerfScore 5.75
 G_M54964_IG02:
        cmp      dword ptr [rbx+0x10], 0
-       jne      SHORT G_M54964_IG06
-						;; size=6 bbWeight=1 PerfScore 4.00
+       jne      G_M54964_IG08
+						;; size=10 bbWeight=1 PerfScore 4.00
 G_M54964_IG03:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       SHORT G_M54964_IG08
-						;; size=15 bbWeight=0.50 PerfScore 2.12
+       je       G_M54964_IG10
+						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M54964_IG04:
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      rdi, gword ptr [rdi]
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
-       nop      
-						;; size=21 bbWeight=0.50 PerfScore 3.25
+       mov      rbx, gword ptr [rdi]
+       mov      r15d, dword ptr [rbx+0x08]
+       test     r15d, r15d
+       je       SHORT G_M54964_IG05
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      dword ptr [r14+0x08], -1
+       mov      dword ptr [r14+0x0C], r15d
+       lea      rdi, bword ptr [r14+0x10]
+       mov      rsi, rbx
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rax, r14
+       jmp      SHORT G_M54964_IG07
+						;; size=69 bbWeight=0.50 PerfScore 6.50
 G_M54964_IG05:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       SHORT G_M54964_IG11
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M54964_IG06:
+       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
+       mov      rax, gword ptr [rdi]
+						;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M54964_IG07:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M54964_IG06:
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M54964_IG08:
        mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        xor      edi, edi
        mov      dword ptr [r15+0x18], edi
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, r15
 						;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M54964_IG07:
+G_M54964_IG09:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M54964_IG08:
+						;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M54964_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M54964_IG04
+       jmp      G_M54964_IG04
+						;; size=20 bbWeight=0 PerfScore 0.00
+G_M54964_IG11:
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      SHORT G_M54964_IG06
 						;; size=17 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 120, prolog size 9, PerfScore 18.00, instruction count 35, allocated bytes for code 120 (MethodHash=c841294b) for method System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts)
+; Total bytes of code 239, prolog size 12, PerfScore 27.25, instruction count 59, allocated bytes for code 239 (MethodHash=c841294b) for method System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts)
 ; ============================================================
110 (94.83 % of base) - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this
 ; Assembly listing for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T02] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V03 tmp2         [V03,T01] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V02 tmp1         [V02,T04] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V03 tmp2         [V03,T02] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+;  V04 tmp3         [V04,T05] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V05 tmp4         [V05,T03] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
+;  V07 tmp6         [V07,T06] (  3,  1.50)     int  ->  r15         "Inline stloc first use temp"
+;  V08 tmp7         [V08,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M54155_IG01:
        push     rbp
        push     r15
+       push     r14
        push     rbx
-       lea      rbp, [rsp+0x10]
+       push     rax
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
-						;; size=12 bbWeight=1 PerfScore 3.75
+						;; size=15 bbWeight=1 PerfScore 5.75
 G_M54155_IG02:
        cmp      dword ptr [rbx+0x10], 0
-       jne      SHORT G_M54155_IG05
+       jne      SHORT G_M54155_IG08
 						;; size=6 bbWeight=1 PerfScore 4.00
 G_M54155_IG03:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       SHORT G_M54155_IG07
-						;; size=15 bbWeight=0.50 PerfScore 2.12
+       je       G_M54155_IG10
+						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M54155_IG04:
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      rdi, gword ptr [rdi]
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
-       jmp      SHORT G_M54155_IG06
-						;; size=22 bbWeight=0.50 PerfScore 4.12
+       mov      rbx, gword ptr [rdi]
+       mov      r15d, dword ptr [rbx+0x08]
+       test     r15d, r15d
+       je       SHORT G_M54155_IG05
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       mov      dword ptr [r14+0x08], -1
+       mov      dword ptr [r14+0x0C], r15d
+       lea      rdi, bword ptr [r14+0x10]
+       mov      rsi, rbx
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rax, r14
+       jmp      SHORT G_M54155_IG07
+						;; size=69 bbWeight=0.50 PerfScore 6.50
 G_M54155_IG05:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       SHORT G_M54155_IG11
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M54155_IG06:
+       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
+       mov      rax, gword ptr [rdi]
+						;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M54155_IG07:
+       jmp      SHORT G_M54155_IG09
+						;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M54155_IG08:
        mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        xor      edi, edi
        mov      dword ptr [r15+0x18], edi
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, r15
 						;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M54155_IG06:
+G_M54155_IG09:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=1 PerfScore 2.50
-G_M54155_IG07:
+						;; size=11 bbWeight=1 PerfScore 3.25
+G_M54155_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M54155_IG04
+       jmp      G_M54155_IG04
+						;; size=20 bbWeight=0 PerfScore 0.00
+G_M54155_IG11:
+       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+       call     CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      SHORT G_M54155_IG06
 						;; size=17 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 116, prolog size 9, PerfScore 18.88, instruction count 31, allocated bytes for code 116 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
+; Total bytes of code 226, prolog size 12, PerfScore 28.25, instruction count 54, allocated bytes for code 226 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
 ; ============================================================
56 (29.47 % of base) - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte
 ; Assembly listing for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  8,  6   )     ref  ->  rbx         class-hnd single-def <System.Reflection.TypeInfo>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T07] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V03 tmp2         [V03,T03] (  2,  2   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Type[]>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
-;  V05 tmp4         [V05,T04] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Type>
+;  V05 tmp4         [V05,T04] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Type>
 ;* V06 tmp5         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V07 tmp6         [V07,T05] (  2,  2   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V08 tmp7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
-;  V09 tmp8         [V09,T06] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Type>
-;  V10 tmp9         [V10,T02] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V11 cse0         [V11,T01] (  6,  4   )    long  ->  r15         "CSE #01: aggressive"
+;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+;  V08 tmp7         [V08,T07] (  2,  1   )   ubyte  ->  rax         single-def "Inline return value spill temp"
+;  V09 tmp8         [V09,T05] (  2,  2   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Type[]>
+;* V10 tmp9         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+;  V11 tmp10        [V11,T06] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Type>
+;* V12 tmp11        [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V13 tmp12        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+;  V14 tmp13        [V14,T02] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V15 cse0         [V15,T01] (  6,  4   )    long  ->  r15         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M48661_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
 						;; size=15 bbWeight=1 PerfScore 5.75
 G_M48661_IG02:
        mov      rdi, rbx
        mov      r15, qword ptr [rbx]
        mov      rax, qword ptr [r15+0x58]
        call     [rax+0x10]System.Type:IsArrayImpl():ubyte:this
        test     eax, eax
        jne      SHORT G_M48661_IG04
 						;; size=17 bbWeight=1 PerfScore 8.50
 G_M48661_IG03:
        mov      rdi, rbx
        mov      rax, qword ptr [r15+0x60]
        call     [rax+0x10]System.Type:get_IsGenericTypeDefinition():ubyte:this
        test     eax, eax
        je       SHORT G_M48661_IG06
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
        mov      rdi, rbx
        mov      rax, qword ptr [r15+0xB0]
        call     [rax+0x30]System.Reflection.TypeInfo:AsType():System.Type:this
-       mov      rsi, rax
-       mov      rdi, r14
-       call     System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
+       mov      rdx, rax
+       mov      r8d, 3
+       mov      rsi, r14
+       mov      rdi, 0xD1FFAB1E      ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+       call     [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
        test     eax, eax
-       je       SHORT G_M48661_IG06
-						;; size=55 bbWeight=0.50 PerfScore 8.38
+       jl       SHORT G_M48661_IG06
+						;; size=80 bbWeight=0.50 PerfScore 9.88
 G_M48661_IG04:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M48661_IG05:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M48661_IG06:
        mov      rdi, rbx
        mov      rax, qword ptr [r15+0xB0]
        call     [rax+0x30]System.Reflection.TypeInfo:AsType():System.Type:this
        mov      rdi, rax
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x58]
        call     [rax+0x28]System.Type:get_IsConstructedGenericType():ubyte:this
        test     eax, eax
        jne      SHORT G_M48661_IG08
        xor      eax, eax
 						;; size=32 bbWeight=0.50 PerfScore 7.00
 G_M48661_IG07:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M48661_IG08:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
        mov      rdi, rbx
        mov      rax, qword ptr [r15+0x68]
        call     [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
-       mov      rsi, rax
-       mov      rdi, r14
-						;; size=29 bbWeight=0.50 PerfScore 4.00
+       mov      rdx, rax
+       mov      r8d, 3
+       mov      rsi, r14
+       mov      rdi, 0xD1FFAB1E      ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+       call     [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+       not      eax
+       shr      eax, 31
+						;; size=64 bbWeight=0.50 PerfScore 6.38
 G_M48661_IG09:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
-       jmp      System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
-						;; size=15 bbWeight=0.50 PerfScore 2.12
+       ret      
+						;; size=11 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 190, prolog size 12, PerfScore 39.12, instruction count 64, allocated bytes for code 190 (MethodHash=538f41ea) for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
+; Total bytes of code 246, prolog size 12, PerfScore 42.50, instruction count 75, allocated bytes for code 246 (MethodHash=538f41ea) for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
 ; ============================================================
27 (36.00 % of base) - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte
 ; Assembly listing for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  8,  6.50)     ref  ->  rbx         class-hnd <System.Type>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  2,  4   )     ref  ->  rdi         single-def "argument with side effect"
+;* V02 tmp1         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V03 tmp2         [V03,T01] (  3,  6   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <System.Type[]>
+;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Type[]>
 ;
 ; Lcl frame size = 8
 
 G_M25004_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=1 PerfScore 3.75
 G_M25004_IG02:
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x60]
        call     [rax+0x08]System.Type:get_IsGenericType():ubyte:this
        test     eax, eax
        je       SHORT G_M25004_IG04
 						;; size=17 bbWeight=1 PerfScore 8.50
 G_M25004_IG03:
        mov      rdi, rbx
        mov      rax, qword ptr [rbx]
        mov      rax, qword ptr [rax+0x68]
        call     [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
        mov      rbx, rax
 						;; size=16 bbWeight=0.50 PerfScore 3.75
 G_M25004_IG04:
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper:get_KnownInterfaces():System.Type[]
        call     [rax]System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper:get_KnownInterfaces():System.Type[]
-       mov      rdi, rax
-       mov      rsi, rbx
-       cmp      dword ptr [rdi], edi
-						;; size=20 bbWeight=1 PerfScore 6.75
+       mov      r8d, dword ptr [rax+0x08]
+       mov      rsi, rax
+       mov      rdx, rbx
+       mov      rdi, 0xD1FFAB1E      ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+       call     [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+       not      eax
+       shr      eax, 31
+						;; size=51 bbWeight=1 PerfScore 10.25
 G_M25004_IG05:
        add      rsp, 8
        pop      rbx
        pop      rbp
-       jmp      System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
-						;; size=11 bbWeight=1 PerfScore 3.25
+       ret      
+						;; size=7 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 75, prolog size 8, PerfScore 26.00, instruction count 25, allocated bytes for code 75 (MethodHash=1a6a9e53) for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
+; Total bytes of code 102, prolog size 8, PerfScore 28.50, instruction count 31, allocated bytes for code 102 (MethodHash=1a6a9e53) for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
 ; ============================================================

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 27, 2024

Top method improvements

-130 (-37.46 % of base) - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this
 ; Assembly listing for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  6,  4.50)     ref  ->  rbx         this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-;  V01 arg1         [V01,T02] (  3,  2.50)     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+;  V00 this         [V00,T00] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
+;  V01 arg1         [V01,T03] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+;  V03 tmp1         [V03,T01] (  4,  8   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
 ;* V04 tmp2         [V04,T10] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V06 tmp4         [V06,T03] (  4,  3.50)     ref  ->  r15         single-def
-;  V07 tmp5         [V07,T07] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V06 tmp4         [V06,T05] (  2,  2   )     ref  ->  r15         single-def
+;  V07 tmp5         [V07,T06] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
 ;* V09 tmp7         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V11 tmp9         [V11,T09] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;  V12 tmp10        [V12,T08] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V13 tmp11        [V13,T06] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V14 tmp12        [V14,T04] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V10 tmp8         [V10,T07] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V11 tmp9         [V11,T11] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V12 tmp10        [V12,T04] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V14 tmp12        [V14,T08] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V15 tmp13        [V15,T02] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V16 cse0         [V16,T09] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M19286_IG01:
        push     rbp
        push     r15
        push     r14
        push     rbx
        push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=18 bbWeight=0.50 PerfScore 3.00
+						;; size=18 bbWeight=1 PerfScore 6.00
 G_M19286_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [rbx+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [rbx+0x10], rsi
-						;; size=55 bbWeight=0.50 PerfScore 3.00
+						;; size=55 bbWeight=1 PerfScore 6.00
 G_M19286_IG03:
        mov      gword ptr [rbx+0x20], rsi
        mov      rsi, r14
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
-       mov      rdi, r14
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M19286_IG05
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M19286_IG12
-						;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M19286_IG04:
-       mov      rsi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
-       mov      r15, gword ptr [rsi]
-       jmp      SHORT G_M19286_IG06
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG05:
-       movsxd   rsi, eax
+       mov      esi, 1
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r15, rax
+       mov      r8d, 1
        mov      rdi, r14
-       mov      rsi, r15
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-						;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG06:
-       test     r15, r15
-       je       G_M19286_IG14
-       cmp      dword ptr [r15+0x08], 0
-       jne      SHORT G_M19286_IG09
-						;; size=16 bbWeight=1 PerfScore 5.25
-G_M19286_IG07:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M19286_IG13
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG08:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
-       mov      rsi, gword ptr [rdi]
-       jmp      SHORT G_M19286_IG10
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG09:
+       mov      rdx, r15
+       xor      esi, esi
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
-						;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG10:
        lea      rdi, bword ptr [rbx+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=10 bbWeight=1 PerfScore 1.75
-G_M19286_IG11:
+						;; size=133 bbWeight=1 PerfScore 16.50
+G_M19286_IG04:
        add      rsp, 8
        pop      rbx
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=11 bbWeight=1 PerfScore 3.25
-G_M19286_IG12:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M19286_IG04
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M19286_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M19286_IG08
-						;; size=17 bbWeight=0 PerfScore 0.00
-G_M19286_IG14:
-       mov      edi, 2
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
-       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
-       int3     
-						;; size=18 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 347, prolog size 12, PerfScore 32.00, instruction count 79, allocated bytes for code 347 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 217, prolog size 12, PerfScore 31.75, instruction count 52, allocated bytes for code 217 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; ============================================================
-129 (-24.48 % of base) - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException
 ; Assembly listing for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  4,  3.50)     ref  ->  rbx         class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
-;  V01 arg1         [V01,T02] (  4,  3.50)     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
-;  V02 arg2         [V02,T03] (  4,  3.50)     ref  ->  r14         class-hnd single-def <System.Exception>
+;  V00 arg0         [V00,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
+;  V01 arg1         [V01,T03] (  4,  4   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
+;  V02 arg2         [V02,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Exception>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T00] (  6,  8   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
-;  V05 tmp2         [V05,T04] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
-;  V06 tmp3         [V06,T09] (  2,  2   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+;  V04 tmp1         [V04,T00] (  6, 12   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
+;  V05 tmp2         [V05,T01] (  4,  8   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+;  V06 tmp3         [V06,T06] (  2,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
 ;* V07 tmp4         [V07,T13] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V09 tmp6         [V09,T05] (  4,  3.50)     ref  ->  rbx         single-def
-;  V10 tmp7         [V10,T10] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V09 tmp6         [V09,T08] (  2,  2   )     ref  ->  rbx         single-def
+;  V10 tmp7         [V10,T09] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V11 tmp8         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V13 tmp10        [V13,T07] (  3,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V14 tmp11        [V14,T12] (  3,  1.50)     int  ->  rax         "Inline stloc first use temp"
-;  V15 tmp12        [V15,T11] (  3,  1.50)     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V16 tmp13        [V16,T08] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V17 tmp14        [V17,T06] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V13 tmp10        [V13,T10] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V14 tmp11        [V14,T14] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V15 tmp12        [V15,T07] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V16 tmp13        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V17 tmp14        [V17,T11] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V18 tmp15        [V18,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V19 cse0         [V19,T12] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
 ;
 ; Lcl frame size = 0
 
 G_M65036_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14, rdx
 						;; size=22 bbWeight=1 PerfScore 6.25
 G_M65036_IG02:
        test     rbx, rbx
-       je       G_M65036_IG18
+       je       G_M65036_IG07
        test     r15, r15
-       je       G_M65036_IG17
+       je       G_M65036_IG06
        test     r14, r14
-       je       G_M65036_IG16
-						;; size=27 bbWeight=1 PerfScore 3.75
-G_M65036_IG03:
+       je       G_M65036_IG05
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, rbx
        mov      rsi, r15
        mov      rdx, r14
        mov      rax, 0xD1FFAB1E      ; code for System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        call     [rax]System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        mov      rbx, rax
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [r13+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [r13+0x10], rsi
-						;; size=97 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG04:
+						;; size=124 bbWeight=1 PerfScore 15.50
+G_M65036_IG03:
        mov      gword ptr [r13+0x20], rsi
        mov      rsi, r15
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
-       mov      rdi, r15
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M65036_IG06
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M65036_IG13
-						;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG05:
-       mov      rsi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
-       mov      rbx, gword ptr [rsi]
-       jmp      SHORT G_M65036_IG07
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG06:
-       movsxd   rsi, eax
+       mov      esi, 1
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      rbx, rax
+       mov      r8d, 1
        mov      rdi, r15
-       mov      rsi, rbx
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-						;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG07:
-       test     rbx, rbx
-       je       G_M65036_IG15
-       cmp      dword ptr [rbx+0x08], 0
-       jne      SHORT G_M65036_IG10
-						;; size=15 bbWeight=1 PerfScore 5.25
-G_M65036_IG08:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M65036_IG14
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG09:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
-       mov      rsi, gword ptr [rdi]
-       jmp      SHORT G_M65036_IG11
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG10:
+       mov      rdx, rbx
+       xor      esi, esi
+       xor      ecx, ecx
+       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
+       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r15
-						;; size=33 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG11:
        lea      rdi, bword ptr [r13+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, r13
-						;; size=12 bbWeight=1 PerfScore 1.75
-G_M65036_IG12:
+						;; size=135 bbWeight=1 PerfScore 16.50
+G_M65036_IG04:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M65036_IG05
-						;; size=20 bbWeight=0 PerfScore 0.00
-G_M65036_IG14:
-       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
-       call     CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M65036_IG09
-						;; size=17 bbWeight=0 PerfScore 0.00
-G_M65036_IG15:
-       mov      edi, 2
-       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
-       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
-       int3     
-						;; size=18 bbWeight=0 PerfScore 0.00
-G_M65036_IG16:
+G_M65036_IG05:
        mov      edi, 0x2242
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M65036_IG17:
+G_M65036_IG06:
        mov      edi, 0x2174
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
-G_M65036_IG18:
+G_M65036_IG07:
        mov      edi, 0x2238
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 527, prolog size 13, PerfScore 42.12, instruction count 116, allocated bytes for code 527 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
+; Total bytes of code 398, prolog size 13, PerfScore 41.75, instruction count 89, allocated bytes for code 398 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; ============================================================
-76 (-41.53 % of base) - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor()
 ; Assembly listing for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 loc0         [V00    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.String[]>
+;* V02 tmp1         [V02,T03] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.String[]>
 ;* V03 tmp2         [V03    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V04 tmp3         [V04    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V07 tmp6         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
 ;* V08 tmp7         [V08    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[ubyte]>
-;  V09 tmp8         [V09,T00] ( 11, 21   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
+;  V09 tmp8         [V09,T00] ( 11, 22   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
 ;* V10 tmp9         [V10    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
-;  V11 tmp10        [V11,T03] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
+;  V11 tmp10        [V11,T01] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
 ;* V12 tmp11        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
 ;* V13 tmp12        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;  V14 tmp13        [V14,T02] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
-;  V15 tmp14        [V15,T05] (  3,  1.50)     int  ->  rax         single-def "Inline stloc first use temp"
-;  V16 tmp15        [V16,T04] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;* V17 tmp16        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.value (fldOffset=0x1)" P-INDEP
-;* V19 tmp18        [V19,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
-;* V20 tmp19        [V20,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.value (fldOffset=0x1)" P-INDEP
-;* V21 tmp20        [V21,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V22 tmp21        [V22,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V23 tmp22        [V23,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp23        [V24,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.value (fldOffset=0x1)" P-INDEP
-;* V25 tmp24        [V25,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V26 tmp25        [V26,T13] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.value (fldOffset=0x1)" P-INDEP
-;* V27 tmp26        [V27,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V28 tmp27        [V28,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.value (fldOffset=0x1)" P-INDEP
-;* V29 tmp28        [V29,T16] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V30 tmp29        [V30,T17] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V31 tmp30        [V31,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V32 tmp31        [V32,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.value (fldOffset=0x1)" P-INDEP
+;  V14 tmp13        [V14,T02] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.String[]>
+;* V15 tmp14        [V15,T04] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V16 tmp15        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V17 tmp16        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp18        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V00.value (fldOffset=0x1)" P-INDEP
+;* V20 tmp19        [V20,T05] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V21 tmp20        [V21,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.value (fldOffset=0x1)" P-INDEP
+;* V22 tmp21        [V22,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V23 tmp22        [V23,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V24 tmp23        [V24,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V25 tmp24        [V25,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V05.value (fldOffset=0x1)" P-INDEP
+;* V26 tmp25        [V26,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V27 tmp26        [V27,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06.value (fldOffset=0x1)" P-INDEP
+;* V28 tmp27        [V28,T13] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V29 tmp28        [V29,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07.value (fldOffset=0x1)" P-INDEP
+;* V30 tmp29        [V30,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V31 tmp30        [V31,T16] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V32 tmp31        [V32,T17] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V33 tmp32        [V33,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V10.value (fldOffset=0x1)" P-INDEP
 ;
 ; Lcl frame size = 8
 
 G_M20015_IG01:
        push     rbp
-       push     r15
-       push     r14
        push     rbx
        push     rax
-       lea      rbp, [rsp+0x20]
-						;; size=12 bbWeight=0.50 PerfScore 2.75
+       lea      rbp, [rsp+0x10]
+						;; size=8 bbWeight=1 PerfScore 3.50
 G_M20015_IG02:
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rbx, gword ptr [rdi]
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Extensions.DependencyModel.CompilationOptions
        call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       mov      rdi, rbx
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
-       jne      SHORT G_M20015_IG03
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      rsi, gword ptr [rax]
-       jmp      SHORT G_M20015_IG04
-						;; size=58 bbWeight=0.50 PerfScore 5.25
-G_M20015_IG03:
-       movsxd   rsi, eax
-       mov      rdi, 0xD1FFAB1E      ; System.String[]
-       call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r14, rax
-       mov      rdi, rbx
-       mov      rsi, r14
-       xor      edx, edx
-       call     System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
-       mov      rsi, r14
-						;; size=37 bbWeight=0.50 PerfScore 1.88
-G_M20015_IG04:
-       lea      rdi, bword ptr [r15+0x08]
+       mov      rbx, rax
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        xor      rdi, rdi
-       mov      gword ptr [r15+0x10], rdi
-						;; size=15 bbWeight=1 PerfScore 2.75
+       mov      gword ptr [rbx+0x10], rdi
+						;; size=46 bbWeight=1 PerfScore 6.50
+G_M20015_IG03:
+       mov      gword ptr [rbx+0x18], rdi
+						;; size=4 bbWeight=1 PerfScore 1.00
+G_M20015_IG04:
+       mov      dword ptr [rbx+0x30], edi
+       mov      word  ptr [rbx+0x34], 0
+						;; size=9 bbWeight=1 PerfScore 2.00
 G_M20015_IG05:
-       mov      gword ptr [r15+0x18], rdi
+       mov      gword ptr [rbx+0x20], rdi
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M20015_IG06:
-       mov      dword ptr [r15+0x30], edi
-       mov      word  ptr [r15+0x34], 0
-						;; size=11 bbWeight=1 PerfScore 2.00
+       mov      dword ptr [rbx+0x36], edi
+						;; size=3 bbWeight=1 PerfScore 1.00
 G_M20015_IG07:
-       mov      gword ptr [r15+0x20], rdi
+       mov      gword ptr [rbx+0x28], rdi
 						;; size=4 bbWeight=1 PerfScore 1.00
 G_M20015_IG08:
-       mov      dword ptr [r15+0x36], edi
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG09:
-       mov      gword ptr [r15+0x28], rdi
-						;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG10:
-       mov      dword ptr [r15+0x3A], edi
+       mov      dword ptr [rbx+0x3A], edi
        mov      rdi, 0xD1FFAB1E      ; data for Microsoft.Extensions.DependencyModel.CompilationOptions:<Default>k__BackingField
-       mov      rsi, r15
+       mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=23 bbWeight=1 PerfScore 2.75
-G_M20015_IG11:
+						;; size=22 bbWeight=1 PerfScore 2.75
+G_M20015_IG09:
        add      rsp, 8
        pop      rbx
-       pop      r14
-       pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
+						;; size=7 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 183, prolog size 12, PerfScore 24.62, instruction count 48, allocated bytes for code 183 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
+; Total bytes of code 107, prolog size 8, PerfScore 21.00, instruction count 28, allocated bytes for code 107 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
 ; ============================================================
-7 (-2.39 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  6,  5.50)     ref  ->  r15         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V00 this         [V00,T02] (  5,  4.50)     ref  ->  r14         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
 ;  V01 arg1         [V01,T00] (  7,  5.50)     int  ->  rbx         single-def
-;  V02 arg2         [V02,T02] (  6,  5   )     int  ->  r14        
-;  V03 loc0         [V03,T03] (  8,  5   )     int  ->  r14        
-;  V04 loc1         [V04,T07] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+;  V02 arg2         [V02,T01] (  6,  5   )     int  ->  r15        
+;  V03 loc0         [V03,T03] (  8,  5   )     int  ->  r15        
+;  V04 loc1         [V04,T07] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  2,  4   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V07 tmp2         [V07,T04] (  3,  4   )     int  ->  r13         ld-addr-op "Inlining Arg"
+;  V06 tmp1         [V06,T06] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+;  V07 tmp2         [V07,T05] (  3,  4   )     int  ->  r14         ld-addr-op "Inlining Arg"
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V09 tmp4         [V09,T08] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V10 tmp5         [V10,T09] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V11 tmp6         [V11,T10] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V12 cse0         [V12,T06] (  4,  3   )     ref  ->  r13         "CSE #02: aggressive"
+;  V12 cse0         [V12,T04] (  7,  5   )     ref  ->  r13         multi-def "CSE #01: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M14820_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
-       mov      r15, rdi
+       mov      r14, rdi
        mov      ebx, esi
-       mov      r14d, edx
+       mov      r15d, edx
 						;; size=21 bbWeight=1 PerfScore 6.25
 G_M14820_IG02:
-       mov      rdi, r15
+       mov      rdi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
-       test     r14d, r14d
+       test     r15d, r15d
        jge      SHORT G_M14820_IG04
 						;; size=20 bbWeight=1 PerfScore 4.75
 G_M14820_IG03:
-       mov      rdi, gword ptr [r15+0x10]
-       add      r14d, dword ptr [rdi+0x08]
+       mov      r13, gword ptr [r14+0x10]
+       add      r15d, dword ptr [r13+0x08]
 						;; size=8 bbWeight=0.50 PerfScore 2.50
 G_M14820_IG04:
-       sub      r14d, ebx
-       inc      r14d
-       mov      rdi, gword ptr [r15+0x10]
-       test     r14d, r14d
+       sub      r15d, ebx
+       inc      r15d
+       mov      r13, gword ptr [r14+0x10]
+       mov      rsi, r13
+       test     r15d, r15d
        jl       G_M14820_IG11
        test     ebx, ebx
        jl       G_M14820_IG10
-       cmp      dword ptr [rdi], edi
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       mov      r13d, eax
-       sub      r13d, ebx
-       cmp      r13d, r14d
+       mov      r14d, dword ptr [rsi+0x08]
+       sub      r14d, ebx
+       cmp      r14d, r15d
        jl       SHORT G_M14820_IG09
-       mov      r13, gword ptr [r15+0x10]
-       cmp      dword ptr [r13+0x08], r14d
+       cmp      dword ptr [r13+0x08], r15d
        je       SHORT G_M14820_IG07
-						;; size=55 bbWeight=1 PerfScore 16.75
+						;; size=48 bbWeight=1 PerfScore 12.75
 G_M14820_IG05:
-       movsxd   rsi, r14d
+       movsxd   rsi, r15d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r15, rax
+       mov      r14, rax
        mov      rdi, r13
        mov      esi, ebx
-       mov      rdx, r15
-       mov      r8d, r14d
+       mov      rdx, r14
+       mov      r8d, r15d
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      rax, r15
+       mov      rax, r14
 						;; size=49 bbWeight=0.50 PerfScore 3.25
 G_M14820_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M14820_IG07:
        mov      rax, r13
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M14820_IG08:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M14820_IG09:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
-       mov      esi, r14d
-       mov      edi, r13d
+       mov      esi, r15d
+       mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M14820_IG10:
        mov      edi, 0x47FD
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
        mov      edi, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=38 bbWeight=0 PerfScore 0.00
 G_M14820_IG11:
        mov      edi, 0x4809
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rsi, rax
-       mov      edi, r14d
+       mov      edi, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
        int3     
 						;; size=39 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 293, prolog size 13, PerfScore 37.12, instruction count 82, allocated bytes for code 293 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 286, prolog size 13, PerfScore 33.12, instruction count 80, allocated bytes for code 286 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
 ; ============================================================
-6 (-3.64 % of base) - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type
 ; Assembly listing for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  6,  6   )     ref  ->  rbx         class-hnd single-def <System.Type[]>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;
 ; Lcl frame size = 8
 
 G_M54830_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=1 PerfScore 3.75
 G_M54830_IG02:
        test     rbx, rbx
        je       SHORT G_M54830_IG05
-       mov      rdi, rbx
-       call     System.SZArrayHelper:get_Count[System.Object]():int:this
-       test     eax, eax
+       cmp      dword ptr [rbx+0x08], 0
        je       SHORT G_M54830_IG04
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.Type](System.Collections.Generic.IList`1[System.Type],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'typeArgs'
        mov      rax, 0xD1FFAB1E      ; code for System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
        call     [rax]System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
-						;; size=65 bbWeight=1 PerfScore 8.25
+						;; size=59 bbWeight=1 PerfScore 9.75
 G_M54830_IG03:
        add      rsp, 8
        pop      rbx
        pop      rbp
        tail.jmp [rax]System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M54830_IG04:
        mov      edi, 0x30FF
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
        call     [rax]System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
        mov      rdi, rax
        call     CORINFO_HELP_THROW
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
 G_M54830_IG05:
        mov      edi, 0x30FF
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 165, prolog size 8, PerfScore 15.25, instruction count 38, allocated bytes for code 165 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
+; Total bytes of code 159, prolog size 8, PerfScore 16.75, instruction count 36, allocated bytes for code 159 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
 ; ============================================================

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 27, 2024

@AndyAyersMS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant