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] [MichalPetryka] Propagate delegate loads during inlining #786

Open
MihuBot opened this issue Nov 12, 2024 · 3 comments
Open

Comments

@MihuBot
Copy link
Owner

MihuBot commented Nov 12, 2024

Job completed in 19 minutes 50 seconds.
dotnet/runtime#109715

Diffs

Diffs
Found 280 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39654551
Total bytes of diff: 39678389
Total bytes of delta: 23838 (0.06 % of base)
Total relative delta: 70.09
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
       21344 : System.Collections.Immutable.dasm (1.02 % of base)
        1461 : System.Reflection.MetadataLoadContext.dasm (0.67 % of base)
         726 : System.Net.Requests.dasm (0.49 % of base)
         241 : System.Data.Common.dasm (0.01 % of base)
         222 : System.Net.HttpListener.dasm (0.21 % of base)
         111 : System.Net.Mail.dasm (0.06 % of base)
          93 : Microsoft.Extensions.Configuration.dasm (0.57 % of base)
          57 : System.Private.CoreLib.dasm (0.00 % of base)

Top file improvements (bytes):
        -323 : System.Linq.Parallel.dasm (-0.01 % of base)
         -91 : System.Threading.Tasks.Dataflow.dasm (-0.01 % of base)
          -3 : System.Net.NetworkInformation.dasm (-0.01 % of base)

11 total files with Code Size differences (3 improved, 8 regressed), 248 unchanged.

Top method regressions (bytes):
         485 (30.58 % of base) : System.Net.Requests.dasm - System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this (FullOpts)
         394 (58.46 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         291 (43.18 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         277 (54.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         241 (139.31 % of base) : System.Data.Common.dasm - System.Data.Common.DataStorage:ImplementsInterfaces(int,System.Type,byref,byref,byref,byref,byref) (FullOpts)
         241 (17.20 % of base) : System.Net.Requests.dasm - System.Net.FtpControlStream:QueueOrCreateFtpDataStream(byref):int:this (FullOpts)
         235 (34.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double],System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         230 (36.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[short,System.Nullable`1[int]](byref,short,System.Func`2[short,System.Nullable`1[int]],System.Func`3[short,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         230 (36.45 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Func`2[ubyte,System.Nullable`1[int]],System.Func`3[ubyte,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         230 (39.25 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryRemove[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],byref):ubyte (FullOpts)
         227 (33.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short],System.Collections.Generic.IEqualityComparer`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         227 (33.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         227 (39.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int],System.Func`3[short,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         227 (39.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int],System.Func`3[ubyte,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         225 (33.38 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[long](System.Collections.Generic.IEnumerable`1[long],System.Collections.Generic.IEqualityComparer`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         225 (592.11 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueConstructedGenericType(System.Reflection.TypeLoading.RoDefinitionType,System.Reflection.TypeLoading.RoType[]):System.Reflection.TypeLoading.RoConstructedGenericType:this (FullOpts)
         224 (42.99 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float][]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         224 (47.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         223 (33.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         223 (17.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Func`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         222 (198.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
         222 (198.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
         218 (35.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[int,System.Nullable`1[int]](byref,int,System.Func`2[int,System.Nullable`1[int]],System.Func`3[int,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         218 (38.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int],System.Func`3[int,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         218 (34.82 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[long,System.Nullable`1[int]](byref,long,System.Func`2[long,System.Nullable`1[int]],System.Func`3[long,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         218 (38.31 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int],System.Func`3[long,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         213 (18.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Func`2[System.Numerics.Vector`1[float],System.Nullable`1[int]],System.Func`3[System.Numerics.Vector`1[float],System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         213 (19.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Nullable`1[int],System.Func`3[System.Numerics.Vector`1[float],System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         212 (41.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         210 (122.81 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetGenericInstantiation(System.Reflection.TypeLoading.RoType,System.Collections.Immutable.ImmutableArray`1[System.Reflection.TypeLoading.RoType]):System.Reflection.TypeLoading.RoType:this (FullOpts)
         208 (21.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         208 (22.06 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Nullable`1[int]):ubyte (FullOpts)
         203 (55.62 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         203 (31.97 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[double,System.Nullable`1[int]](byref,double,System.Func`2[double,System.Nullable`1[int]],System.Func`3[double,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         203 (35.18 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int],System.Func`3[double,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         203 (30.03 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],System.Func`2[System.Nullable`1[int],System.Nullable`1[int]],System.Func`3[System.Nullable`1[int],System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         203 (32.74 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],System.Nullable`1[int],System.Func`3[System.Nullable`1[int],System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         201 (45.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         199 (144.20 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType,int):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
         198 (20.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         196 (54.44 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         196 (57.82 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         195 (38.01 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         192 (33.39 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaResolver:ResolveAndSpecializeType(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.TypeLoading.Ecma.EcmaModule,byref):System.Reflection.TypeLoading.RoInstantiationProviderType (FullOpts)
         191 (18.16 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoDefinitionType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
         189 (36.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         189 (36.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         188 (55.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         188 (49.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]] (FullOpts)
         188 (36.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[long](System.Collections.Generic.IEnumerable`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         187 (95.41 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Numerics.Vector`1[float],System.Nullable`1[int]],int):this (FullOpts)
         187 (36.45 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         183 (42.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:Union(System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],ubyte):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         181 (88.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.Numerics.Vector`1[float]]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],int):this (FullOpts)
         181 (35.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.15 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (32.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.15 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         180 (4.77 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.Numerics.Vector`1[float]] (FullOpts)
         178 (105.95 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):this (FullOpts)
         163 (34.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (33.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (33.75 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (33.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (31.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (33.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (34.46 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int]):ubyte (FullOpts)
         163 (34.32 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int]):ubyte (FullOpts)
         163 (34.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int]):ubyte (FullOpts)
         163 (33.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int]):ubyte (FullOpts)
         163 (31.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         163 (33.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int]):ubyte (FullOpts)
         163 (31.23 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryRemove[System.Nullable`1[int],System.Nullable`1[int]](byref,System.Nullable`1[int],byref):ubyte (FullOpts)
         161 (4.66 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[System.Nullable`1[int]] (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[double,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[double,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[int,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[int,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[long,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[long,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[short,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[short,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Nullable`1[int],System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Nullable`1[int],System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[ubyte,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[ubyte,System.Nullable`1[int]],int):this (FullOpts)
         136 (37.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         134 (79.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):this (FullOpts)
         133 (65.20 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],int):this (FullOpts)
         133 (36.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:this (FullOpts)
         133 (39.23 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:this (FullOpts)
         132 (30.99 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:Union(System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],ubyte):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:this (FullOpts)
         131 (38.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         131 (34.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]] (FullOpts)
         131 (64.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],System.Collections.Generic.IEqualityComparer`1[double],int):this (FullOpts)
         130 (35.62 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[double](System.Collections.Generic.IEqualityComparer`1[double],System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         130 (63.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]],System.Collections.Generic.IEqualityComparer`1[short],int):this (FullOpts)
         130 (63.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[ubyte]],System.Collections.Generic.IEqualityComparer`1[ubyte],int):this (FullOpts)
         129 (63.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]],System.Collections.Generic.IEqualityComparer`1[long],int):this (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[short](System.Collections.Generic.IEqualityComparer`1[short],short):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[ubyte](System.Collections.Generic.IEqualityComparer`1[ubyte],ubyte):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[short](System.Collections.Generic.IEqualityComparer`1[short],System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[ubyte](System.Collections.Generic.IEqualityComparer`1[ubyte],System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         128 (76.19 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:.ctor(System.Collections.Generic.IEqualityComparer`1[double]):this (FullOpts)

Top method improvements (bytes):
        -205 (-5.97 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double] (FullOpts)
        -180 (-5.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[short],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[short] (FullOpts)
        -179 (-5.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int] (FullOpts)
        -178 (-5.23 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[long],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[long] (FullOpts)
        -178 (-5.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[ubyte]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[ubyte] (FullOpts)
         -18 (-1.91 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[int,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[long,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[short,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[ubyte,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[long,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[short,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[ubyte,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[double,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[int,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[long,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[short,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.67 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[ubyte,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.41 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[double](System.Threading.Tasks.Dataflow.ISourceBlock`1[double],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[double] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[int](System.Threading.Tasks.Dataflow.ISourceBlock`1[int],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[long](System.Threading.Tasks.Dataflow.ISourceBlock`1[long],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[long] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[short](System.Threading.Tasks.Dataflow.ISourceBlock`1[short],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[short] (FullOpts)
          -8 (-0.70 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.__Canon](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.__Canon],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.Nullable`1[int]](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.Nullable`1[int]],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Nullable`1[int]] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.Numerics.Vector`1[float]](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.Numerics.Vector`1[float]],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[ubyte](System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte] (FullOpts)
          -6 (-1.45 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[double]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[double],double,System.Threading.CancellationToken):this (FullOpts)
          -6 (-1.46 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float],System.Threading.CancellationToken):this (FullOpts)
          -4 (-1.07 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.QueryTask:RunAsynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this (FullOpts)
          -4 (-1.07 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this (FullOpts)
          -3 (-0.42 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.NetworkChange:add_NetworkAvailabilityChanged(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler) (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[int]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[int],int,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[long]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[long],long,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[short]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[short],short,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Nullable`1[int]],System.Nullable`1[int],System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[ubyte]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],ubyte,System.Threading.CancellationToken):this (FullOpts)

Top method regressions (percentages):
         225 (592.11 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueConstructedGenericType(System.Reflection.TypeLoading.RoDefinitionType,System.Reflection.TypeLoading.RoType[]):System.Reflection.TypeLoading.RoConstructedGenericType:this (FullOpts)
         222 (198.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
         222 (198.21 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
         199 (144.20 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType,int):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
         241 (139.31 % of base) : System.Data.Common.dasm - System.Data.Common.DataStorage:ImplementsInterfaces(int,System.Type,byref,byref,byref,byref,byref) (FullOpts)
         210 (122.81 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetGenericInstantiation(System.Reflection.TypeLoading.RoType,System.Collections.Immutable.ImmutableArray`1[System.Reflection.TypeLoading.RoType]):System.Reflection.TypeLoading.RoType:this (FullOpts)
         178 (105.95 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):this (FullOpts)
         187 (95.41 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Numerics.Vector`1[float],System.Nullable`1[int]],int):this (FullOpts)
         181 (88.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.Numerics.Vector`1[float]]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],int):this (FullOpts)
         134 (79.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[double,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[double,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[int,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[int,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[long,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[long,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[short,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[short,System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Nullable`1[int],System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Nullable`1[int],System.Nullable`1[int]],int):this (FullOpts)
         156 (79.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[ubyte,System.Nullable`1[int]]],System.Collections.Immutable.ImmutableDictionary`2+Comparers[ubyte,System.Nullable`1[int]],int):this (FullOpts)
         128 (76.19 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:.ctor(System.Collections.Generic.IEqualityComparer`1[double]):this (FullOpts)
         126 (75.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:.ctor(System.Collections.Generic.IEqualityComparer`1[short]):this (FullOpts)
         126 (75.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:.ctor(System.Collections.Generic.IEqualityComparer`1[ubyte]):this (FullOpts)
         125 (74.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:.ctor(System.Collections.Generic.IEqualityComparer`1[long]):this (FullOpts)
         124 (73.81 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:.ctor(System.Collections.Generic.IEqualityComparer`1[int]):this (FullOpts)
         133 (65.20 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],int):this (FullOpts)
         131 (64.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],System.Collections.Generic.IEqualityComparer`1[double],int):this (FullOpts)
         130 (63.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[short]],System.Collections.Generic.IEqualityComparer`1[short],int):this (FullOpts)
         130 (63.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[ubyte]],System.Collections.Generic.IEqualityComparer`1[ubyte],int):this (FullOpts)
         129 (63.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[long]],System.Collections.Generic.IEqualityComparer`1[long],int):this (FullOpts)
         127 (62.25 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:.ctor(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],System.Collections.Generic.IEqualityComparer`1[int],int):this (FullOpts)
         394 (58.46 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         196 (57.82 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         188 (55.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         203 (55.62 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         196 (54.44 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         277 (54.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         188 (49.21 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]] (FullOpts)
         224 (47.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         201 (45.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         291 (43.18 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         224 (42.99 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Numerics.Vector`1[float]](System.Collections.Generic.IEqualityComparer`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float][]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         183 (42.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:Union(System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]],ubyte):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:this (FullOpts)
         212 (41.33 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         227 (39.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int],System.Func`3[ubyte,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         227 (39.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int],System.Func`3[short,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         230 (39.25 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryRemove[System.Numerics.Vector`1[float],System.Nullable`1[int]](byref,System.Numerics.Vector`1[float],byref):ubyte (FullOpts)
         133 (39.23 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:WithComparer(System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:this (FullOpts)
         131 (38.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         218 (38.58 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int],System.Func`3[int,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         218 (38.31 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int],System.Func`3[long,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         195 (38.01 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         136 (37.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]],System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         133 (36.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:Clear():System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:this (FullOpts)
         189 (36.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         189 (36.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         188 (36.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[long](System.Collections.Generic.IEnumerable`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         187 (36.45 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         230 (36.45 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Func`2[ubyte,System.Nullable`1[int]],System.Func`3[ubyte,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         230 (36.39 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[short,System.Nullable`1[int]](byref,short,System.Func`2[short,System.Nullable`1[int]],System.Func`3[short,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         123 (36.28 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:WithComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]:this (FullOpts)
         121 (35.91 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[double](System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         181 (35.84 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         130 (35.62 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[double](System.Collections.Generic.IEqualityComparer`1[double],System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         181 (35.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         203 (35.18 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int],System.Func`3[double,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         181 (35.15 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         181 (35.15 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryUpdate[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int],System.Nullable`1[int]):ubyte (FullOpts)
         218 (35.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[int,System.Nullable`1[int]](byref,int,System.Func`2[int,System.Nullable`1[int]],System.Func`3[int,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[short](System.Collections.Generic.IEqualityComparer`1[short],short):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[ubyte](System.Collections.Generic.IEqualityComparer`1[ubyte],ubyte):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[short](System.Collections.Generic.IEqualityComparer`1[short],System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         128 (35.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[ubyte](System.Collections.Generic.IEqualityComparer`1[ubyte],System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         235 (34.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double],System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         218 (34.82 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:AddOrUpdate[long,System.Nullable`1[int]](byref,long,System.Func`2[long,System.Nullable`1[int]],System.Func`3[long,System.Nullable`1[int],System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
         127 (34.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[long](System.Collections.Generic.IEqualityComparer`1[long],long):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         127 (34.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[long](System.Collections.Generic.IEqualityComparer`1[long],System.Collections.Generic.IEnumerable`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         126 (34.71 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[int](System.Collections.Generic.IEqualityComparer`1[int],int):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         126 (34.52 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateRange[int](System.Collections.Generic.IEqualityComparer`1[int],System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         117 (34.51 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:WithComparer(System.Collections.Generic.IEqualityComparer`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short]:this (FullOpts)
         117 (34.51 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:WithComparer(System.Collections.Generic.IEqualityComparer`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte]:this (FullOpts)
         163 (34.46 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int]):ubyte (FullOpts)
         163 (34.32 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int]):ubyte (FullOpts)
         131 (34.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:CreateBuilder[System.Nullable`1[int]](System.Collections.Generic.IEqualityComparer`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]] (FullOpts)
         116 (34.22 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:WithComparer(System.Collections.Generic.IEqualityComparer`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long]:this (FullOpts)
         123 (34.17 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:Clear():System.Collections.Immutable.ImmutableHashSet`1[double]:this (FullOpts)
         115 (34.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[short](System.Collections.Generic.IEqualityComparer`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         115 (34.12 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[ubyte](System.Collections.Generic.IEqualityComparer`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         163 (34.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[double,System.Nullable`1[int]](byref,double,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (34.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int]):ubyte (FullOpts)
         124 (33.97 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[double](System.Collections.Generic.IEqualityComparer`1[double],double):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         163 (33.96 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[int,System.Nullable`1[int]](byref,int,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         115 (33.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:WithComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]:this (FullOpts)
         163 (33.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int]):ubyte (FullOpts)
         163 (33.89 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:TryAdd[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int]):ubyte (FullOpts)
         114 (33.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[long](System.Collections.Generic.IEqualityComparer`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         163 (33.75 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[long,System.Nullable`1[int]](byref,long,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         227 (33.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short],System.Collections.Generic.IEqualityComparer`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         227 (33.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
         163 (33.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[short,System.Nullable`1[int]](byref,short,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         163 (33.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[ubyte,System.Nullable`1[int]](byref,ubyte,System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
         113 (33.53 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:Create[int](System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         192 (33.39 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.TypeLoading.Ecma.EcmaResolver:ResolveAndSpecializeType(System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.TypeLoading.Ecma.EcmaModule,byref):System.Reflection.TypeLoading.RoInstantiationProviderType (FullOpts)

Top method improvements (percentages):
        -205 (-5.97 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double] (FullOpts)
        -180 (-5.29 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[short],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[short]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[short] (FullOpts)
        -179 (-5.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int] (FullOpts)
        -178 (-5.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[ubyte]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[ubyte] (FullOpts)
        -178 (-5.23 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[long],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[long]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[long] (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[int,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[long,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[short,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -15 (-1.97 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[ubyte,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
         -18 (-1.91 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[double,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[int,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[long,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[short,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.79 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[ubyte,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
         -12 (-1.67 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass1_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolPipeline>b__0():this (FullOpts)
          -6 (-1.46 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float],System.Threading.CancellationToken):this (FullOpts)
          -6 (-1.45 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[double]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[double],double,System.Threading.CancellationToken):this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[long,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[short,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.Nullable`1[int],System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.43 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[ubyte,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
         -12 (-1.41 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
          -4 (-1.07 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.QueryTask:RunAsynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this (FullOpts)
          -4 (-1.07 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[double](System.Threading.Tasks.Dataflow.ISourceBlock`1[double],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[double] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[int](System.Threading.Tasks.Dataflow.ISourceBlock`1[int],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[long](System.Threading.Tasks.Dataflow.ISourceBlock`1[long],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[long] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[short](System.Threading.Tasks.Dataflow.ISourceBlock`1[short],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[short] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.Nullable`1[int]](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.Nullable`1[int]],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Nullable`1[int]] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.Numerics.Vector`1[float]](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.Numerics.Vector`1[float]],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]] (FullOpts)
          -8 (-0.76 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[ubyte](System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte] (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[int]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[int],int,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[long]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[long],long,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Nullable`1[int]],System.Nullable`1[int],System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[ubyte]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],ubyte,System.Threading.CancellationToken):this (FullOpts)
          -3 (-0.74 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[short]:.ctor(System.Threading.Tasks.Dataflow.ITargetBlock`1[short],short,System.Threading.CancellationToken):this (FullOpts)
          -8 (-0.70 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock:ReceiveCoreByLinking[System.__Canon](System.Threading.Tasks.Dataflow.ISourceBlock`1[System.__Canon],int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
          -3 (-0.42 % of base) : System.Net.NetworkInformation.dasm - System.Net.NetworkInformation.NetworkChange:add_NetworkAvailabilityChanged(System.Net.NetworkInformation.NetworkAvailabilityChangedEventHandler) (FullOpts)

201 total methods with Code Size differences (47 improved, 154 regressed), 232621 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 12, 2024

Top method regressions

485 (30.58 % of base) - System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this
 ; Assembly listing for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int: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; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 34 single block inlinees; 20 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 28, 15   )     ref  ->  rbx         this class-hnd single-def <System.Net.FtpControlStream>
-;  V01 arg1         [V01,T03] (  3,  2.50)     ref  ->  rsi         class-hnd single-def <System.Net.CommandStream+PipelineEntry>
-;  V02 arg2         [V02,T01] (  6,  4   )     ref  ->  r15         class-hnd single-def <System.Net.ResponseDescription>
-;  V03 arg3         [V03,T02] (  5,  4   )   byref  ->  r14         single-def
-;* V04 loc0         [V04,T44] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc1         [V05,T24] (  3,  1.50)     int  ->  r13        
-;  V06 loc2         [V06,T25] (  4,  2   )     int  ->  r14        
+;  V01 arg1         [V01,T07] (  3,  2.50)     ref  ->  rsi         class-hnd single-def <System.Net.CommandStream+PipelineEntry>
+;  V02 arg2         [V02,T03] (  6,  4   )     ref  ->  r15         class-hnd single-def <System.Net.ResponseDescription>
+;  V03 arg3         [V03,T04] (  5,  4   )   byref  ->  r14         single-def
+;* V04 loc0         [V04,T54] (  0,  0   )   ubyte  ->  zero-ref   
+;  V05 loc1         [V05,T34] (  3,  1.50)     int  ->  r13        
+;  V06 loc2         [V06,T35] (  4,  2   )     int  ->  r14        
 ;* V07 loc3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Net.IPEndPoint>
-;  V08 loc4         [V08,T36] (  3,  1.50)     ref  ->  r15         class-hnd single-def <System.Net.IPEndPoint>
-;  V09 loc5         [V09,T43] (  3,  0.50)     ref  ->  [rbp-0x30]  class-hnd EH-live single-def <System.Net.Sockets.Socket>
+;  V08 loc4         [V08,T44] (  3,  1.50)     ref  ->  r15         class-hnd single-def <System.Net.IPEndPoint>
+;  V09 loc5         [V09,T53] (  3,  0.50)     ref  ->  [rbp-0x30]  class-hnd EH-live single-def <System.Net.Sockets.Socket>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V11 tmp1         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Net.IPAddress>
-;  V12 tmp2         [V12,T46] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebException>
-;  V13 tmp3         [V13,T04] (  4,  4   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
-;  V14 tmp4         [V14,T10] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+;  V12 tmp2         [V12,T56] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebException>
+;  V13 tmp3         [V13,T08] (  4,  4   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+;  V14 tmp4         [V14,T18] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
 ;* V15 tmp5         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impSpillSpecialSideEff" <System.ObjectDisposedException>
-;  V16 tmp6         [V16,T11] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V17 tmp7         [V17,T26] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impImportAndPushBox" <System.String>
+;  V16 tmp6         [V16,T19] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;  V17 tmp7         [V17,T36] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impImportAndPushBox" <System.String>
 ;* V18 tmp8         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp9         [V19,T08] (  5,  3   )     ref  ->  rax         single-def "spilling varStr"
+;  V19 tmp9         [V19,T16] (  5,  3   )     ref  ->  rax         single-def "spilling varStr"
 ;* V20 tmp10        [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
 ;* V21 tmp11        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V22 tmp12        [V22,T09] (  5,  3   )     ref  ->  rax         single-def "spilling varStr"
+;  V22 tmp12        [V22,T17] (  5,  3   )     ref  ->  rax         single-def "spilling varStr"
 ;* V23 tmp13        [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
-;* V24 tmp14        [V24,T45] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V24 tmp14        [V24,T55] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V25 tmp15        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V26 tmp16        [V26,T20] (  4,  2.75)     ref  ->  rdi         single-def "spilling varStr"
+;  V26 tmp16        [V26,T30] (  4,  2.75)     ref  ->  rdi         single-def "spilling varStr"
 ;* V27 tmp17        [V27    ] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
 ;* V28 tmp18        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Net.Sockets.NetworkStream>
 ;* V29 tmp19        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Net.Sockets.NetworkStream>
-;  V30 tmp20        [V30,T27] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
-;  V31 tmp21        [V31,T12] (  3,  3   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Net.IPAddress>
+;  V30 tmp20        [V30,T37] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
+;  V31 tmp21        [V31,T20] (  3,  3   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Net.IPAddress>
 ;* V32 tmp22        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.ArgumentOutOfRangeException>
 ;* V33 tmp23        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp24        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-;  V35 tmp25        [V35,T13] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
-;  V36 tmp26        [V36,T28] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "non-inline candidate call" <System.String>
+;  V35 tmp25        [V35,T21] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
+;  V36 tmp26        [V36,T38] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "non-inline candidate call" <System.String>
 ;* V37 tmp27        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.String>
 ;* V38 tmp28        [V38    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V39 tmp29        [V39    ] (  0,  0   )     int  ->  zero-ref   
 ;* V40 tmp30        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V41 tmp31        [V41    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V42 tmp32        [V42,T29] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V43 tmp33        [V43,T14] (  3,  3   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-;* V44 tmp34        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.AsyncCallback>
-;  V45 tmp35        [V45,T15] (  3,  3   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
-;* V46 tmp36        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.AsyncCallback>
-;  V47 tmp37        [V47,T30] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
-;* V48 tmp38        [V48    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-;  V49 tmp39        [V49,T16] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
-;  V50 tmp40        [V50,T31] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "non-inline candidate call" <System.String>
-;* V51 tmp41        [V51    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.String>
+;  V42 tmp32        [V42,T39] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V43 tmp33        [V43,T22] (  3,  3   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
+;  V44 tmp34        [V44,T09] (  4,  4   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;  V45 tmp35        [V45,T01] (  8,  8   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
+;* V46 tmp36        [V46    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V47 tmp37        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+;  V48 tmp38        [V48,T05] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action>
+;* V49 tmp39        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V50 tmp40        [V50,T10] (  4,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V51 tmp41        [V51    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V52 tmp42        [V52    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V53 tmp43        [V53    ] (  0,  0   )     int  ->  zero-ref   
-;* V54 tmp44        [V54    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;* V55 tmp45        [V55    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V56 tmp46        [V56,T32] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V57 tmp47        [V57,T17] (  3,  3   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-;* V58 tmp48        [V58    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.AsyncCallback>
-;  V59 tmp49        [V59,T18] (  3,  3   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]>
-;* V60 tmp50        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.AsyncCallback>
-;  V61 tmp51        [V61,T33] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
-;* V62 tmp52        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Net.IPEndPoint>
-;  V63 tmp53        [V63,T21] (  3,  2.25)     ref  ->  rax         single-def "argument with side effect"
-;  V64 tmp54        [V64,T34] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V65 tmp55        [V65,T22] (  3,  2.25)     ref  ->  rax         single-def "argument with side effect"
-;  V66 tmp56        [V66,T19] (  3,  3   )     ref  ->  r15         single-def "argument with side effect"
-;  V67 tmp57        [V67,T35] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V68 tmp58        [V68,T47] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V69 PSPSym       [V69,T41] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
-;  V70 cse0         [V70,T07] (  6,  3   )     ref  ->  r13         multi-def "CSE #17: moderate"
-;  V71 cse1         [V71,T42] (  5,  0.62)    long  ->  rax         multi-def "CSE #06: conservative"
-;  V72 cse2         [V72,T23] (  4,  2   )     ref  ->  rdi         "CSE #01: moderate"
-;  V73 cse3         [V73,T38] (  3,  1.50)     int  ->  rcx         "CSE #07: conservative"
-;  V74 cse4         [V74,T37] (  3,  1.50)     ref  ->  r15         "CSE #12: conservative"
-;  V75 rat0         [V75,T05] (  5,  3.75)     ref  ->  r15         "replacement local"
-;  V76 rat1         [V76,T39] (  3,  1.25)    long  ->  rdi         "CSE for expectedClsNode"
-;  V77 rat2         [V77,T06] (  5,  3.75)     ref  ->  rcx         "replacement local"
-;  V78 rat3         [V78,T40] (  3,  1.25)    long  ->  rdi         "CSE for expectedClsNode"
+;* V54 tmp44        [V54    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V55 tmp45        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+;  V56 tmp46        [V56,T23] (  3,  3   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Action>
+;* V57 tmp47        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V58 tmp48        [V58,T49] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V59 tmp49        [V59    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+;* V60 tmp50        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
+;  V61 tmp51        [V61,T24] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
+;  V62 tmp52        [V62,T40] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "non-inline candidate call" <System.String>
+;* V63 tmp53        [V63    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <System.String>
+;* V64 tmp54        [V64    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V65 tmp55        [V65    ] (  0,  0   )     int  ->  zero-ref   
+;* V66 tmp56        [V66    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V67 tmp57        [V67    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;  V68 tmp58        [V68,T41] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V69 tmp59        [V69,T25] (  3,  3   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
+;  V70 tmp60        [V70,T11] (  4,  4   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]>
+;  V71 tmp61        [V71,T02] (  8,  8   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
+;* V72 tmp62        [V72    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V73 tmp63        [V73    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+;  V74 tmp64        [V74,T06] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Action>
+;* V75 tmp65        [V75    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V76 tmp66        [V76,T12] (  4,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V77 tmp67        [V77    ] (  0,  0   )     ref  ->  zero-ref   
+;* V78 tmp68        [V78    ] (  0,  0   )     ref  ->  zero-ref    single-def
+;* V79 tmp69        [V79    ] (  0,  0   )     int  ->  zero-ref   
+;* V80 tmp70        [V80    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V81 tmp71        [V81    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+;  V82 tmp72        [V82,T26] (  3,  3   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Action>
+;* V83 tmp73        [V83    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V84 tmp74        [V84,T50] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V85 tmp75        [V85    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+;* V86 tmp76        [V86    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Net.IPEndPoint>
+;* V87 tmp77        [V87    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V47.m_task (fldOffset=0x0)" P-INDEP
+;* V88 tmp78        [V88    ] (  0,  0   )     int  ->  zero-ref    "field V47.m_options (fldOffset=0x8)" P-INDEP
+;* V89 tmp79        [V89    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V55.m_task (fldOffset=0x0)" P-INDEP
+;* V90 tmp80        [V90    ] (  0,  0   )     int  ->  zero-ref    "field V55.m_options (fldOffset=0x8)" P-INDEP
+;* V91 tmp81        [V91    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V73.m_task (fldOffset=0x0)" P-INDEP
+;* V92 tmp82        [V92    ] (  0,  0   )     int  ->  zero-ref    "field V73.m_options (fldOffset=0x8)" P-INDEP
+;* V93 tmp83        [V93    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V81.m_task (fldOffset=0x0)" P-INDEP
+;* V94 tmp84        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V81.m_options (fldOffset=0x8)" P-INDEP
+;  V95 tmp85        [V95,T31] (  3,  2.25)     ref  ->  rax         single-def "argument with side effect"
+;  V96 tmp86        [V96,T42] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;  V97 tmp87        [V97,T32] (  3,  2.25)     ref  ->  rax         single-def "argument with side effect"
+;  V98 tmp88        [V98,T27] (  3,  3   )     ref  ->  r15         single-def "argument with side effect"
+;  V99 tmp89        [V99,T43] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
+;  V100 tmp90       [V100,T57] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V101 PSPSym      [V101,T51] (  1,  1   )    long  ->  [rbp-0x40]  do-not-enreg[V] "PSPSym"
+;  V102 cse0        [V102,T15] (  6,  3   )     ref  ->  r13         multi-def "CSE #17: moderate"
+;  V103 cse1        [V103,T52] (  5,  0.62)    long  ->  rax         multi-def "CSE #06: conservative"
+;  V104 cse2        [V104,T33] (  4,  2   )     ref  ->  rdi         "CSE #01: conservative"
+;  V105 cse3        [V105,T46] (  3,  1.50)     int  ->  rcx         "CSE #07: conservative"
+;  V106 cse4        [V106,T45] (  3,  1.50)     ref  ->  r15         "CSE #12: conservative"
+;  V107 rat0        [V107,T13] (  5,  3.75)     ref  ->  r15         "replacement local"
+;  V108 rat1        [V108,T47] (  3,  1.25)    long  ->  rdi         "CSE for expectedClsNode"
+;  V109 rat2        [V109,T14] (  5,  3.75)     ref  ->  rcx         "replacement local"
+;  V110 rat3        [V110,T48] (  3,  1.25)    long  ->  rdi         "CSE for expectedClsNode"
+;  V111 rat4        [V111,T28] (  3,  3   )     ref  ->  rax         "delegate invoke call"
+;  V112 rat5        [V112,T29] (  3,  3   )     ref  ->  rax         "delegate invoke call"
 ;
 ; Lcl frame size = 24
 
 G_M46174_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      qword ptr [rbp-0x40], rsp
        mov      rbx, rdi
        mov      r15, rdx
        mov      r14, rcx
 						;; size=32 bbWeight=1 PerfScore 8.50
 G_M46174_IG02:
        mov      byte  ptr [r14], 0
        cmp      byte  ptr [rbx+0x61], 0
-       jne      G_M46174_IG30
+       jne      G_M46174_IG38
 						;; size=14 bbWeight=1 PerfScore 5.00
 G_M46174_IG03:
        mov      byte  ptr [rbx+0x61], 1
        mov      rdi, gword ptr [rsi+0x08]
        mov      rax, rdi
        test     rax, rax
        je       SHORT G_M46174_IG06
 						;; size=16 bbWeight=0.50 PerfScore 2.25
 G_M46174_IG04:
        cmp      dword ptr [rax+0x08], 6
        jne      SHORT G_M46174_IG06
 						;; size=6 bbWeight=0.25 PerfScore 1.00
 G_M46174_IG05:
        mov      rcx, 0xD1FFAB1E
        xor      rcx, qword ptr [rax+0x0C]
        mov      eax, dword ptr [rax+0x14]
        xor      eax, 0xD1FFAB1E
        or       rcx, rax
        je       SHORT G_M46174_IG09
 						;; size=27 bbWeight=0.12 PerfScore 0.84
 G_M46174_IG06:
        mov      rax, rdi
        test     rax, rax
        je       G_M46174_IG19
 						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M46174_IG07:
        cmp      dword ptr [rax+0x08], 6
        jne      G_M46174_IG19
 						;; size=10 bbWeight=0.25 PerfScore 1.00
 G_M46174_IG08:
        mov      rcx, 0xD1FFAB1E
        xor      rcx, qword ptr [rax+0x0C]
        mov      eax, dword ptr [rax+0x14]
        xor      eax, 0xD1FFAB1E
        or       rcx, rax
        jne      G_M46174_IG19
 						;; size=31 bbWeight=0.12 PerfScore 0.84
 G_M46174_IG09:
        mov      ecx, dword ptr [r15+0x20]
        cmp      ecx, 200
-       jl       G_M46174_IG28
+       jl       G_M46174_IG36
        cmp      ecx, 299
-       jg       G_M46174_IG28
+       jg       G_M46174_IG36
        test     rdi, rdi
        je       SHORT G_M46174_IG12
 						;; size=33 bbWeight=0.50 PerfScore 2.88
 G_M46174_IG10:
        cmp      dword ptr [rdi+0x08], 6
        jne      SHORT G_M46174_IG12
 						;; size=6 bbWeight=0.25 PerfScore 1.00
 G_M46174_IG11:
        mov      rcx, 0xD1FFAB1E
        xor      rcx, qword ptr [rdi+0x0C]
        or       rax, rcx
        je       SHORT G_M46174_IG13
 						;; size=19 bbWeight=0.12 PerfScore 0.56
 G_M46174_IG12:
        mov      rdi, gword ptr [r15+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.FtpControlStream:GetPortV6(System.String):int
        call     [rax]System.Net.FtpControlStream:GetPortV6(System.String):int
        mov      r13d, eax
        jmp      SHORT G_M46174_IG14
 						;; size=21 bbWeight=0.50 PerfScore 3.75
 G_M46174_IG13:
        mov      rdi, gword ptr [r15+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.FtpControlStream:GetPortV4(System.String):int
        call     [rax]System.Net.FtpControlStream:GetPortV4(System.String):int
        mov      r13d, eax
 						;; size=19 bbWeight=0.50 PerfScore 2.75
 G_M46174_IG14:
        mov      rdi, gword ptr [rbx+0x10]
        mov      rdi, gword ptr [rdi+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.FtpControlStream:CreateFtpDataSocket(System.Net.Sockets.Socket):System.Net.Sockets.Socket
        call     [rax]System.Net.FtpControlStream:CreateFtpDataSocket(System.Net.Sockets.Socket):System.Net.Sockets.Socket
        lea      rdi, bword ptr [rbx+0x68]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        nop      
 						;; size=33 bbWeight=0.50 PerfScore 4.62
 G_M46174_IG15:
        mov      rdi, gword ptr [rbx+0x10]
        mov      rdi, gword ptr [rdi+0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:get_LocalEndPoint():System.Net.EndPoint:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:get_LocalEndPoint():System.Net.EndPoint:this
        mov      r15, rax
        test     r15, r15
        je       SHORT G_M46174_IG18
 						;; size=30 bbWeight=0.50 PerfScore 5.88
 G_M46174_IG16:
        mov      rdi, 0xD1FFAB1E      ; System.Net.IPEndPoint
        cmp      qword ptr [r15], rdi
        je       SHORT G_M46174_IG18
 						;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M46174_IG17:
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      r15, rax
 						;; size=18 bbWeight=0.12 PerfScore 0.47
 G_M46174_IG18:
        mov      rdi, 0xD1FFAB1E      ; System.Net.IPEndPoint
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rsi, gword ptr [r15+0x08]
        test     rsi, rsi
-       je       G_M46174_IG43
+       je       G_M46174_IG53
        xor      edi, edi
        mov      dword ptr [r12+0x10], edi
        lea      rdi, bword ptr [r12+0x08]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [rbx+0x68]
        mov      rsi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
        mov      rdi, 0xD1FFAB1E      ; System.Net.IPEndPoint
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
        call     [rax]System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
        mov      rsi, rax
        mov      rdi, r15
        mov      edx, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
        call     [rax]System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
        lea      rdi, bword ptr [rbx+0x78]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=135 bbWeight=0.50 PerfScore 13.38
 G_M46174_IG19:
        mov      r15, gword ptr [rbx+0x78]
        test     r15, r15
-       jne      G_M46174_IG22
+       jne      G_M46174_IG26
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M46174_IG40
+       je       G_M46174_IG48
 						;; size=32 bbWeight=0.50 PerfScore 3.75
 G_M46174_IG20:
        mov      rdi, 0xD1FFAB1E      ; data for System.Net.NetEventSource:Log
        mov      r13, gword ptr [rdi]
        cmp      byte  ptr [r13+0x9D], 0
        je       SHORT G_M46174_IG21
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
        call     [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; 'starting Accept()'
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:Format(System.Object):System.String
        call     [rax]System.Net.NetEventSource:Format(System.Object):System.String
        mov      r8, rax
        cmp      byte  ptr [r13], r13b
        mov      rdi, r13
        mov      rdx, r15
        mov      esi, 1
        mov      rcx, 0xD1FFAB1E      ; 'QueueOrCreateDataConection'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
        call     [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
 						;; size=103 bbWeight=0.50 PerfScore 10.50
 G_M46174_IG21:
        cmp      byte  ptr [rbx+0x5D], 0
-       je       G_M46174_IG38
+       je       G_M46174_IG46
        mov      rdi, gword ptr [rbx+0x68]
        cmp      byte  ptr [rdi], dil
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:AcceptAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]:this
        call     [rax]System.Net.Sockets.Socket:AcceptAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]:this
        mov      r14, rax
        test     r14, r14
-       je       G_M46174_IG42
+       je       G_M46174_IG52
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
        call     CORINFO_HELP_NEWSFAST
-       mov      rdi, rax
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rcx]
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
-       mov      rdx, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
-       call     [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
-       jmp      G_M46174_IG25
-						;; size=95 bbWeight=0.50 PerfScore 11.62
+       call     CORINFO_HELP_ASSIGN_REF
+       lea      rdi, bword ptr [r15+0x18]
+       mov      rsi, rbx
+       call     CORINFO_HELP_ASSIGN_REF
+       test     dword ptr [r14+0x34], 0xD1FFAB1E
+       jne      G_M46174_IG25
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [r15+0x10]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rbx, gword ptr [r15+0x08]
+       cmp      byte  ptr [rbx], bl
+       mov      rdi, 0xD1FFAB1E      ; System.Action
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x08]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
+       mov      qword ptr [r14+0x18], rdi
+       mov      r15, r14
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M46174_IG49
+						;; size=191 bbWeight=0.50 PerfScore 20.25
 G_M46174_IG22:
+       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.TplEventSource:Log
+       mov      rdi, gword ptr [rdi]
+       cmp      byte  ptr [rdi+0x9D], 0
+       jne      SHORT G_M46174_IG23
+       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
+       cmp      byte  ptr [rdi], 0
+       je       SHORT G_M46174_IG24
+						;; size=37 bbWeight=0.50 PerfScore 5.25
+G_M46174_IG23:
+       mov      rdi, rbx
+       mov      rsi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+       call     [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+       mov      r15, rax
+						;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M46174_IG24:
+       mov      rdi, rbx
+       mov      rsi, r15
+       xor      edx, edx
+       mov      ecx, 1
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+       call     [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+       jmp      G_M46174_IG33
+						;; size=30 bbWeight=0.50 PerfScore 3.12
+G_M46174_IG25:
+       mov      byte  ptr [r15+0x20], 1
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rax, gword ptr [rsi]
+       mov      rsi, r15
+       mov      rdi, gword ptr [rax+0x08]
+       call     [rax+0x18]System.AsyncCallback:Invoke(System.IAsyncResult):this
+       jmp      G_M46174_IG33
+						;; size=33 bbWeight=0.50 PerfScore 5.25
+G_M46174_IG26:
        xor      rdi, rdi
        mov      gword ptr [rbx+0x78], rdi
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M46174_IG41
+       je       G_M46174_IG50
 						;; size=25 bbWeight=0.50 PerfScore 2.75
-G_M46174_IG23:
+G_M46174_IG27:
        mov      rdi, 0xD1FFAB1E      ; data for System.Net.NetEventSource:Log
        mov      r13, gword ptr [rdi]
        cmp      byte  ptr [r13+0x9D], 0
-       je       SHORT G_M46174_IG24
+       je       SHORT G_M46174_IG28
        mov      r14, r13
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
        call     [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
        mov      r13, rax
        mov      rdi, 0xD1FFAB1E      ; 'starting Connect()'
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetEventSource:Format(System.Object):System.String
        call     [rax]System.Net.NetEventSource:Format(System.Object):System.String
        mov      r8, rax
        cmp      byte  ptr [r14], r14b
        mov      rdi, r14
        mov      rdx, r13
        mov      esi, 1
        mov      rcx, 0xD1FFAB1E      ; 'QueueOrCreateDataConection'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
        call     [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
 						;; size=105 bbWeight=0.50 PerfScore 10.62
-G_M46174_IG24:
+G_M46174_IG28:
        cmp      byte  ptr [rbx+0x5D], 0
-       je       G_M46174_IG39
+       je       G_M46174_IG47
        mov      rdi, gword ptr [rbx+0x68]
        cmp      byte  ptr [rdi], dil
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:ConnectAsync(System.Net.EndPoint):System.Threading.Tasks.Task:this
        call     [rax]System.Net.Sockets.Socket:ConnectAsync(System.Net.EndPoint):System.Threading.Tasks.Task:this
        mov      r14, rax
        test     r14, r14
-       je       G_M46174_IG42
+       je       G_M46174_IG52
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
        call     CORINFO_HELP_NEWSFAST
-       mov      rdi, rax
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rcx]
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
-       mov      rdx, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
-       call     [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
-						;; size=93 bbWeight=0.50 PerfScore 10.75
-G_M46174_IG25:
+       call     CORINFO_HELP_ASSIGN_REF
+       lea      rdi, bword ptr [r15+0x18]
+       mov      rsi, rbx
+       call     CORINFO_HELP_ASSIGN_REF
+       test     dword ptr [r14+0x34], 0xD1FFAB1E
+       jne      G_M46174_IG32
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rdi]
+       lea      rdi, bword ptr [r15+0x10]
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rbx, gword ptr [r15+0x08]
+       cmp      byte  ptr [rbx], bl
+       mov      rdi, 0xD1FFAB1E      ; System.Action
+       call     CORINFO_HELP_NEWSFAST
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x08]
+       mov      rsi, r15
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, 0xD1FFAB1E      ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
+       mov      qword ptr [r14+0x18], rdi
+       mov      r15, r14
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M46174_IG51
+						;; size=194 bbWeight=0.50 PerfScore 20.38
+G_M46174_IG29:
+       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.TplEventSource:Log
+       mov      rdi, gword ptr [rdi]
+       cmp      byte  ptr [rdi+0x9D], 0
+       jne      SHORT G_M46174_IG30
+       mov      rdi, 0xD1FFAB1E      ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
+       cmp      byte  ptr [rdi], 0
+       je       SHORT G_M46174_IG31
+						;; size=37 bbWeight=0.50 PerfScore 5.25
+G_M46174_IG30:
+       mov      rdi, rbx
+       mov      rsi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+       call     [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+       mov      r15, rax
+						;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M46174_IG31:
+       mov      rdi, rbx
+       mov      rsi, r15
+       xor      edx, edx
+       mov      ecx, 1
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+       call     [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+       jmp      SHORT G_M46174_IG33
+						;; size=27 bbWeight=0.50 PerfScore 3.12
+G_M46174_IG32:
+       mov      byte  ptr [r15+0x20], 1
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rax, gword ptr [rsi]
+       mov      rsi, r15
+       mov      rdi, gword ptr [rax+0x08]
+       call     [rax+0x18]System.AsyncCallback:Invoke(System.IAsyncResult):this
+						;; size=28 bbWeight=0.50 PerfScore 4.25
+G_M46174_IG33:
        mov      r14d, 2
 						;; size=6 bbWeight=0.50 PerfScore 0.12
-G_M46174_IG26:
+G_M46174_IG34:
        mov      eax, r14d
 						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M46174_IG27:
+G_M46174_IG35:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG28:
+G_M46174_IG36:
        mov      rdi, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; 'net_ftp_server_failed_passive'
        mov      rax, 0xD1FFAB1E      ; code for System.SR:GetResourceString(System.String):System.String
        call     [rax]System.SR:GetResourceString(System.String):System.String
        mov      rdi, rax
        mov      esi, dword ptr [r15+0x20]
        mov      dword ptr [r14+0x08], esi
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.SR:Format(System.String,System.Object):System.String
        call     [rax]System.SR:Format(System.String,System.Object):System.String
        lea      rdi, bword ptr [rbx+0x38]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        xor      eax, eax
 						;; size=80 bbWeight=0.50 PerfScore 6.88
-G_M46174_IG29:
+G_M46174_IG37:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG30:
+G_M46174_IG38:
        mov      byte  ptr [r14], 1
        mov      eax, 2
 						;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M46174_IG31:
+G_M46174_IG39:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG32:
+G_M46174_IG40:
        mov      rdi, gword ptr [rbx+0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this
        lea      rdi, bword ptr [rbx+0x68]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
        call     [rax]System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
        mov      r15, rax
        mov      rdi, gword ptr [rbx+0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:get_RemoteEndPoint():System.Net.EndPoint:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:get_RemoteEndPoint():System.Net.EndPoint:this
        mov      rcx, rax
        test     rcx, rcx
-       je       SHORT G_M46174_IG35
+       je       SHORT G_M46174_IG43
 						;; size=74 bbWeight=0.50 PerfScore 11.75
-G_M46174_IG33:
+G_M46174_IG41:
        mov      rdi, 0xD1FFAB1E      ; System.Net.IPEndPoint
        cmp      qword ptr [rcx], rdi
-       je       SHORT G_M46174_IG35
+       je       SHORT G_M46174_IG43
 						;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M46174_IG34:
+G_M46174_IG42:
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
        mov      rcx, rax
 						;; size=18 bbWeight=0.12 PerfScore 0.47
-G_M46174_IG35:
+G_M46174_IG43:
        mov      rsi, gword ptr [rcx+0x08]
        mov      rdi, r15
        mov      rax, qword ptr [r15]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x10]System.Object:Equals(System.Object):ubyte:this
        test     eax, eax
-       je       SHORT G_M46174_IG36
+       je       SHORT G_M46174_IG44
        mov      byte  ptr [r14], 1
        mov      r14d, 2
-       jmp      SHORT G_M46174_IG37
+       jmp      SHORT G_M46174_IG45
 						;; size=33 bbWeight=0.50 PerfScore 6.88
-G_M46174_IG36:
+G_M46174_IG44:
        mov      rdi, gword ptr [rbx+0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Close():this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Close():this
        mov      rdi, 0xD1FFAB1E      ; System.Net.WebException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_net_ftp_active_address_different():System.String
        call     [rax]System.SR:get_net_ftp_active_address_different():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      edx, 7
        mov      rax, 0xD1FFAB1E      ; code for System.Net.WebException:.ctor(System.String,int):this
        call     [rax]System.Net.WebException:.ctor(System.String,int):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=80 bbWeight=0 PerfScore 0.00
-G_M46174_IG37:
+G_M46174_IG45:
        mov      rdi, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Close():this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Close():this
-       jmp      G_M46174_IG26
+       jmp      G_M46174_IG34
 						;; size=23 bbWeight=0.50 PerfScore 4.62
-G_M46174_IG38:
+G_M46174_IG46:
        mov      rdi, gword ptr [rbx+0x68]
        mov      gword ptr [rbp-0x30], rdi
-       jmp      G_M46174_IG32
+       jmp      G_M46174_IG40
 						;; size=13 bbWeight=0.50 PerfScore 2.50
-G_M46174_IG39:
+G_M46174_IG47:
        mov      rdi, gword ptr [rbx+0x68]
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Connect(System.Net.EndPoint):this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Connect(System.Net.EndPoint):this
        mov      r14d, 1
-       jmp      G_M46174_IG26
+       jmp      G_M46174_IG34
 						;; size=32 bbWeight=0.50 PerfScore 5.38
-G_M46174_IG40:
+G_M46174_IG48:
        mov      rdi, 0xD1FFAB1E      ; System.Net.NetEventSource
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M46174_IG20
 						;; size=27 bbWeight=0 PerfScore 0.00
-G_M46174_IG41:
+G_M46174_IG49:
+       mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TplEventSource
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M46174_IG22
+						;; size=27 bbWeight=0 PerfScore 0.00
+G_M46174_IG50:
        mov      rdi, 0xD1FFAB1E      ; System.Net.NetEventSource
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M46174_IG23
+       jmp      G_M46174_IG27
 						;; size=27 bbWeight=0 PerfScore 0.00
-G_M46174_IG42:
+G_M46174_IG51:
+       mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.TplEventSource
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M46174_IG29
+						;; size=27 bbWeight=0 PerfScore 0.00
+G_M46174_IG52:
        mov      edi, 0x134C6
        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_M46174_IG43:
+G_M46174_IG53:
        mov      edi, 0xC23
        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_M46174_IG44:
+G_M46174_IG54:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x40]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M46174_IG45:
+G_M46174_IG55:
        mov      rax, 0xD1FFAB1E      ; code for System.Net.ExceptionHelper:get_RequestAbortedException():System.Net.WebException
        call     [rax]System.Net.ExceptionHelper:get_RequestAbortedException():System.Net.WebException
        mov      rdi, rax
        call     CORINFO_HELP_THROW
        int3     
 						;; size=21 bbWeight=0 PerfScore 0.00
-G_M46174_IG46:
+G_M46174_IG56:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x40]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M46174_IG47:
+G_M46174_IG57:
        mov      rdi, gword ptr [rbp-0x30]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Sockets.Socket:Close():this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Sockets.Socket:Close():this
        nop      
 						;; size=19 bbWeight=0 PerfScore 0.00
-G_M46174_IG48:
+G_M46174_IG58:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1586, prolog size 32, PerfScore 153.31, instruction count 372, allocated bytes for code 1586 (MethodHash=8e804ba1) for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this (FullOpts)
+; Total bytes of code 2071, prolog size 32, PerfScore 201.81, instruction count 470, allocated bytes for code 2071 (MethodHash=8e804ba1) for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this (FullOpts)
 ; ============================================================

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

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 12, 2024

Top method improvements

-18 (-1.91 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:b__0():this
 ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():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; 21 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] ( 13, 28   )     ref  ->  rbx         this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]>
-;  V01 loc0         [V01,T19] (  8, 11   )     int  ->  r15        
-;* V02 loc1         [V02,T40] (  0,  0   )     int  ->  zero-ref   
+;  V01 loc0         [V01,T18] (  8, 11   )     int  ->  r15        
+;* V02 loc1         [V02,T39] (  0,  0   )     int  ->  zero-ref   
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T13] (  2, 16   )     ref  ->  r12         class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
 ;  V05 tmp2         [V05,T01] (  6, 48   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp4         [V07,T32] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-;  V08 tmp5         [V08,T18] (  6, 12   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
+;  V07 tmp4         [V07,T31] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+;  V08 tmp5         [V08,T17] (  6, 12   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
 ;* V09 tmp6         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V10 tmp7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
 ;  V11 tmp8         [V11,T14] (  2, 16   )     ref  ->  [rbp-0x40]  class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
 ;  V12 tmp9         [V12,T15] (  2, 16   )     ref  ->  [rbp-0x48]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
 ;  V13 tmp10        [V13,T16] (  2, 16   )     ref  ->  [rbp-0x50]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-;* V14 tmp11        [V14,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
+;* V14 tmp11        [V14,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
 ;  V15 tmp12        [V15,T05] (  3, 24   )     ref  ->  [rbp-0x58]  class-hnd spill-single-def "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
 ;* V16 tmp13        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Threading.CancellationToken>
 ;* V17 tmp14        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V18 tmp15        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-;  V19 tmp16        [V19,T20] (  3, 10   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-;* V20 tmp17        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-;  V21 tmp18        [V21,T00] (  9, 48   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
-;  V22 tmp19        [V22,T17] (  2, 16   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "Inlining Arg" <System.Action`1[System.Object]>
-;* V23 tmp20        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V24 tmp21        [V24,T23] (  2,  8   )     ref  ->  rsi         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-;  V25 tmp22        [V25,T21] (  4,  8   )     ref  ->  rsi        
-;  V26 tmp23        [V26,T10] (  4, 16   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V27 tmp24        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V28 tmp25        [V28,T04] (  4, 24   )     ref  ->  r12         class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
-;* V29 tmp26        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V30 tmp27        [V30,T24] (  2,  8   )     ref  ->  rcx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp28        [V31,T22] (  4,  8   )     ref  ->  rcx        
-;  V32 tmp29        [V32,T11] (  4, 16   )     ref  ->  [rbp-0x80]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V33 tmp30        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V34 tmp31        [V34,T33] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
-;  V35 tmp32        [V35,T34] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.__Canon>
-;  V36 tmp33        [V36,T35] (  2,  4   )     ref  ->  [rbp-0x88]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-;* V37 tmp34        [V37,T36] (  0,  0   )     ref  ->  zero-ref    "field V16._source (fldOffset=0x0)" P-INDEP
-;* V38 tmp35        [V38    ] (  0,  0   )     ref  ->  zero-ref    "field V17._source (fldOffset=0x0)" P-INDEP
-;  V39 tmp36        [V39,T06] (  3, 24   )     ref  ->  rdi         "arr expr"
-;  V40 tmp37        [V40,T07] (  3, 24   )     ref  ->  rdi         "arr expr"
-;  V41 tmp38        [V41,T26] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
-;  V42 tmp39        [V42,T27] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
-;  V43 cse0         [V43,T30] (  2,  4.25)   byref  ->  r13         hoist "CSE #02: moderate"
-;  V44 rat0         [V44,T02] (  9, 33   )    long  ->  r14         "Widened IV V02"
-;  V45 rat1         [V45,T09] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V46 rat2         [V46,T12] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V47 rat3         [V47,T08] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V48 rat4         [V48,T29] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V49 rat5         [V49,T31] (  3,  4   )    long  ->  rsi         "runtime lookup"
-;  V50 rat6         [V50,T28] (  3,  5.60)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V51 rat7         [V51,T39] (  3,  1   )   byref  ->  r13         "TLS field access"
-;  V52 rat8         [V52,T38] (  3,  1.50)    long  ->  rax         "TLS access"
-;  V53 rat9         [V53,T37] (  3,  1.50)   byref  ->  r13         "ThreadStaticBlockBase access"
+;  V18 tmp15        [V18,T19] (  3, 10   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;  V19 tmp16        [V19,T00] (  9, 48   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+;* V20 tmp17        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V21 tmp18        [V21,T22] (  2,  8   )     ref  ->  rdx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+;  V22 tmp19        [V22,T20] (  4,  8   )     ref  ->  rdx        
+;  V23 tmp20        [V23,T10] (  4, 16   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V24 tmp21        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V25 tmp22        [V25,T04] (  4, 24   )     ref  ->  r12         class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+;* V26 tmp23        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V27 tmp24        [V27,T23] (  2,  8   )     ref  ->  rcx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+;  V28 tmp25        [V28,T21] (  4,  8   )     ref  ->  rcx        
+;  V29 tmp26        [V29,T11] (  4, 16   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V30 tmp27        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V31 tmp28        [V31,T32] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
+;  V32 tmp29        [V32,T33] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V33 tmp30        [V33,T34] (  2,  4   )     ref  ->  [rbp-0x80]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+;* V34 tmp31        [V34,T35] (  0,  0   )     ref  ->  zero-ref    "field V16._source (fldOffset=0x0)" P-INDEP
+;* V35 tmp32        [V35    ] (  0,  0   )     ref  ->  zero-ref    "field V17._source (fldOffset=0x0)" P-INDEP
+;  V36 tmp33        [V36,T06] (  3, 24   )     ref  ->  rdi         "arr expr"
+;  V37 tmp34        [V37,T07] (  3, 24   )     ref  ->  rdi         "arr expr"
+;  V38 tmp35        [V38,T25] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
+;  V39 tmp36        [V39,T26] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
+;  V40 cse0         [V40,T29] (  2,  4.25)   byref  ->  r13         hoist "CSE #02: moderate"
+;  V41 rat0         [V41,T02] (  9, 33   )    long  ->  r14         "Widened IV V02"
+;  V42 rat1         [V42,T09] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V43 rat2         [V43,T12] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V44 rat3         [V44,T08] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V45 rat4         [V45,T28] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V46 rat5         [V46,T30] (  3,  4   )    long  ->  rsi         "runtime lookup"
+;  V47 rat6         [V47,T27] (  3,  5.60)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V48 rat7         [V48,T38] (  3,  1   )   byref  ->  r13         "TLS field access"
+;  V49 rat8         [V49,T37] (  3,  1.50)    long  ->  rax         "TLS access"
+;  V50 rat9         [V50,T36] (  3,  1.50)   byref  ->  r13         "ThreadStaticBlockBase access"
 ;
 ; Lcl frame size = 104
 
 G_M19968_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 104
        lea      rbp, [rsp+0x90]
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rdi
 						;; size=29 bbWeight=1 PerfScore 8.00
 G_M19968_IG02:
        mov      rdi, gword ptr [rbx+0x08]
        mov      rdi, gword ptr [rdi+0x08]
        mov      r15d, dword ptr [rdi+0x08]
        dec      r15d
        xor      r14d, r14d
        test     r15d, r15d
        jle      G_M19968_IG15
 						;; size=27 bbWeight=1 PerfScore 7.75
 G_M19968_IG03:
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 9
        jle      G_M19968_IG20
        mov      rdi, gword ptr [rax+0x08]
        mov      r13, bword ptr [rdi+0x48]
        test     r13, r13
        je       G_M19968_IG20
 						;; size=48 bbWeight=0.25 PerfScore 3.19
 G_M19968_IG04:
        mov      r12, gword ptr [rbx+0x10]
        mov      rax, gword ptr [rbx+0x08]
        mov      gword ptr [rbp-0x40], rax
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi]
        mov      rsi, qword ptr [rsi+0x18]
        test     rsi, rsi
        je       G_M19968_IG19
 						;; size=35 bbWeight=4 PerfScore 57.00
 G_M19968_IG05:
        mov      rdi, rsi
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x38], rax
        mov      rdi, gword ptr [rbp-0x40]
        mov      rdi, gword ptr [rdi+0x08]
        cmp      r14d, dword ptr [rdi+0x08]
        jae      G_M19968_IG23
        mov      rcx, gword ptr [rdi+8*r14+0x10]
        mov      gword ptr [rbp-0x48], rcx
        mov      rdi, gword ptr [rbx+0x18]
        cmp      r14d, dword ptr [rdi+0x08]
        jae      G_M19968_IG23
        mov      rdx, gword ptr [rdi+8*r14+0x10]
        mov      gword ptr [rbp-0x50], rdx
        mov      dword ptr [rax+0x10], r14d
        lea      rdi, bword ptr [rax+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      r12, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, gword ptr [rbp-0x48]
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x20]
        mov      rsi, gword ptr [rbp-0x50]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbx+0x20]
        mov      gword ptr [rbp-0x58], rax
        mov      rcx, gword ptr [r13+0x10]
        mov      gword ptr [rbp-0x60], rcx
        test     rax, rax
        je       G_M19968_IG22
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x68], rax
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rdi]
-       mov      gword ptr [rbp-0x70], rcx
        cmp      gword ptr [rbp-0x60], 0
-       mov      rcx, gword ptr [rbp-0x70]
        je       SHORT G_M19968_IG08
-						;; size=182 bbWeight=4 PerfScore 187.00
+						;; size=161 bbWeight=4 PerfScore 170.00
 G_M19968_IG06:
-       mov      rdx, gword ptr [rbp-0x60]
-       mov      rsi, gword ptr [rax+0x28]
-       test     rsi, rsi
+       mov      rcx, gword ptr [rbp-0x60]
+       mov      rdx, gword ptr [rax+0x28]
+       test     rdx, rdx
        jne      SHORT G_M19968_IG07
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+ContingentProperties
        call     CORINFO_HELP_NEWSFAST
-       mov      rsi, rax
-       mov      gword ptr [rbp-0x78], rsi
-       mov      dword ptr [rsi+0x3C], 1
+       mov      rdx, rax
+       mov      gword ptr [rbp-0x70], rdx
+       mov      dword ptr [rdx+0x3C], 1
        mov      rax, gword ptr [rbp-0x68]
        lea      rdi, bword ptr [rax+0x28]
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      rsi, gword ptr [rbp-0x78]
-       mov      rdx, gword ptr [rbp-0x60]
-						;; size=63 bbWeight=2 PerfScore 24.50
-G_M19968_IG07:
-       lea      rdi, bword ptr [rsi+0x30]
        mov      rsi, rdx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, gword ptr [rbp-0x68]
-       mov      rcx, gword ptr [rbp-0x70]
-						;; size=20 bbWeight=2 PerfScore 7.50
-G_M19968_IG08:
-       mov      rdi, gword ptr [rbp-0x58]
-       mov      gword ptr [rsp], rdi
-       mov      rdi, rax
+       mov      rdx, gword ptr [rbp-0x70]
+       mov      rcx, gword ptr [rbp-0x60]
+						;; size=66 bbWeight=2 PerfScore 25.00
+G_M19968_IG07:
+       lea      rdi, bword ptr [rdx+0x30]
        mov      rsi, rcx
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rax, gword ptr [rbp-0x68]
+						;; size=16 bbWeight=2 PerfScore 5.50
+G_M19968_IG08:
+       mov      rsi, gword ptr [rbp-0x58]
+       mov      gword ptr [rsp], rsi
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rsi]
+       mov      rdi, rax
        mov      rdx, r12
        xor      rcx, rcx
        mov      r8d, 5
        mov      r9d, 0x2000
        mov      r10, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
        call     [r10]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        mov      r12, rax
        test     r12, r12
        je       SHORT G_M19968_IG13
-						;; size=64 bbWeight=4 PerfScore 46.00
+						;; size=74 bbWeight=4 PerfScore 54.00
 G_M19968_IG09:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M19968_IG21
 						;; size=19 bbWeight=2 PerfScore 8.50
 G_M19968_IG10:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.ExecutionContext:Default
        cmp      r12, gword ptr [rdi]
        je       SHORT G_M19968_IG12
        mov      rax, gword ptr [rbp-0x68]
        mov      rcx, gword ptr [rax+0x28]
        test     rcx, rcx
        jne      SHORT G_M19968_IG11
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+ContingentProperties
        call     CORINFO_HELP_NEWSFAST
        mov      rcx, rax
-       mov      gword ptr [rbp-0x80], rcx
+       mov      gword ptr [rbp-0x78], rcx
        mov      dword ptr [rcx+0x3C], 1
        mov      rax, gword ptr [rbp-0x68]
        lea      rdi, bword ptr [rax+0x28]
        mov      rsi, rcx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rcx, gword ptr [rbp-0x80]
+       mov      rcx, gword ptr [rbp-0x78]
 						;; size=77 bbWeight=2 PerfScore 31.50
 G_M19968_IG11:
        lea      rdi, bword ptr [rcx+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      r12, gword ptr [rbp-0x68]
        jmp      SHORT G_M19968_IG14
 						;; size=18 bbWeight=2 PerfScore 9.50
 G_M19968_IG12:
        mov      r12, gword ptr [rbp-0x68]
        jmp      SHORT G_M19968_IG14
 						;; size=6 bbWeight=1 PerfScore 3.00
 G_M19968_IG13:
        mov      r12, gword ptr [rbp-0x68]
        or       dword ptr [r12+0x34], 0xD1FFAB1E
 						;; size=13 bbWeight=2 PerfScore 8.00
 G_M19968_IG14:
        mov      rdi, r12
        xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
        call     [rax]System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
        inc      r14d
        cmp      r14d, r15d
        jl       G_M19968_IG04
 						;; size=29 bbWeight=4 PerfScore 21.00
 G_M19968_IG15:
        mov      r14, gword ptr [rbx+0x10]
        mov      r13, gword ptr [rbx+0x08]
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x30]
        mov      rsi, qword ptr [rsi]
        mov      rsi, qword ptr [rsi+0x18]
        test     rsi, rsi
        je       G_M19968_IG18
 						;; size=31 bbWeight=1 PerfScore 13.25
 G_M19968_IG16:
        mov      rdi, rsi
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, gword ptr [r13+0x08]
        cmp      r15d, dword ptr [rdi+0x08]
        jae      G_M19968_IG23
        mov      esi, r15d
        mov      r13, gword ptr [rdi+8*rsi+0x10]
        mov      rdi, gword ptr [rbx+0x18]
        cmp      r15d, dword ptr [rdi+0x08]
        jae      G_M19968_IG23
        mov      esi, r15d
        mov      rax, gword ptr [rdi+8*rsi+0x10]
-       mov      gword ptr [rbp-0x88], rax
+       mov      gword ptr [rbp-0x80], rax
        mov      dword ptr [r12+0x10], r15d
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x20]
-       mov      rsi, gword ptr [rbp-0x88]
+       mov      rsi, gword ptr [rbp-0x80]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [rbx+0x20]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
        call     [rax]System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
        nop      
-						;; size=130 bbWeight=1 PerfScore 31.75
+						;; size=124 bbWeight=1 PerfScore 31.75
 G_M19968_IG17:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M19968_IG18:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rsi, rax
        jmp      G_M19968_IG16
 						;; size=30 bbWeight=0.20 PerfScore 1.15
 G_M19968_IG19:
        mov      rsi, 0xD1FFAB1E      ; global ptr
        mov      rcx, 0xD1FFAB1E      ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
        call     [rcx]CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      rsi, rax
        jmp      G_M19968_IG05
 						;; size=30 bbWeight=0.80 PerfScore 4.60
 G_M19968_IG20:
        mov      edi, 9
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        call     [rax]CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        mov      r13, rax
        jmp      G_M19968_IG04
 						;; size=25 bbWeight=0 PerfScore 0.00
 G_M19968_IG21:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.ExecutionContext
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M19968_IG10
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M19968_IG22:
        mov      edi, 47
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M19968_IG23:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 942, prolog size 26, PerfScore 477.44, instruction count 215, allocated bytes for code 942 (MethodHash=98a6b1ff) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
+; Total bytes of code 924, prolog size 26, PerfScore 466.94, instruction count 212, allocated bytes for code 924 (MethodHash=98a6b1ff) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
 ; ============================================================
-15 (-1.97 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:b__0():this
 ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():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; 21 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T06] (  9, 18   )     ref  ->  rbx         this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]>
-;  V01 loc0         [V01,T15] (  6,  9   )     int  ->  r15        
-;* V02 loc1         [V02,T30] (  0,  0   )     int  ->  zero-ref   
+;  V01 loc0         [V01,T14] (  6,  9   )     int  ->  r15        
+;* V02 loc1         [V02,T29] (  0,  0   )     int  ->  zero-ref   
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04,T09] (  2, 16   )     ref  ->  r12         class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
 ;  V05 tmp2         [V05,T01] (  5, 40   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
-;  V06 tmp3         [V06,T23] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-;  V07 tmp4         [V07,T13] (  5, 10   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
+;  V06 tmp3         [V06,T22] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+;  V07 tmp4         [V07,T12] (  5, 10   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
 ;  V09 tmp6         [V09,T10] (  2, 16   )     ref  ->  [rbp-0x38]  class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
 ;  V10 tmp7         [V10,T11] (  2, 16   )     ref  ->  [rbp-0x40]  class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
-;* V11 tmp8         [V11,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
+;* V11 tmp8         [V11,T19] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
 ;  V12 tmp9         [V12,T04] (  3, 24   )     ref  ->  [rbp-0x48]  class-hnd spill-single-def "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
 ;* V13 tmp10        [V13    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Threading.CancellationToken>
 ;* V14 tmp11        [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V15 tmp12        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-;  V16 tmp13        [V16,T14] (  3, 10   )     ref  ->  [rbp-0x50]  class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-;* V17 tmp14        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-;  V18 tmp15        [V18,T00] (  9, 48   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
-;  V19 tmp16        [V19,T12] (  2, 16   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Action`1[System.Object]>
-;* V20 tmp17        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V21 tmp18        [V21,T18] (  2,  8   )     ref  ->  rsi         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-;  V22 tmp19        [V22,T16] (  4,  8   )     ref  ->  rsi        
-;  V23 tmp20        [V23,T07] (  4, 16   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V24 tmp21        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V25 tmp22        [V25,T03] (  4, 24   )     ref  ->  r12         class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
-;* V26 tmp23        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V27 tmp24        [V27,T19] (  2,  8   )     ref  ->  rcx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-;  V28 tmp25        [V28,T17] (  4,  8   )     ref  ->  rcx        
-;  V29 tmp26        [V29,T08] (  4, 16   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V30 tmp27        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp28        [V31,T24] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
-;  V32 tmp29        [V32,T25] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
-;* V33 tmp30        [V33,T26] (  0,  0   )     ref  ->  zero-ref    "field V13._source (fldOffset=0x0)" P-INDEP
-;* V34 tmp31        [V34    ] (  0,  0   )     ref  ->  zero-ref    "field V14._source (fldOffset=0x0)" P-INDEP
-;  V35 tmp32        [V35,T05] (  3, 24   )     ref  ->  rdi         "arr expr"
-;  V36 tmp33        [V36,T21] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
-;  V37 cse0         [V37,T22] (  2,  4.25)   byref  ->  r13         hoist "CSE #01: moderate"
-;  V38 rat0         [V38,T02] (  7, 25   )    long  ->  r14         "Widened IV V02"
-;  V39 rat1         [V39,T29] (  3,  1   )   byref  ->  r13         "TLS field access"
-;  V40 rat2         [V40,T28] (  3,  1.50)    long  ->  rax         "TLS access"
-;  V41 rat3         [V41,T27] (  3,  1.50)   byref  ->  r13         "ThreadStaticBlockBase access"
+;  V15 tmp12        [V15,T13] (  3, 10   )     ref  ->  [rbp-0x50]  class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+;  V16 tmp13        [V16,T00] (  9, 48   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+;* V17 tmp14        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V18 tmp15        [V18,T17] (  2,  8   )     ref  ->  rdx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+;  V19 tmp16        [V19,T15] (  4,  8   )     ref  ->  rdx        
+;  V20 tmp17        [V20,T07] (  4, 16   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V21 tmp18        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V22 tmp19        [V22,T03] (  4, 24   )     ref  ->  r12         class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+;* V23 tmp20        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V24 tmp21        [V24,T18] (  2,  8   )     ref  ->  rcx         class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+;  V25 tmp22        [V25,T16] (  4,  8   )     ref  ->  rcx        
+;  V26 tmp23        [V26,T08] (  4, 16   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V27 tmp24        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V28 tmp25        [V28,T23] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
+;  V29 tmp26        [V29,T24] (  2,  4   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
+;* V30 tmp27        [V30,T25] (  0,  0   )     ref  ->  zero-ref    "field V13._source (fldOffset=0x0)" P-INDEP
+;* V31 tmp28        [V31    ] (  0,  0   )     ref  ->  zero-ref    "field V14._source (fldOffset=0x0)" P-INDEP
+;  V32 tmp29        [V32,T05] (  3, 24   )     ref  ->  rdi         "arr expr"
+;  V33 tmp30        [V33,T20] (  3,  6   )     ref  ->  rdi         single-def "arr expr"
+;  V34 cse0         [V34,T21] (  2,  4.25)   byref  ->  r13         hoist "CSE #01: moderate"
+;  V35 rat0         [V35,T02] (  7, 25   )    long  ->  r14         "Widened IV V02"
+;  V36 rat1         [V36,T28] (  3,  1   )   byref  ->  r13         "TLS field access"
+;  V37 rat2         [V37,T27] (  3,  1.50)    long  ->  rax         "TLS access"
+;  V38 rat3         [V38,T26] (  3,  1.50)   byref  ->  r13         "ThreadStaticBlockBase access"
 ;
-; Lcl frame size = 88
+; Lcl frame size = 72
 
 G_M29136_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 88
-       lea      rbp, [rsp+0x80]
+       sub      rsp, 72
+       lea      rbp, [rsp+0x70]
        mov      rbx, rdi
-						;; size=25 bbWeight=1 PerfScore 7.00
+						;; size=22 bbWeight=1 PerfScore 7.00
 G_M29136_IG02:
        mov      rdi, gword ptr [rbx+0x08]
        mov      rdi, gword ptr [rdi+0x08]
        mov      r15d, dword ptr [rdi+0x08]
        dec      r15d
        xor      r14d, r14d
        test     r15d, r15d
        jle      G_M29136_IG14
 						;; size=27 bbWeight=1 PerfScore 7.75
 G_M29136_IG03:
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 9
        jle      G_M29136_IG16
        mov      rdi, gword ptr [rax+0x08]
        mov      r13, bword ptr [rdi+0x48]
        test     r13, r13
        je       G_M29136_IG16
 						;; size=48 bbWeight=0.25 PerfScore 3.19
 G_M29136_IG04:
        mov      r12, gword ptr [rbx+0x10]
        mov      rax, gword ptr [rbx+0x08]
        mov      gword ptr [rbp-0x38], rax
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x30], rax
        mov      rdi, gword ptr [rbp-0x38]
        mov      rdi, gword ptr [rdi+0x08]
        cmp      r14d, dword ptr [rdi+0x08]
        jae      G_M29136_IG19
        mov      rcx, gword ptr [rdi+8*r14+0x10]
        mov      gword ptr [rbp-0x40], rcx
        mov      dword ptr [rax+0x10], r14d
        lea      rdi, bword ptr [rax+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      r12, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, gword ptr [rbp-0x40]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbx+0x18]
        mov      gword ptr [rbp-0x48], rax
        mov      rcx, gword ptr [r13+0x10]
        mov      gword ptr [rbp-0x50], rcx
        test     rax, rax
        je       G_M29136_IG18
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x58], rax
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rdi]
-       mov      gword ptr [rbp-0x60], rcx
        cmp      gword ptr [rbp-0x50], 0
-       mov      rcx, gword ptr [rbp-0x60]
        je       SHORT G_M29136_IG07
-						;; size=164 bbWeight=4 PerfScore 161.00
+						;; size=143 bbWeight=4 PerfScore 144.00
 G_M29136_IG05:
-       mov      rdx, gword ptr [rbp-0x50]
-       mov      rsi, gword ptr [rax+0x28]
-       test     rsi, rsi
+       mov      rcx, gword ptr [rbp-0x50]
+       mov      rdx, gword ptr [rax+0x28]
+       test     rdx, rdx
        jne      SHORT G_M29136_IG06
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+ContingentProperties
        call     CORINFO_HELP_NEWSFAST
-       mov      rsi, rax
-       mov      gword ptr [rbp-0x68], rsi
-       mov      dword ptr [rsi+0x3C], 1
+       mov      rdx, rax
+       mov      gword ptr [rbp-0x60], rdx
+       mov      dword ptr [rdx+0x3C], 1
        mov      rax, gword ptr [rbp-0x58]
        lea      rdi, bword ptr [rax+0x28]
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      rsi, gword ptr [rbp-0x68]
-       mov      rdx, gword ptr [rbp-0x50]
-						;; size=63 bbWeight=2 PerfScore 24.50
-G_M29136_IG06:
-       lea      rdi, bword ptr [rsi+0x30]
        mov      rsi, rdx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, gword ptr [rbp-0x58]
-       mov      rcx, gword ptr [rbp-0x60]
-						;; size=20 bbWeight=2 PerfScore 7.50
-G_M29136_IG07:
-       mov      rdi, gword ptr [rbp-0x48]
-       mov      gword ptr [rsp], rdi
-       mov      rdi, rax
+       mov      rdx, gword ptr [rbp-0x60]
+       mov      rcx, gword ptr [rbp-0x50]
+						;; size=66 bbWeight=2 PerfScore 25.00
+G_M29136_IG06:
+       lea      rdi, bword ptr [rdx+0x30]
        mov      rsi, rcx
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rax, gword ptr [rbp-0x58]
+						;; size=16 bbWeight=2 PerfScore 5.50
+G_M29136_IG07:
+       mov      rsi, gword ptr [rbp-0x48]
+       mov      gword ptr [rsp], rsi
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rsi]
+       mov      rdi, rax
        mov      rdx, r12
        xor      rcx, rcx
        mov      r8d, 5
        mov      r9d, 0x2000
        mov      r10, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
        call     [r10]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        mov      r12, rax
        test     r12, r12
        je       SHORT G_M29136_IG12
-						;; size=64 bbWeight=4 PerfScore 46.00
+						;; size=74 bbWeight=4 PerfScore 54.00
 G_M29136_IG08:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M29136_IG17
 						;; size=19 bbWeight=2 PerfScore 8.50
 G_M29136_IG09:
        mov      rdi, 0xD1FFAB1E      ; data for System.Threading.ExecutionContext:Default
        cmp      r12, gword ptr [rdi]
        je       SHORT G_M29136_IG11
        mov      rax, gword ptr [rbp-0x58]
        mov      rcx, gword ptr [rax+0x28]
        test     rcx, rcx
        jne      SHORT G_M29136_IG10
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Tasks.Task+ContingentProperties
        call     CORINFO_HELP_NEWSFAST
        mov      rcx, rax
-       mov      gword ptr [rbp-0x70], rcx
+       mov      gword ptr [rbp-0x68], rcx
        mov      dword ptr [rcx+0x3C], 1
        mov      rax, gword ptr [rbp-0x58]
        lea      rdi, bword ptr [rax+0x28]
        mov      rsi, rcx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rcx, gword ptr [rbp-0x70]
+       mov      rcx, gword ptr [rbp-0x68]
 						;; size=77 bbWeight=2 PerfScore 31.50
 G_M29136_IG10:
        lea      rdi, bword ptr [rcx+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      r12, gword ptr [rbp-0x58]
        jmp      SHORT G_M29136_IG13
 						;; size=18 bbWeight=2 PerfScore 9.50
 G_M29136_IG11:
        mov      r12, gword ptr [rbp-0x58]
        jmp      SHORT G_M29136_IG13
 						;; size=6 bbWeight=1 PerfScore 3.00
 G_M29136_IG12:
        mov      r12, gword ptr [rbp-0x58]
        or       dword ptr [r12+0x34], 0xD1FFAB1E
 						;; size=13 bbWeight=2 PerfScore 8.00
 G_M29136_IG13:
        mov      rdi, r12
        xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
        call     [rax]System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
        inc      r14d
        cmp      r14d, r15d
        jl       G_M29136_IG04
 						;; size=29 bbWeight=4 PerfScore 21.00
 G_M29136_IG14:
        mov      r14, gword ptr [rbx+0x10]
        mov      r13, gword ptr [rbx+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rdi, gword ptr [r13+0x08]
        cmp      r15d, dword ptr [rdi+0x08]
        jae      G_M29136_IG19
        mov      esi, r15d
        mov      r13, gword ptr [rdi+8*rsi+0x10]
        mov      dword ptr [r12+0x10], r15d
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r12+0x18]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, gword ptr [rbx+0x18]
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
        call     [rax]System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
        nop      
 						;; size=99 bbWeight=1 PerfScore 24.00
 G_M29136_IG15:
-       add      rsp, 88
+       add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M29136_IG16:
        mov      edi, 9
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        call     [rax]CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        mov      r13, rax
        jmp      G_M29136_IG04
 						;; size=25 bbWeight=0 PerfScore 0.00
 G_M29136_IG17:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.ExecutionContext
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M29136_IG09
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M29136_IG18:
        mov      edi, 47
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M29136_IG19:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 763, prolog size 22, PerfScore 366.69, instruction count 175, allocated bytes for code 763 (MethodHash=12228e2f) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
+; Total bytes of code 748, prolog size 19, PerfScore 356.19, instruction count 172, allocated bytes for code 748 (MethodHash=12228e2f) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():this (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/7d7ad7675042714c9dd15abaa35829f3

@MihuBot
Copy link
Owner Author

MihuBot commented Nov 12, 2024

@MichalPetryka

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