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] [EgorBo] JIT: Avoid boxing ArgumentNullException.ThrowIfNull arguments in Tier-0 #518

Open
MihuBot opened this issue Jul 13, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 13, 2024

Job completed in 15 minutes.
dotnet/runtime#104815

Diffs

Diffs
Found 269 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 52987793
Total bytes of diff: 52982341
Total bytes of delta: -5452 (-0.01 % of base)
Total relative delta: -29.19
    diff is an improvement.
    relative diff is an improvement.


Top file regressions (bytes):
         118 : System.DirectoryServices.Protocols.dasm (0.06 % of base)
          69 : System.Security.Cryptography.ProtectedData.dasm (0.81 % of base)
          45 : System.Net.Security.dasm (0.01 % of base)
          37 : System.Net.Quic.dasm (0.02 % of base)

Top file improvements (bytes):
       -4699 : System.Collections.dasm (-0.41 % of base)
        -806 : System.ObjectModel.dasm (-0.81 % of base)
        -198 : System.Private.CoreLib.dasm (-0.00 % of base)
         -14 : System.ComponentModel.Composition.dasm (-0.00 % of base)
          -4 : System.Net.Http.dasm (-0.00 % of base)

9 total files with Code Size differences (5 improved, 4 regressed), 250 unchanged.

Top method regressions (bytes):
         118 (8.77 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
          78 (8.07 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
          69 (6.39 % of base) : System.Security.Cryptography.ProtectedData.dasm - System.Security.Cryptography.ProtectedData:ProtectOrUnprotect(ubyte[],ubyte[],int,ubyte):ubyte[] (Tier0-FullOpts)
          58 (2.99 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):ubyte (Tier0-FullOpts)
          27 (1.14 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:VerifyRemoteCertificate(System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.SslCertificateTrust,byref,byref,byref):ubyte:this (Tier0-FullOpts)
          18 (2.72 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (Instrumented Tier0)
          18 (0.41 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicConnection:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicListener:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicStream:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          12 (5.13 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]):ubyte:this (Tier0)
          12 (4.46 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]):int:this (Tier0)
          12 (1.87 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:Contains(System.Nullable`1[int]):ubyte:this (Instrumented Tier0)
          10 (1.47 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:TryGetValue(System.Nullable`1[int],byref):ubyte:this (Instrumented Tier0)
           8 (5.03 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           8 (4.97 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:ContainsKey(System.Nullable`1[int]):ubyte:this (Tier0)
           8 (4.97 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (Tier0)
           8 (2.52 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           8 (4.35 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[System.Nullable`1[int],System.Nullable`1[int]]:IndexOf(System.Nullable`1[int]):int:this (Tier0)
           6 (5.04 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           6 (5.31 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:IndexOf(System.Nullable`1[int]):int:this (Tier0)
           6 (4.17 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Insert(int,System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           6 (3.05 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int],byref):ubyte:this (Tier0)
           6 (5.04 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:set_Item(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           6 (5.17 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:TryAdd(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (Tier0)
           6 (3.37 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:TryGetValue(System.Nullable`1[int],byref):ubyte:this (Tier0)
           6 (4.20 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Nullable`1[int],System.Nullable`1[int]]:IndexOfKey(System.Nullable`1[int]):int:this (Tier0)
           6 (3.53 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]](System.Nullable`1[int]):int (Tier0)
           1 (0.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:SetAt(int,System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           1 (0.20 % of base) : System.Private.CoreLib.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1-OSR)

Top method improvements (bytes):
         -59 (-45.38 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -59 (-47.20 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
         -59 (-38.06 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
         -59 (-28.23 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
         -59 (-45.38 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
         -59 (-12.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
         -59 (-46.46 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
         -59 (-31.05 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
         -59 (-34.30 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -59 (-33.91 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
         -59 (-33.91 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
         -59 (-21.15 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
         -59 (-17.25 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -59 (-38.06 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:IndexOfKey(double):int:this (Tier0)
         -59 (-30.10 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
         -59 (-9.10 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:Contains(double):ubyte:this (Instrumented Tier0)
         -59 (-8.73 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Instrumented Tier0)
         -59 (-8.75 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Instrumented Tier0)
         -59 (-55.14 % of base) : System.Private.CoreLib.dasm - System.Numerics.TotalOrderIeee754Comparer`1[double]:GetHashCode(double):int:this (Tier0)
         -59 (-30.10 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[double](double):int (Tier0)
         -57 (-44.88 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -57 (-47.11 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:IndexOf(long):int:this (Tier0)
         -57 (-37.50 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Insert(int,long,System.Nullable`1[int]):this (Tier0)
         -57 (-27.80 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Remove(long,byref):ubyte:this (Tier0)
         -57 (-44.88 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:set_Item(long,System.Nullable`1[int]):this (Tier0)
         -57 (-12.08 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:SetAt(int,long,System.Nullable`1[int]):this (Tier0)
         -57 (-45.97 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:TryAdd(long,System.Nullable`1[int]):ubyte:this (Tier0)
         -57 (-30.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte:this (Tier0)
         -57 (-34.13 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -57 (-33.73 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:ContainsKey(long):ubyte:this (Tier0)
         -57 (-33.73 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:Remove(long):ubyte:this (Tier0)
         -57 (-20.88 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte:this (Tier0)
         -57 (-17.07 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -57 (-37.75 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[long,System.Nullable`1[int]]:IndexOfKey(long):int:this (Tier0)
         -57 (-29.69 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[long,System.Nullable`1[int]]:IndexOf(long):int:this (Tier0)
         -57 (-8.89 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[long,System.Nullable`1[int]]:Contains(long):ubyte:this (Instrumented Tier0)
         -57 (-8.52 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[long,System.Nullable`1[int]]:Remove(long):ubyte:this (Instrumented Tier0)
         -57 (-8.55 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte:this (Instrumented Tier0)
         -57 (-29.23 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[long](long):int (Tier0)
         -56 (-43.75 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -56 (-45.90 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:IndexOf(short):int:this (Tier0)
         -56 (-36.60 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Insert(int,short,System.Nullable`1[int]):this (Tier0)
         -56 (-27.18 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Remove(short,byref):ubyte:this (Tier0)
         -56 (-43.75 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:set_Item(short,System.Nullable`1[int]):this (Tier0)
         -56 (-11.59 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:SetAt(int,short,System.Nullable`1[int]):this (Tier0)
         -56 (-44.80 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:TryAdd(short,System.Nullable`1[int]):ubyte:this (Tier0)
         -56 (-29.95 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Tier0)
         -56 (-33.53 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -56 (-33.14 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:ContainsKey(short):ubyte:this (Tier0)
         -56 (-33.14 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:Remove(short):ubyte:this (Tier0)
         -56 (-20.29 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Tier0)
         -56 (-16.62 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -56 (-36.84 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[short,System.Nullable`1[int]]:IndexOfKey(short):int:this (Tier0)
         -56 (-29.02 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[short,System.Nullable`1[int]]:IndexOf(short):int:this (Tier0)
         -56 (-8.71 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:Contains(short):ubyte:this (Instrumented Tier0)
         -56 (-8.35 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:Remove(short):ubyte:this (Instrumented Tier0)
         -56 (-8.60 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Instrumented Tier0)
         -56 (-29.17 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[short](short):int (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -55 (-47.01 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:IndexOf(int):int:this (Tier0)
         -55 (-37.16 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Insert(int,int,System.Nullable`1[int]):this (Tier0)
         -55 (-27.36 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Remove(int,byref):ubyte:this (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:set_Item(int,System.Nullable`1[int]):this (Tier0)
         -55 (-11.93 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:SetAt(int,int,System.Nullable`1[int]):this (Tier0)
         -55 (-45.83 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:TryAdd(int,System.Nullable`1[int]):ubyte:this (Tier0)
         -55 (-30.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:TryGetValue(int,byref):ubyte:this (Tier0)
         -55 (-43.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-45.45 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:IndexOf(ubyte):int:this (Tier0)
         -55 (-36.42 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Insert(int,ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-26.83 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Remove(ubyte,byref):ubyte:this (Tier0)
         -55 (-43.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:set_Item(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-11.48 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:SetAt(int,ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:TryAdd(ubyte,System.Nullable`1[int]):ubyte:this (Tier0)
         -55 (-29.57 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:TryGetValue(ubyte,byref):ubyte:this (Tier0)
         -55 (-33.95 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -55 (-33.54 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:ContainsKey(int):ubyte:this (Tier0)
         -55 (-33.54 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:Remove(int):ubyte:this (Tier0)
         -55 (-20.30 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:TryGetValue(int,byref):ubyte:this (Tier0)
         -55 (-33.13 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-32.74 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:ContainsKey(ubyte):ubyte:this (Tier0)
         -55 (-32.74 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:Remove(ubyte):ubyte:this (Tier0)
         -55 (-20.00 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:TryGetValue(ubyte,byref):ubyte:this (Tier0)
         -55 (-16.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -55 (-37.41 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[int,System.Nullable`1[int]]:IndexOfKey(int):int:this (Tier0)
         -55 (-16.52 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-36.67 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[ubyte,System.Nullable`1[int]]:IndexOfKey(ubyte):int:this (Tier0)
         -55 (-29.26 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[int,System.Nullable`1[int]]:IndexOf(int):int:this (Tier0)
         -55 (-28.80 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[ubyte,System.Nullable`1[int]]:IndexOf(ubyte):int:this (Tier0)
         -55 (-8.68 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.Nullable`1[int]]:Contains(int):ubyte:this (Instrumented Tier0)
         -55 (-8.31 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.Nullable`1[int]]:Remove(int):ubyte:this (Instrumented Tier0)
         -55 (-8.57 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.Nullable`1[int]]:TryGetValue(int,byref):ubyte:this (Instrumented Tier0)
         -55 (-8.58 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[ubyte,System.Nullable`1[int]]:Contains(ubyte):ubyte:this (Instrumented Tier0)
         -55 (-8.22 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[ubyte,System.Nullable`1[int]]:Remove(ubyte):ubyte:this (Instrumented Tier0)
         -55 (-8.46 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[ubyte,System.Nullable`1[int]]:TryGetValue(ubyte,byref):ubyte:this (Instrumented Tier0)
         -55 (-28.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[int](int):int (Tier0)
         -55 (-28.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[ubyte](ubyte):int (Tier0)
         -54 (-22.69 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this (Tier0)
         -54 (-19.78 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):int:this (Tier0)
         -53 (-22.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]):ubyte:this (Tier0)
         -53 (-19.70 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]):int:this (Tier0)

Top method regressions (percentages):
         118 (8.77 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
          78 (8.07 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
          69 (6.39 % of base) : System.Security.Cryptography.ProtectedData.dasm - System.Security.Cryptography.ProtectedData:ProtectOrUnprotect(ubyte[],ubyte[],int,ubyte):ubyte[] (Tier0-FullOpts)
           6 (5.31 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:IndexOf(System.Nullable`1[int]):int:this (Tier0)
           6 (5.17 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:TryAdd(System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (Tier0)
          12 (5.13 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]):ubyte:this (Tier0)
           6 (5.04 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           6 (5.04 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:set_Item(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           8 (5.03 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           8 (4.97 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:ContainsKey(System.Nullable`1[int]):ubyte:this (Tier0)
           8 (4.97 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (Tier0)
          12 (4.46 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]):int:this (Tier0)
           8 (4.35 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[System.Nullable`1[int],System.Nullable`1[int]]:IndexOf(System.Nullable`1[int]):int:this (Tier0)
           6 (4.20 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Nullable`1[int],System.Nullable`1[int]]:IndexOfKey(System.Nullable`1[int]):int:this (Tier0)
           6 (4.17 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Insert(int,System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           6 (3.53 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]](System.Nullable`1[int]):int (Tier0)
           6 (3.37 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:TryGetValue(System.Nullable`1[int],byref):ubyte:this (Tier0)
           6 (3.05 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int],byref):ubyte:this (Tier0)
          58 (2.99 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:TryParse(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,int,byref):ubyte (Tier0-FullOpts)
          18 (2.72 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (Instrumented Tier0)
           8 (2.52 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Nullable`1[int],System.Nullable`1[int]]:Add(System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
          12 (1.87 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:Contains(System.Nullable`1[int]):ubyte:this (Instrumented Tier0)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicConnection:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicListener:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          17 (1.77 % of base) : System.Net.Quic.dasm - System.Net.Quic.QuicStream:NativeCallback(ulong,ulong,ulong):int (FullOpts)
          10 (1.47 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Nullable`1[int],System.Nullable`1[int]]:TryGetValue(System.Nullable`1[int],byref):ubyte:this (Instrumented Tier0)
          27 (1.14 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:VerifyRemoteCertificate(System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.SslCertificateTrust,byref,byref,byref):ubyte:this (Tier0-FullOpts)
          18 (0.41 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:SelectClientCertificate():System.Security.Cryptography.X509Certificates.X509Certificate2:this (Tier0-FullOpts)
           1 (0.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:SetAt(int,System.Nullable`1[int],System.Nullable`1[int]):this (Tier0)
           1 (0.20 % of base) : System.Private.CoreLib.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1-OSR)

Top method improvements (percentages):
         -59 (-55.14 % of base) : System.Private.CoreLib.dasm - System.Numerics.TotalOrderIeee754Comparer`1[double]:GetHashCode(double):int:this (Tier0)
         -59 (-47.20 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
         -57 (-47.11 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:IndexOf(long):int:this (Tier0)
         -55 (-47.01 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:IndexOf(int):int:this (Tier0)
         -59 (-46.46 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
         -57 (-45.97 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:TryAdd(long,System.Nullable`1[int]):ubyte:this (Tier0)
         -56 (-45.90 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:IndexOf(short):int:this (Tier0)
         -55 (-45.83 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:TryAdd(int,System.Nullable`1[int]):ubyte:this (Tier0)
         -55 (-45.45 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:IndexOf(ubyte):int:this (Tier0)
         -59 (-45.38 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -59 (-45.38 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
         -57 (-44.88 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -57 (-44.88 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:set_Item(long,System.Nullable`1[int]):this (Tier0)
         -56 (-44.80 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:TryAdd(short,System.Nullable`1[int]):ubyte:this (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:set_Item(int,System.Nullable`1[int]):this (Tier0)
         -55 (-44.72 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:TryAdd(ubyte,System.Nullable`1[int]):ubyte:this (Tier0)
         -56 (-43.75 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -56 (-43.75 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:set_Item(short,System.Nullable`1[int]):this (Tier0)
         -55 (-43.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-43.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:set_Item(ubyte,System.Nullable`1[int]):this (Tier0)
         -59 (-38.06 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
         -59 (-38.06 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:IndexOfKey(double):int:this (Tier0)
         -57 (-37.75 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[long,System.Nullable`1[int]]:IndexOfKey(long):int:this (Tier0)
         -57 (-37.50 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Insert(int,long,System.Nullable`1[int]):this (Tier0)
         -55 (-37.41 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[int,System.Nullable`1[int]]:IndexOfKey(int):int:this (Tier0)
         -55 (-37.16 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Insert(int,int,System.Nullable`1[int]):this (Tier0)
         -56 (-36.84 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[short,System.Nullable`1[int]]:IndexOfKey(short):int:this (Tier0)
         -55 (-36.67 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[ubyte,System.Nullable`1[int]]:IndexOfKey(ubyte):int:this (Tier0)
         -56 (-36.60 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Insert(int,short,System.Nullable`1[int]):this (Tier0)
         -55 (-36.42 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Insert(int,ubyte,System.Nullable`1[int]):this (Tier0)
         -59 (-34.30 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -57 (-34.13 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -55 (-33.95 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -59 (-33.91 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
         -59 (-33.91 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
         -57 (-33.73 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:ContainsKey(long):ubyte:this (Tier0)
         -57 (-33.73 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:Remove(long):ubyte:this (Tier0)
         -55 (-33.54 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:ContainsKey(int):ubyte:this (Tier0)
         -55 (-33.54 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:Remove(int):ubyte:this (Tier0)
         -56 (-33.53 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -56 (-33.14 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:ContainsKey(short):ubyte:this (Tier0)
         -56 (-33.14 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:Remove(short):ubyte:this (Tier0)
         -55 (-33.13 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -55 (-32.74 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:ContainsKey(ubyte):ubyte:this (Tier0)
         -55 (-32.74 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:Remove(ubyte):ubyte:this (Tier0)
         -59 (-31.05 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
         -57 (-30.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte:this (Tier0)
         -55 (-30.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:TryGetValue(int,byref):ubyte:this (Tier0)
         -59 (-30.10 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
         -59 (-30.10 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[double](double):int (Tier0)
         -56 (-29.95 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Tier0)
         -57 (-29.69 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[long,System.Nullable`1[int]]:IndexOf(long):int:this (Tier0)
         -55 (-29.57 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:TryGetValue(ubyte,byref):ubyte:this (Tier0)
         -55 (-29.26 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[int,System.Nullable`1[int]]:IndexOf(int):int:this (Tier0)
         -57 (-29.23 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[long](long):int (Tier0)
         -56 (-29.17 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[short](short):int (Tier0)
         -56 (-29.02 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[short,System.Nullable`1[int]]:IndexOf(short):int:this (Tier0)
         -55 (-28.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[int](int):int (Tier0)
         -55 (-28.95 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshal:SizeOf[ubyte](ubyte):int (Tier0)
         -55 (-28.80 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2+KeyList[ubyte,System.Nullable`1[int]]:IndexOf(ubyte):int:this (Tier0)
         -59 (-28.23 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
         -57 (-27.80 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:Remove(long,byref):ubyte:this (Tier0)
         -55 (-27.36 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:Remove(int,byref):ubyte:this (Tier0)
         -56 (-27.18 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:Remove(short,byref):ubyte:this (Tier0)
         -55 (-26.83 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:Remove(ubyte,byref):ubyte:this (Tier0)
         -53 (-22.94 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]):ubyte:this (Tier0)
         -54 (-22.69 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this (Tier0)
         -53 (-22.65 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]):ubyte:this (Tier0)
         -52 (-22.61 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]):ubyte:this (Tier0)
         -52 (-22.61 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]):ubyte:this (Tier0)
         -59 (-21.15 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
         -57 (-20.88 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[long,System.Nullable`1[int]]:TryGetValue(long,byref):ubyte:this (Tier0)
         -55 (-20.30 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[int,System.Nullable`1[int]]:TryGetValue(int,byref):ubyte:this (Tier0)
         -56 (-20.29 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Tier0)
         -55 (-20.00 % of base) : System.Collections.dasm - System.Collections.Generic.SortedDictionary`2[ubyte,System.Nullable`1[int]]:TryGetValue(ubyte,byref):ubyte:this (Tier0)
         -53 (-19.92 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]):int:this (Tier0)
         -54 (-19.78 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):int:this (Tier0)
         -53 (-19.70 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]):int:this (Tier0)
         -52 (-19.62 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]):int:this (Tier0)
         -52 (-19.62 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]):int:this (Tier0)
         -59 (-17.25 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
         -57 (-17.07 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[long,System.Nullable`1[int]]:Add(long,System.Nullable`1[int]):this (Tier0)
         -55 (-16.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[int,System.Nullable`1[int]]:Add(int,System.Nullable`1[int]):this (Tier0)
         -56 (-16.62 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (Tier0)
         -55 (-16.52 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (Tier0)
         -59 (-12.22 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
         -57 (-12.08 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[long,System.Nullable`1[int]]:SetAt(int,long,System.Nullable`1[int]):this (Tier0)
         -55 (-11.93 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[int,System.Nullable`1[int]]:SetAt(int,int,System.Nullable`1[int]):this (Tier0)
         -56 (-11.59 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[short,System.Nullable`1[int]]:SetAt(int,short,System.Nullable`1[int]):this (Tier0)
         -55 (-11.48 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[ubyte,System.Nullable`1[int]]:SetAt(int,ubyte,System.Nullable`1[int]):this (Tier0)
         -26 (-10.66 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<TKey,TValue>>.Contains(System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]):ubyte:this (Tier0)
         -26 (-9.32 % of base) : System.Collections.dasm - System.Collections.Generic.OrderedDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IList<System.Collections.Generic.KeyValuePair<TKey,TValue>>.IndexOf(System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]):int:this (Tier0)
         -59 (-9.10 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:Contains(double):ubyte:this (Instrumented Tier0)
         -57 (-8.89 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[long,System.Nullable`1[int]]:Contains(long):ubyte:this (Instrumented Tier0)
         -59 (-8.75 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Instrumented Tier0)
         -59 (-8.73 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Instrumented Tier0)
         -56 (-8.71 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:Contains(short):ubyte:this (Instrumented Tier0)
         -55 (-8.68 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.Nullable`1[int]]:Contains(int):ubyte:this (Instrumented Tier0)
         -56 (-8.60 % of base) : System.ObjectModel.dasm - System.Collections.ObjectModel.KeyedCollection`2[short,System.Nullable`1[int]]:TryGetValue(short,byref):ubyte:this (Instrumented Tier0)

142 total methods with Code Size differences (112 improved, 30 regressed), 255979 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 13, 2024

Top method regressions

118 (8.77 % of base) - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this
 ; Assembly listing for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier-0 switched to FullOpts code
 ; optimized code
 ; optimized using Synthesized PGO
 ; rbp based frame
 ; fully interruptible
 ; with Synthesized PGO: fgCalledCount is 100
 ; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 15 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T11] ( 10, 23.46)     ref  ->  [rbp-0xB0]  this class-hnd EH-live single-def <System.DirectoryServices.Protocols.SortRequestControl>
 ;  V01 loc0         [V01,T10] (  6, 29.81)     ref  ->  [rbp-0xB8]  class-hnd exact spill-single-def <System.DirectoryServices.Protocols.SortKeyInterop[]>
 ;  V02 loc1         [V02    ] (  5,  4.00)    long  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V03 loc2         [V03,T21] (  2,  9.91)     int  ->  r14         single-def
 ;  V04 loc3         [V04,T18] (  6, 16.11)     int  ->  [rbp-0x34]  EH-live spill-single-def
 ;  V05 loc4         [V05,T22] (  6,  8.10)    long  ->  [rbp-0x40]  EH-live spill-single-def
-;* V06 loc5         [V06,T33] (  0,  0   )     int  ->  zero-ref   
+;* V06 loc5         [V06,T36] (  0,  0   )     int  ->  zero-ref   
 ;  V07 loc6         [V07,T20] (  3, 10.91)    long  ->  r12         single-def
 ;* V08 loc7         [V08    ] (  0,  0   )    long  ->  zero-ref   
 ;  V09 loc8         [V09,T26] (  3,  2.89)     int  ->  rcx        
 ;  V10 loc9         [V10,T30] (  2,  2   )   ubyte  ->  r15         single-def
 ;  V11 loc10        [V11,T28] (  6,  2.52)     int  ->  r14         single-def
 ;* V12 loc11        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.DirectoryServices.Protocols.LdapControl>
-;  V13 loc12        [V13,T32] (  4,  1.46)     ref  ->  r14         class-hnd exact single-def <System.DirectoryServices.Protocols.BerVal>
-;  V14 loc13        [V14,T38] (  2,  0   )     ref  ->  r15         class-hnd exact single-def <System.String>
+;  V13 loc12        [V13,T33] (  4,  1.46)     ref  ->  r14         class-hnd exact single-def <System.DirectoryServices.Protocols.BerVal>
+;  V14 loc13        [V14,T47] (  2,  0   )     ref  ->  r15         class-hnd exact single-def <System.String>
 ;  V15 loc14        [V15,T12] (  5, 19.24)     int  ->  rbx        
 ;  V16 loc15        [V16,T17] (  5, 16.17)    long  ->  r15        
 ;  V17 loc16        [V17,T19] (  6, 11.76)    long  ->  rax        
 ;# V18 OutArgs      [V18    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V19 tmp1         [V19    ] (  5, 90.00)  struct (24) [rbp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.DirectoryServices.Protocols.SortKeyInterop>
 ;  V20 tmp2         [V20,T24] (  4,  3.84)     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapControl>
-;  V21 tmp3         [V21,T36] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
-;  V22 tmp4         [V22,T37] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
+;  V21 tmp3         [V21,T45] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
+;  V22 tmp4         [V22,T46] (  3,  0   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
 ;* V23 tmp5         [V23    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V24 tmp6         [V24,T07] (  3, 44.19)    long  ->  rdi         "Inlining Arg"
 ;  V25 tmp7         [V25,T13] (  3, 17.82)    long  ->  rdi        
 ;  V26 tmp8         [V26,T03] (  4, 71.28)    long  ->  rbx         "dup spill"
 ;* V27 tmp9         [V27    ] (  0,  0   )    long  ->  zero-ref   
 ;* V28 tmp10        [V28    ] (  0,  0   )  struct (24) zero-ref    "Inlining Arg" <System.DirectoryServices.Protocols.SortKeyInterop>
 ;  V29 tmp11        [V29,T00] (  5, 89.10)     ref  ->  [rbp-0xC0]  class-hnd exact spill-single-def "Single-def Box Helper" <System.DirectoryServices.Protocols.SortKeyInterop>
 ;* V30 tmp12        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.DirectoryServices.Protocols.ConnectionHandle>
 ;* V31 tmp13        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V32 tmp14        [V32,T27] (  3,  2.88)    long  ->  rdi         "Inlining Arg"
 ;* V33 tmp15        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.DirectoryServices.Protocols.LdapControl>
-;* V34 tmp16        [V34    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V35 tmp17        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <ubyte[]>
-;* V36 tmp18        [V36    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V37 tmp19        [V37,T29] (  2,  2.08)    long  ->  rdi         "Inlining Arg"
-;* V38 tmp20        [V38    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V39 tmp21        [V39,T31] (  2,  1.92)     ref  ->  rax         single-def "Single return block return value"
-;  V40 FramesRoot   [V40,T08] (  6, 37.64)    long  ->  r15         "Pinvoke FrameListRoot"
-;  V41 PInvokeFrame [V41    ] (  8, 39.64)  struct (64) [rbp-0x98]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V42 tmp24        [V42    ] (  3, 45.00)     ref  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V19.<AttributeName>k__BackingField (fldOffset=0x0)" P-DEP
-;  V43 tmp25        [V43    ] (  3, 45.00)     ref  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V19.<MatchingRule>k__BackingField (fldOffset=0x8)" P-DEP
-;  V44 tmp26        [V44    ] (  3, 45.00)   ubyte  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed "field V19.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-DEP
-;  V45 tmp27        [V45,T14] (  2, 17.82)     ref  ->  [rbp-0xC8]  spill-single-def "field V28.<AttributeName>k__BackingField (fldOffset=0x0)" P-INDEP
-;  V46 tmp28        [V46,T15] (  2, 17.82)     ref  ->  [rbp-0xD0]  spill-single-def "field V28.<MatchingRule>k__BackingField (fldOffset=0x8)" P-INDEP
-;  V47 tmp29        [V47,T16] (  2, 17.82)   ubyte  ->  [rbp-0x9C]  spill-single-def "field V28.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-INDEP
-;  V48 tmp30        [V48,T05] (  3, 54.00)     ref  ->  rsi         "arr expr"
-;  V49 tmp31        [V49,T09] (  2, 36.00)     ref  ->  rsi         "argument with side effect"
-;  V50 tmp32        [V50,T01] (  4, 72.00)   byref  ->  r14         "BlockOp address local"
-;  V51 tmp33        [V51,T02] (  4, 71.28)   byref  ->  rdi         "BlockOp address local"
-;  V52 tmp34        [V52,T23] (  2,  4   )     ref  ->  rdi         single-def "argument with side effect"
-;  V53 PSPSym       [V53,T34] (  1,  1   )    long  ->  [rbp-0xE0]  do-not-enreg[V] "PSPSym"
-;  V54 cse0         [V54,T35] (  3,  0.75)     int  ->  r15         "CSE #07: conservative"
-;  V55 cse1         [V55,T25] (  3,  3   )     ref  ->  r14         "CSE #01: moderate"
-;  V56 rat0         [V56,T04] (  8, 64.00)    long  ->  r12         "Widened IV V06"
-;  V57 rat1         [V57,T06] (  7, 46.44)    long  ->  [rbp-0xA8]  "Widened IV V09"
+;  V34 tmp16        [V34,T34] (  3,  1.36)    long  ->  rsi         "Inlining Arg"
+;  V35 tmp17        [V35,T35] (  3,  1.12)     ref  ->  rdi         class-hnd single-def "Inlining Arg" <ubyte[]>
+;  V36 tmp18        [V36,T32] (  4,  1.36)     int  ->  r15         "Inlining Arg"
+;* V37 tmp19        [V37    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V38 tmp20        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+;* V39 tmp21        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V40 tmp22        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V41 tmp23        [V41    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V42 tmp24        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
+;* V43 tmp25        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V44 tmp26        [V44,T29] (  2,  2.08)    long  ->  rdi         "Inlining Arg"
+;* V45 tmp27        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V46 tmp28        [V46,T31] (  2,  1.92)     ref  ->  rax         single-def "Single return block return value"
+;  V47 FramesRoot   [V47,T08] (  6, 37.64)    long  ->  r15         "Pinvoke FrameListRoot"
+;  V48 PInvokeFrame [V48    ] (  8, 39.64)  struct (64) [rbp-0x98]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V49 tmp31        [V49    ] (  3, 45.00)     ref  ->  [rbp-0x58]  do-not-enreg[X] addr-exposed "field V19.<AttributeName>k__BackingField (fldOffset=0x0)" P-DEP
+;  V50 tmp32        [V50    ] (  3, 45.00)     ref  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V19.<MatchingRule>k__BackingField (fldOffset=0x8)" P-DEP
+;  V51 tmp33        [V51    ] (  3, 45.00)   ubyte  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed "field V19.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-DEP
+;  V52 tmp34        [V52,T14] (  2, 17.82)     ref  ->  [rbp-0xC8]  spill-single-def "field V28.<AttributeName>k__BackingField (fldOffset=0x0)" P-INDEP
+;  V53 tmp35        [V53,T15] (  2, 17.82)     ref  ->  [rbp-0xD0]  spill-single-def "field V28.<MatchingRule>k__BackingField (fldOffset=0x8)" P-INDEP
+;  V54 tmp36        [V54,T16] (  2, 17.82)   ubyte  ->  [rbp-0x9C]  spill-single-def "field V28.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-INDEP
+;  V55 tmp37        [V55,T40] (  2,  0.36)   byref  ->  rsi         single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V56 tmp38        [V56,T43] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp39        [V57,T41] (  2,  0.31)   byref  ->  rsi         single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp40        [V58,T39] (  3,  0.49)     int  ->  r15         single-def "field V38._length (fldOffset=0x8)" P-INDEP
+;  V59 tmp41        [V59,T42] (  2,  0.26)   byref  ->  rdi         single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V60 tmp42        [V60,T44] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
+;* V61 tmp43        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V62 tmp44        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V40._length (fldOffset=0x8)" P-INDEP
+;  V63 tmp45        [V63,T05] (  3, 54.00)     ref  ->  rsi         "arr expr"
+;  V64 tmp46        [V64,T09] (  2, 36.00)     ref  ->  rsi         "argument with side effect"
+;  V65 tmp47        [V65,T01] (  4, 72.00)   byref  ->  r14         "BlockOp address local"
+;  V66 tmp48        [V66,T02] (  4, 71.28)   byref  ->  rdi         "BlockOp address local"
+;  V67 tmp49        [V67,T23] (  2,  4   )     ref  ->  rdi         single-def "argument with side effect"
+;  V68 tmp50        [V68,T48] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V69 PSPSym       [V69,T37] (  1,  1   )    long  ->  [rbp-0xE0]  do-not-enreg[V] "PSPSym"
+;  V70 cse0         [V70,T38] (  3,  0.75)     int  ->  r15         "CSE #07: conservative"
+;  V71 cse1         [V71,T25] (  3,  3   )     ref  ->  r14         "CSE #01: moderate"
+;  V72 rat0         [V72,T04] (  8, 64.00)    long  ->  r12         "Widened IV V06"
+;  V73 rat1         [V73,T06] (  7, 46.44)    long  ->  [rbp-0xA8]  "Widened IV V09"
 ;
 ; Lcl frame size = 184
 
 G_M6630_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 184
        vzeroupper 
        lea      rbp, [rsp+0xE0]
        xor      eax, eax
        mov      qword ptr [rbp-0x58], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x50], ymm8
        mov      qword ptr [rbp-0x30], rax
        mov      qword ptr [rbp-0xE0], rsp
        mov      gword ptr [rbp-0xB0], rdi
        mov      rbx, rdi
 						;; size=65 bbWeight=1 PerfScore 14.58
 G_M6630_IG02:
        lea      rdi, [rbp-0x90]
        call     CORINFO_HELP_INIT_PINVOKE_FRAME
        mov      r15, rax
        mov      rsi, rsp
        mov      qword ptr [rbp-0x78], rsi
        mov      rsi, rbp
        mov      qword ptr [rbp-0x68], rsi
        mov      r14, gword ptr [rbx+0x20]
        mov      esi, dword ptr [r14+0x08]
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.SortKeyInterop[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r13, rax
        mov      gword ptr [rbp-0xB8], r13
        xor      r12d, r12d
        cmp      dword ptr [r14+0x08], 0
        jle      SHORT G_M6630_IG04
 						;; size=72 bbWeight=1 PerfScore 15.00
 G_M6630_IG03:
        mov      rbx, gword ptr [rbp-0xB0]
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x58], xmm0
        vmovdqu  xmmword ptr [rbp-0x50], xmm0
        mov      rsi, gword ptr [rbx+0x20]
        cmp      r12d, dword ptr [rsi+0x08]
-       jae      G_M6630_IG31
+       jae      G_M6630_IG36
        mov      rsi, gword ptr [rsi+8*r12+0x10]
        lea      rdi, [rbp-0x58]
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.SortKeyInterop:.ctor(System.DirectoryServices.Protocols.SortKey):this
        call     [rax]System.DirectoryServices.Protocols.SortKeyInterop:.ctor(System.DirectoryServices.Protocols.SortKey):this
        cmp      r12d, dword ptr [r13+0x08]
-       jae      G_M6630_IG31
+       jae      G_M6630_IG36
        lea      rdi, [r12+2*r12]
        lea      r14, bword ptr [r13+8*rdi+0x10]
        mov      rsi, gword ptr [rbp-0x58]
        mov      rdi, r14
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, gword ptr [rbp-0x50]
        call     CORINFO_HELP_ASSIGN_REF
        movzx    rax, byte  ptr [rbp-0x48]
        mov      byte  ptr [r14+0x10], al
        inc      r12d
        mov      rax, gword ptr [rbx+0x20]
        cmp      dword ptr [rax+0x08], r12d
        jg       SHORT G_M6630_IG03
 						;; size=121 bbWeight=9.00 PerfScore 311.25
 G_M6630_IG04:
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:SizeOf[System.DirectoryServices.Protocols.SortKeyInterop]():int
        call     [rax]System.Runtime.InteropServices.Marshal:SizeOf[System.DirectoryServices.Protocols.SortKeyInterop]():int
        mov      r14d, eax
        mov      eax, dword ptr [r13+0x08]
        mov      dword ptr [rbp-0x34], eax
        lea      edi, [rax+0x01]
        mov      rcx, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
        call     [rcx]System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
        mov      qword ptr [rbp-0x40], rax
 						;; size=47 bbWeight=1 PerfScore 12.50
 G_M6630_IG05:
        mov      r12, rax
        xor      ecx, ecx
        xor      edx, edx
        mov      qword ptr [rbp-0xA8], rdx
        cmp      dword ptr [rbp-0x34], 0
        mov      rax, qword ptr [rbp-0x40]
        jle      G_M6630_IG17
 						;; size=28 bbWeight=1 PerfScore 5.75
 G_M6630_IG06:
        mov      edi, dword ptr [r13+0x08]
 						;; size=4 bbWeight=0.90 PerfScore 1.80
 G_M6630_IG07:
        movsxd   rdi, r14d
        test     rdi, rdi
        jne      SHORT G_M6630_IG14
 						;; size=8 bbWeight=8.91 PerfScore 13.37
 G_M6630_IG08:
        mov      edi, 1
 						;; size=5 bbWeight=4.63 PerfScore 1.16
 G_M6630_IG09:
        mov      rcx, 0xD1FFAB1E      ; function address
        mov      qword ptr [rbp-0x80], rcx
        lea      rcx, G_M6630_IG12
        mov      qword ptr [rbp-0x70], rcx
        lea      rcx, [rbp-0x90]
        mov      qword ptr [r15+0x08], rcx
        mov      byte  ptr [r15+0x04], 0
 						;; size=41 bbWeight=8.91 PerfScore 51.23
 G_M6630_IG10:
        mov      rcx, 0xD1FFAB1E      ; code for Interop+Sys:Malloc(ulong):ulong
 						;; size=10 bbWeight=8.91 PerfScore 2.23
 G_M6630_IG11:
        call     [rcx]Interop+Sys:Malloc(ulong):ulong
 						;; size=2 bbWeight=8.91 PerfScore 26.73
 G_M6630_IG12:
        mov      byte  ptr [r15+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M6630_IG13
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=32 bbWeight=8.91 PerfScore 75.74
 G_M6630_IG13:
        mov      rdi, qword ptr [rbp-0x88]
        mov      qword ptr [r15+0x08], rdi
        mov      rbx, rax
        test     rbx, rbx
        jne      SHORT G_M6630_IG15
-       jmp      G_M6630_IG22
+       jmp      G_M6630_IG24
 						;; size=24 bbWeight=8.91 PerfScore 49.01
 G_M6630_IG14:
        jmp      SHORT G_M6630_IG09
 						;; size=2 bbWeight=4.28 PerfScore 8.55
 G_M6630_IG15:
        mov      r13, qword ptr [rbp-0xA8]
        lea      rdi, [r13+2*r13]
        mov      rax, gword ptr [rbp-0xB8]
        lea      rdi, bword ptr [rax+8*rdi+0x10]
        mov      rcx, gword ptr [rdi]
        mov      gword ptr [rbp-0xC8], rcx
        mov      rdx, gword ptr [rdi+0x08]
        mov      gword ptr [rbp-0xD0], rdx
        movzx    rsi, byte  ptr [rdi+0x10]
        mov      byte  ptr [rbp-0x9C], sil
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.SortKeyInterop
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0xC0], rax
        lea      rdi, bword ptr [rax+0x08]
        mov      rsi, gword ptr [rbp-0xC8]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, gword ptr [rbp-0xC0]
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, gword ptr [rbp-0xD0]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [rbp-0xC0]
        movzx    rsi, byte  ptr [rbp-0x9C]
        mov      byte  ptr [rdi+0x18], sil
        mov      rsi, rbx
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
        call     [rax]System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
        movsxd   rdi, r13d
        mov      qword ptr [r12+8*rdi], rbx
        inc      r13d
        mov      esi, dword ptr [rbp-0x34]
        cmp      r13d, esi
        mov      qword ptr [rbp-0xA8], r13
        mov      rax, qword ptr [rbp-0x40]
        jl       G_M6630_IG07
 						;; size=187 bbWeight=8.91 PerfScore 309.62
 G_M6630_IG16:
        mov      rcx, qword ptr [rbp-0xA8]
 						;; size=7 bbWeight=0.89 PerfScore 0.89
 G_M6630_IG17:
        movsxd   rdi, ecx
        xor      edx, edx
        mov      qword ptr [r12+8*rdi], rdx
        mov      rbx, gword ptr [rbp-0xB0]
        movzx    r15, byte  ptr [rbx+0x18]
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M6630_IG23
+       je       G_M6630_IG25
 						;; size=40 bbWeight=1 PerfScore 8.75
 G_M6630_IG18:
        mov      rdi, 0xD1FFAB1E      ; data for System.DirectoryServices.Protocols.UtilityHandle:s_handle
        mov      rdi, gword ptr [rdi]
        test     r15d, r15d
        setne    dl
        movzx    rdx, dl
        lea      rcx, [rbp-0x30]
        mov      rsi, rax
        mov      r8, 0xD1FFAB1E      ; code for Interop+Ldap:ldap_create_sort_control(System.DirectoryServices.Protocols.ConnectionHandle,long,ubyte,byref):int
        call     [r8]Interop+Ldap:ldap_create_sort_control(System.DirectoryServices.Protocols.ConnectionHandle,long,ubyte,byref):int
        mov      r14d, eax
        test     r14d, r14d
        je       SHORT G_M6630_IG20
 						;; size=50 bbWeight=1 PerfScore 9.25
 G_M6630_IG19:
        mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):ubyte
        call     [rax]System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):ubyte
        test     eax, eax
-       je       G_M6630_IG25
-       jmp      G_M6630_IG24
+       je       G_M6630_IG27
+       jmp      G_M6630_IG26
 						;; size=28 bbWeight=0.52 PerfScore 3.51
 G_M6630_IG20:
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.LdapControl
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        xor      edi, edi
        mov      qword ptr [r15+0x10], rdi
        mov      rdi, qword ptr [rbp-0x30]
        test     rdi, rdi
-       je       G_M6630_IG26
+       je       G_M6630_IG28
        mov      rsi, r15
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        call     [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
        mov      r14, gword ptr [r15+0x08]
        xor      rsi, rsi
        mov      gword ptr [rbx+0x08], rsi
        test     r14, r14
-       je       G_M6630_IG27
+       je       G_M6630_IG32
 						;; size=73 bbWeight=0.48 PerfScore 6.36
 G_M6630_IG21:
        mov      r15d, dword ptr [r14+0x08]
        movsxd   rsi, r15d
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, qword ptr [r14+0x10]
-       mov      rsi, gword ptr [rbx+0x08]
-       mov      ecx, r15d
-       xor      edx, edx
-       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:CopyToManaged[ubyte](long,ubyte[],int,int)
-       call     [rax]System.Runtime.InteropServices.Marshal:CopyToManaged[ubyte](long,ubyte[],int,int)
-       jmp      G_M6630_IG27
-						;; size=64 bbWeight=0.25 PerfScore 3.74
+       mov      rsi, qword ptr [r14+0x10]
+       mov      rdi, gword ptr [rbx+0x08]
+       test     rsi, rsi
+       je       G_M6630_IG29
+       test     r15d, r15d
+       jl       G_M6630_IG30
+						;; size=60 bbWeight=0.25 PerfScore 2.93
 G_M6630_IG22:
+       cmp      dword ptr [rdi+0x08], r15d
+       jb       G_M6630_IG31
+						;; size=10 bbWeight=0.18 PerfScore 0.73
+G_M6630_IG23:
+       add      rdi, 16
+       mov      edx, r15d
+       mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+       call     [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+       jmp      G_M6630_IG32
+						;; size=24 bbWeight=0.13 PerfScore 0.75
+G_M6630_IG24:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowOutOfMemoryException()
        call     [rax]System.ThrowHelper:ThrowOutOfMemoryException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M6630_IG23:
+G_M6630_IG25:
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.UtilityHandle
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        mov      rax, qword ptr [rbp-0x40]
        jmp      G_M6630_IG18
 						;; size=24 bbWeight=0 PerfScore 0.00
-G_M6630_IG24:
+G_M6630_IG26:
        mov      edi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.LdapErrorMappings:MapResultCode(int):System.String
        call     [rax]System.DirectoryServices.Protocols.LdapErrorMappings:MapResultCode(int):System.String
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.LdapException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, r13
        mov      esi, r14d
        mov      rdx, r15
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.LdapException:.ctor(int,System.String):this
        call     [rax]System.DirectoryServices.Protocols.LdapException:.ctor(int,System.String):this
        mov      rdi, r13
        call     CORINFO_HELP_THROW
        int3     
 						;; size=66 bbWeight=0 PerfScore 0.00
-G_M6630_IG25:
+G_M6630_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.DirectoryServices.Protocols.LdapException
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, r15
        mov      esi, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.LdapException:.ctor(int):this
        call     [rax]System.DirectoryServices.Protocols.LdapException:.ctor(int):this
        mov      rdi, r15
        call     CORINFO_HELP_THROW
        int3     
 						;; size=45 bbWeight=0 PerfScore 0.00
-G_M6630_IG26:
+G_M6630_IG28:
        mov      edi, 0xD59
        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_M6630_IG27:
+G_M6630_IG29:
+       mov      edi, 0x13ED
+       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_M6630_IG30:
+       mov      edi, 491
+       mov      rsi, 0xD1FFAB1E
+       call     CORINFO_HELP_STRCNS
+       mov      rsi, rax
+       mov      edi, r15d
+       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+       int3     
+						;; size=39 bbWeight=0 PerfScore 0.00
+G_M6630_IG31:
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+       call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+       int3     
+						;; size=13 bbWeight=0 PerfScore 0.00
+G_M6630_IG32:
        mov      rdi, rsp
 						;; size=3 bbWeight=0.48 PerfScore 0.12
-G_M6630_IG28:
-       call     G_M6630_IG32
+G_M6630_IG33:
+       call     G_M6630_IG37
        nop      
 						;; size=6 bbWeight=0.48 PerfScore 0.60
-G_M6630_IG29:
+G_M6630_IG34:
        mov      rdi, gword ptr [rbp-0xB0]
        mov      rax, 0xD1FFAB1E      ; code for System.DirectoryServices.Protocols.DirectoryControl:GetValue():ubyte[]:this
        call     [rax]System.DirectoryServices.Protocols.DirectoryControl:GetValue():ubyte[]:this
        nop      
 						;; size=20 bbWeight=0.48 PerfScore 2.16
-G_M6630_IG30:
+G_M6630_IG35:
        add      rsp, 184
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=0.48 PerfScore 2.04
-G_M6630_IG31:
+G_M6630_IG36:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-G_M6630_IG32:
+G_M6630_IG37:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0xE0]
 						;; size=28 bbWeight=1.00 PerfScore 11.50
-G_M6630_IG33:
+G_M6630_IG38:
        cmp      qword ptr [rbp-0x30], 0
-       je       SHORT G_M6630_IG35
+       je       SHORT G_M6630_IG40
 						;; size=7 bbWeight=1.00 PerfScore 3.00
-G_M6630_IG34:
+G_M6630_IG39:
        mov      rdi, qword ptr [rbp-0x30]
        call     Interop+Ldap:ldap_control_free(long):int
 						;; size=9 bbWeight=0.52 PerfScore 1.04
-G_M6630_IG35:
+G_M6630_IG40:
        cmp      qword ptr [rbp-0x40], 0
-       je       G_M6630_IG45
+       je       G_M6630_IG50
 						;; size=11 bbWeight=1.00 PerfScore 3.00
-G_M6630_IG36:
+G_M6630_IG41:
        xor      ebx, ebx
        cmp      dword ptr [rbp-0x34], 0
-       jle      SHORT G_M6630_IG44
+       jle      SHORT G_M6630_IG49
 						;; size=8 bbWeight=0.52 PerfScore 1.69
-G_M6630_IG37:
+G_M6630_IG42:
        lea      esi, [8*rbx]
        mov      rdi, qword ptr [rbp-0x40]
        mov      rcx, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        call     [rcx]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        mov      r15, rax
        test     r15, r15
-       je       SHORT G_M6630_IG43
+       je       SHORT G_M6630_IG48
 						;; size=31 bbWeight=4.68 PerfScore 29.25
-G_M6630_IG38:
+G_M6630_IG43:
        mov      rdi, r15
        xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        call     [rax]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        test     rax, rax
-       je       SHORT G_M6630_IG40
+       je       SHORT G_M6630_IG45
 						;; size=22 bbWeight=2.43 PerfScore 12.17
-G_M6630_IG39:
+G_M6630_IG44:
        mov      rdi, rax
        call     Interop+Sys:Free(ulong)
 						;; size=8 bbWeight=1.01 PerfScore 1.27
-G_M6630_IG40:
+G_M6630_IG45:
        mov      rdi, r15
        mov      esi, 8
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        call     [rax]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
        test     rax, rax
-       je       SHORT G_M6630_IG42
+       je       SHORT G_M6630_IG47
 						;; size=25 bbWeight=2.43 PerfScore 12.17
-G_M6630_IG41:
+G_M6630_IG46:
        mov      rdi, rax
        call     Interop+Sys:Free(ulong)
 						;; size=8 bbWeight=1.01 PerfScore 1.27
-G_M6630_IG42:
+G_M6630_IG47:
        mov      rdi, r15
        call     Interop+Sys:Free(ulong)
 						;; size=8 bbWeight=1.95 PerfScore 2.43
-G_M6630_IG43:
+G_M6630_IG48:
        inc      ebx
        mov      eax, dword ptr [rbp-0x34]
        cmp      ebx, eax
-       jl       SHORT G_M6630_IG37
+       jl       SHORT G_M6630_IG42
 						;; size=9 bbWeight=4.68 PerfScore 11.70
-G_M6630_IG44:
+G_M6630_IG49:
        mov      rdi, qword ptr [rbp-0x40]
        call     Interop+Sys:Free(ulong)
 						;; size=9 bbWeight=0.42 PerfScore 0.83
-G_M6630_IG45:
+G_M6630_IG50:
        nop      
 						;; size=1 bbWeight=1.00 PerfScore 0.25
-G_M6630_IG46:
+G_M6630_IG51:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1.00 PerfScore 4.25
 
-; Total bytes of code 1346, prolog size 65, PerfScore 1031.75, instruction count 314, allocated bytes for code 1346 (MethodHash=0bb8e619) for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
+; Total bytes of code 1464, prolog size 65, PerfScore 1032.41, instruction count 338, allocated bytes for code 1464 (MethodHash=0bb8e619) for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
78 (8.07 % of base) - System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int
 ; Assembly listing for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; optimized using Synthesized PGO
 ; rbp based frame
 ; fully interruptible
 ; with Synthesized PGO: fgCalledCount is 100
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T02] (  5,  3.80)     int  ->  rbx         single-def
 ;  V01 arg1         [V01,T03] (  3,  2.80)     int  ->  r15         single-def
 ;  V02 loc0         [V02,T05] (  6,  3.84)     ref  ->  [rbp-0x88]  class-hnd <System.Runtime.InteropServices.PosixSignalRegistration+Token[]>
-;  V03 loc1         [V03,T17] (  4,  1.52)     ref  ->  [rbp-0x90]  class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
+;  V03 loc1         [V03,T19] (  4,  1.52)     ref  ->  [rbp-0x90]  class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
 ;  V04 loc2         [V04    ] (  5,  4   )   ubyte  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V05 loc3         [V05,T10] (  4,  2.08)     ref  ->  r13         ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T16] (  2,  1.54)     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.WaitCallback>
-;  V08 tmp2         [V08,T19] (  4,  1.35)     ref  ->  r15        
+;  V07 tmp1         [V07,T18] (  2,  1.54)     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.WaitCallback>
+;  V08 tmp2         [V08,T20] (  4,  1.35)     ref  ->  r15        
 ;* V09 tmp3         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
 ;  V10 tmp4         [V10,T07] (  4,  3.07)     ref  ->  r13         class-hnd exact single-def "Single-def Box Helper" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
 ;  V11 tmp5         [V11,T09] (  7,  2.80)     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.WaitCallback>
-;  V12 tmp6         [V12,T14] (  2,  1.66)     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.ParameterizedThreadStart>
-;  V13 tmp7         [V13,T18] (  4,  1.46)     ref  ->  r15        
-;  V14 tmp8         [V14,T01] (  7,  5.82)     ref  ->  [rbp-0x98]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Thread>
+;  V12 tmp6         [V12,T16] (  2,  1.66)     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Threading.ParameterizedThreadStart>
+;  V13 tmp7         [V13,T13] (  5,  1.88)     ref  ->  r15        
+;  V14 tmp8         [V14,T00] (  8,  6.66)     ref  ->  [rbp-0x98]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Thread>
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
 ;  V16 tmp10        [V16,T06] (  4,  3.16)     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
 ;  V17 tmp11        [V17,T08] (  7,  3.03)     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.ParameterizedThreadStart>
-;* V18 tmp12        [V18,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V19 tmp13        [V19,T00] (  3,  6   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
+;* V18 tmp12        [V18,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V19 tmp13        [V19,T01] (  3,  6   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
 ;  V20 tmp14        [V20,T11] (  3,  2.52)   byref  ->  rax         single-def "Inline stloc first use temp"
 ;* V21 tmp15        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
 ;* V22 tmp16        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
-;* V23 tmp17        [V23    ] (  0,  0   )  struct ( 8) zero-ref    <System.Threading.ThreadHandle>
+;  V23 tmp17        [V23,T12] (  3,  2.50)     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Thread+StartHelper>
 ;* V24 tmp18        [V24    ] (  0,  0   )  struct ( 8) zero-ref    <System.Threading.ThreadHandle>
-;* V25 tmp19        [V25    ] (  0,  0   )     int  ->  zero-ref   
-;* V26 tmp20        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
-;  V27 tmp21        [V27,T12] (  5,  1.83)     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Thread+StartHelper>
-;  V28 tmp22        [V28,T13] (  3,  1.66)     ref  ->  r14         single-def "ISINST eval op1"
-;* V29 tmp23        [V29,T28] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
-;* V30 tmp24        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
-;* V31 tmp25        [V31    ] (  0,  0   )     ref  ->  zero-ref   
+;* V25 tmp19        [V25    ] (  0,  0   )  struct ( 8) zero-ref    <System.Threading.ThreadHandle>
+;* V26 tmp20        [V26    ] (  0,  0   )     int  ->  zero-ref   
+;* V27 tmp21        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
+;  V28 tmp22        [V28,T14] (  5,  1.83)     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Thread+StartHelper>
+;  V29 tmp23        [V29,T15] (  3,  1.66)     ref  ->  r14         single-def "ISINST eval op1"
+;* V30 tmp24        [V30,T29] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
+;* V31 tmp25        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
 ;* V32 tmp26        [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V33 tmp27        [V33    ] (  0,  0   )     ref  ->  zero-ref   
-;  V34 tmp28        [V34,T29] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;  V35 tmp29        [V35,T04] (  3,  4   )     int  ->  r12         "Single return block return value"
-;  V36 PInvokeFrame [V36    ] (  3,  1.83)  struct (64) [rbp-0x70]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V37 tmp31        [V37    ] (  3,  3   )  struct (16) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
-;  V38 tmp32        [V38,T26] (  2,  0.77)     ref  ->  r14         single-def "field V09.Item2 (fldOffset=0x0)" P-INDEP
-;  V39 tmp33        [V39,T27] (  2,  0.77)     int  ->  rbx         "field V09.Item1 (fldOffset=0x8)" P-INDEP
-;  V40 tmp34        [V40,T23] (  2,  0.83)     ref  ->  r14         single-def "field V15.Item2 (fldOffset=0x0)" P-INDEP
-;  V41 tmp35        [V41,T24] (  2,  0.83)     int  ->  rbx         "field V15.Item1 (fldOffset=0x8)" P-INDEP
-;  V42 tmp36        [V42,T25] (  2,  0.83)    long  ->  rdi         "field V23._ptr (fldOffset=0x0)" P-INDEP
-;* V43 tmp37        [V43    ] (  0,  0   )    long  ->  zero-ref    "field V24._ptr (fldOffset=0x0)" P-INDEP
-;  V44 tmp38        [V44,T30] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
-;  V45 PSPSym       [V45,T22] (  1,  1   )    long  ->  [rbp-0xB0]  do-not-enreg[V] "PSPSym"
-;* V46 cse0         [V46,T21] (  0,  0   )   byref  ->  zero-ref    "CSE #02: moderate"
-;  V47 cse1         [V47,T15] (  3,  1.56)     int  ->  r12         "CSE #06: moderate"
+;* V34 tmp28        [V34    ] (  0,  0   )     ref  ->  zero-ref   
+;  V35 tmp29        [V35,T30] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+;  V36 tmp30        [V36,T04] (  3,  4   )     int  ->  r12         "Single return block return value"
+;  V37 PInvokeFrame [V37    ] (  3,  1.83)  struct (64) [rbp-0x70]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V38 tmp32        [V38    ] (  3,  3   )  struct (16) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
+;  V39 tmp33        [V39,T27] (  2,  0.77)     ref  ->  r14         single-def "field V09.Item2 (fldOffset=0x0)" P-INDEP
+;  V40 tmp34        [V40,T28] (  2,  0.77)     int  ->  rbx         "field V09.Item1 (fldOffset=0x8)" P-INDEP
+;  V41 tmp35        [V41,T24] (  2,  0.83)     ref  ->  r14         single-def "field V15.Item2 (fldOffset=0x0)" P-INDEP
+;  V42 tmp36        [V42,T25] (  2,  0.83)     int  ->  rbx         "field V15.Item1 (fldOffset=0x8)" P-INDEP
+;  V43 tmp37        [V43,T26] (  2,  0.83)    long  ->  rdi         "field V24._ptr (fldOffset=0x0)" P-INDEP
+;* V44 tmp38        [V44    ] (  0,  0   )    long  ->  zero-ref    "field V25._ptr (fldOffset=0x0)" P-INDEP
+;  V45 tmp39        [V45,T31] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
+;  V46 PSPSym       [V46,T23] (  1,  1   )    long  ->  [rbp-0xB0]  do-not-enreg[V] "PSPSym"
+;* V47 cse0         [V47,T22] (  0,  0   )   byref  ->  zero-ref    "CSE #02: moderate"
+;  V48 cse1         [V48,T17] (  3,  1.56)     int  ->  r12         "CSE #06: moderate"
 ;  TEMP_01                                     int  ->  [rbp-0x9C]
 ;  TEMP_02                                    long  ->  [rbp-0xA4]
 ;
 ; Lcl frame size = 136
 
 G_M16214_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 136
        vzeroupper 
        lea      rbp, [rsp+0xB0]
        mov      qword ptr [rbp-0xB0], rsp
        mov      ebx, edi
        mov      r15d, esi
 						;; size=40 bbWeight=1 PerfScore 9.25
 G_M16214_IG02:
        lea      rdi, [rbp-0x80]
        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER
        xor      r14, r14
        mov      rsi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rsi], 1
        je       G_M16214_IG27
 						;; size=31 bbWeight=1 PerfScore 6.00
 G_M16214_IG03:
        mov      rsi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration:s_registrations
        mov      rdi, gword ptr [rsi]
        mov      gword ptr [rbp-0x90], rdi
        xor      esi, esi
        mov      dword ptr [rbp-0x30], esi
 						;; size=25 bbWeight=1 PerfScore 4.50
 G_M16214_IG04:
        cmp      byte  ptr [rbp-0x30], 0
        jne      SHORT G_M16214_IG06
        lea      rsi, [rbp-0x30]
        call     System.Threading.Monitor:ReliableEnter(System.Object,byref)
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration:s_registrations
        mov      rdi, gword ptr [rdi]
        cmp      byte  ptr [rdi], dil
        mov      esi, ebx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
        call     [rax]System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
        test     rax, rax
        je       SHORT G_M16214_IG07
 						;; size=50 bbWeight=1 PerfScore 14.50
 G_M16214_IG05:
        mov      r13, gword ptr [rax]
        mov      r12d, dword ptr [r13+0x28]
        sub      r12d, dword ptr [r13+0x30]
        movsxd   rsi, r12d
        mov      rdi, 0xD1FFAB1E      ; System.Runtime.InteropServices.PosixSignalRegistration+Token[]
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r14, rax
        mov      ecx, r12d
        mov      rdi, r13
        mov      rsi, r14
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.HashSet`1[System.__Canon]:CopyTo(System.__Canon[],int,int):this
        call     [rax]System.Collections.Generic.HashSet`1[System.__Canon]:CopyTo(System.__Canon[],int,int):this
        jmp      SHORT G_M16214_IG07
 						;; size=57 bbWeight=0.52 PerfScore 7.80
 G_M16214_IG06:
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Monitor:ThrowLockTakenException()
        call     [rax]System.Threading.Monitor:ThrowLockTakenException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M16214_IG07:
        cmp      byte  ptr [rbp-0x30], 0
        je       SHORT G_M16214_IG09
 						;; size=6 bbWeight=1 PerfScore 3.00
 G_M16214_IG08:
        mov      rdi, gword ptr [rbp-0x90]
        call     System.Threading.Monitor:Exit(System.Object)
 						;; size=12 bbWeight=0.52 PerfScore 1.04
 G_M16214_IG09:
        mov      gword ptr [rbp-0x88], r14
        test     r14, r14
        je       G_M16214_IG26
 						;; size=16 bbWeight=1 PerfScore 2.25
 G_M16214_IG10:
        add      r15d, 4
        cmp      r15d, 2
        ja       G_M16214_IG23
 						;; size=14 bbWeight=0.80 PerfScore 1.20
 G_M16214_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<0>__HandleSignal
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M16214_IG13
 						;; size=18 bbWeight=0.42 PerfScore 1.46
 G_M16214_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.ParameterizedThreadStart
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; function address
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.PosixSignalRegistration:<OnPosixSignal>g__HandleSignal|10_0(System.Object)
        mov      qword ptr [r15+0x20], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<0>__HandleSignal
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=76 bbWeight=0.22 PerfScore 1.57
 G_M16214_IG13:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.Thread
        call     CORINFO_HELP_NEWFAST
        mov      r13, rax
        mov      gword ptr [rbp-0x98], r13
-       mov      rdi, r13
+       test     r15, r15
+       je       G_M16214_IG28
+       mov      rdi, 0xD1FFAB1E      ; System.Threading.Thread+StartHelper
+       call     CORINFO_HELP_NEWSFAST
+       mov      r12, rax
+       lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r15
-       mov      rax, 0xD1FFAB1E      ; code for System.Threading.Thread:.ctor(System.Threading.ParameterizedThreadStart):this
-       call     [rax]System.Threading.Thread:.ctor(System.Threading.ParameterizedThreadStart):this
+       call     CORINFO_HELP_ASSIGN_REF
+       lea      rdi, bword ptr [r13+0x20]
+       mov      rsi, r12
+       call     CORINFO_HELP_ASSIGN_REF
+       mov      rdi, r13
+       call     System.Threading.Thread:Initialize():this
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Thread:GetNativeHandle():System.Threading.ThreadHandle:this
        call     [rax]System.Threading.Thread:GetNativeHandle():System.Threading.ThreadHandle:this
        mov      rdi, rax
        mov      qword ptr [rbp-0xA4], rdi
        mov      esi, 1
        mov      dword ptr [rbp-0x9C], esi
        lea      rdi, [rbp-0x70]
-						;; size=83 bbWeight=0.42 PerfScore 5.30
+						;; size=125 bbWeight=0.42 PerfScore 6.86
 G_M16214_IG14:
        call     CORINFO_HELP_JIT_PINVOKE_BEGIN
        mov      rax, 0xD1FFAB1E      ; function address
        mov      rdi, qword ptr [rbp-0xA4]
        mov      esi, dword ptr [rbp-0x9C]
 						;; size=28 bbWeight=0.42 PerfScore 1.35
 G_M16214_IG15:
        call     rax ; System.Threading.Thread:SetIsBackground(System.Threading.ThreadHandle,int)
        lea      rdi, [rbp-0x70]
        call     CORINFO_HELP_JIT_PINVOKE_END
        mov      r13, gword ptr [rbp-0x98]
        mov      rdi, r13
        mov      rsi, 0xD1FFAB1E      ; '.NET Signal Handler'
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Thread:set_Name(System.String):this
        call     [rax]System.Threading.Thread:set_Name(System.String):this
        mov      r14, gword ptr [rbp-0x88]
        mov      rdi, 0xD1FFAB1E      ; System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r15+0x10], ebx
        mov      rbx, gword ptr [r13+0x20]
        test     rbx, rbx
        je       SHORT G_M16214_IG18
 						;; size=93 bbWeight=0.42 PerfScore 7.38
 G_M16214_IG16:
        mov      r14, gword ptr [rbx+0x08]
        test     r14, r14
        jne      SHORT G_M16214_IG22
 						;; size=9 bbWeight=0.33 PerfScore 1.08
 G_M16214_IG17:
        lea      rdi, bword ptr [rbx+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        xor      rdi, rdi
        mov      gword ptr [rbx+0x28], rdi
 						;; size=18 bbWeight=0.33 PerfScore 1.00
 G_M16214_IG18:
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Thread:StartCore():this
        call     [rax]System.Threading.Thread:StartCore():this
 						;; size=15 bbWeight=0.42 PerfScore 1.46
 G_M16214_IG19:
        mov      r12d, 1
 						;; size=6 bbWeight=0.80 PerfScore 0.20
 G_M16214_IG20:
        lea      rdi, [rbp-0x80]
        call     CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
        mov      eax, r12d
 						;; size=12 bbWeight=1 PerfScore 1.75
 G_M16214_IG21:
        add      rsp, 136
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=18 bbWeight=1 PerfScore 4.25
 G_M16214_IG22:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.ThreadStart
        cmp      qword ptr [r14], rdi
-       je       G_M16214_IG28
+       je       G_M16214_IG29
        jmp      SHORT G_M16214_IG17
 						;; size=21 bbWeight=0.17 PerfScore 1.04
 G_M16214_IG23:
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<1>__HandleSignal
        mov      r15, gword ptr [rdi]
        test     r15, r15
        jne      SHORT G_M16214_IG25
 						;; size=18 bbWeight=0.38 PerfScore 1.34
 G_M16214_IG24:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.WaitCallback
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; function address
        mov      qword ptr [r15+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.PosixSignalRegistration:<OnPosixSignal>g__HandleSignal|10_0(System.Object)
        mov      qword ptr [r15+0x20], rdi
        mov      rdi, 0xD1FFAB1E      ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<1>__HandleSignal
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
 						;; size=76 bbWeight=0.20 PerfScore 1.45
 G_M16214_IG25:
        mov      r14, gword ptr [rbp-0x88]
        mov      rdi, 0xD1FFAB1E      ; System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      dword ptr [r13+0x10], ebx
        mov      rsi, r13
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte
        call     [rax]System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte
        jmp      G_M16214_IG19
 						;; size=64 bbWeight=0.38 PerfScore 4.22
 G_M16214_IG26:
        xor      r12d, r12d
        jmp      G_M16214_IG20
 						;; size=8 bbWeight=0.20 PerfScore 0.45
 G_M16214_IG27:
        mov      rdi, 0xD1FFAB1E      ; System.Runtime.InteropServices.PosixSignalRegistration
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M16214_IG03
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M16214_IG28:
+       mov      edi, 0x134EC
+       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_M16214_IG29:
        mov      rdi, 0xD1FFAB1E      ; System.InvalidOperationException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_InvalidOperation_ThreadWrongThreadStart():System.String
        call     [rax]System.SR:get_InvalidOperation_ThreadWrongThreadStart():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidOperationException:.ctor(System.String):this
        call     [rax]System.InvalidOperationException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
-G_M16214_IG29:
+G_M16214_IG30:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        vzeroupper 
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0xB0]
 						;; size=28 bbWeight=0 PerfScore 0.00
-G_M16214_IG30:
+G_M16214_IG31:
        cmp      byte  ptr [rbp-0x30], 0
-       je       SHORT G_M16214_IG31
+       je       SHORT G_M16214_IG32
        mov      rdi, gword ptr [rbp-0x90]
        call     System.Threading.Monitor:Exit(System.Object)
 						;; size=18 bbWeight=0 PerfScore 0.00
-G_M16214_IG31:
+G_M16214_IG32:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M16214_IG32:
+G_M16214_IG33:
        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 966, prolog size 40, PerfScore 84.85, instruction count 216, allocated bytes for code 966 (MethodHash=a627c0a9) for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
+; Total bytes of code 1044, prolog size 40, PerfScore 86.41, instruction count 232, allocated bytes for code 1044 (MethodHash=a627c0a9) for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 13, 2024

Top method improvements

-59 (-45.38 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 32
 
 G_M2528_IG01:
        push     rbp
        sub      rsp, 32
        lea      rbp, [rsp+0x20]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      qword ptr [rbp-0x18], rsi
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M2528_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        mov      rdx, qword ptr [rbp-0x18]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      esi, -1
        mov      ecx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        nop      
-						;; size=95 bbWeight=1 PerfScore 21.75
+						;; size=36 bbWeight=1 PerfScore 9.00
 G_M2528_IG03:
        add      rsp, 32
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 130, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 130 (MethodHash=d20cf61f) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 71, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 71 (MethodHash=d20cf61f) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
-59 (-47.20 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 loc0         [V02    ] (  1,  1   )     int  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 32
 
 G_M1197_IG01:
        push     rbp
        sub      rsp, 32
        lea      rbp, [rsp+0x20]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
 						;; size=25 bbWeight=1 PerfScore 5.00
 G_M1197_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        xor      eax, eax
        mov      dword ptr [rbp-0x18], eax
        lea      rsi, [rbp-0x18]
        lea      rdx, [rbp-0x18]
        mov      rdi, gword ptr [rbp-0x08]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
        nop      
-						;; size=94 bbWeight=1 PerfScore 22.50
+						;; size=35 bbWeight=1 PerfScore 9.75
 G_M1197_IG03:
        add      rsp, 32
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 125, prolog size 16, PerfScore 29.25, instruction count 29, allocated bytes for code 125 (MethodHash=654cfb52) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
+; Total bytes of code 66, prolog size 16, PerfScore 16.50, instruction count 19, allocated bytes for code 66 (MethodHash=654cfb52) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
-59 (-38.06 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )     int  ->  [rbp-0x0C]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  double  ->  [rbp-0x18]  do-not-enreg[]
 ;  V03 arg3         [V03    ] (  1,  1   )  struct ( 8) [rbp-0x20]  do-not-enreg[S] <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 48
 
 G_M61129_IG01:
        push     rbp
        sub      rsp, 48
        lea      rbp, [rsp+0x30]
        xor      eax, eax
        mov      qword ptr [rbp-0x28], rax
        mov      gword ptr [rbp-0x08], rdi
        mov      dword ptr [rbp-0x0C], esi
        vmovsd   qword ptr [rbp-0x18], xmm0
        mov      qword ptr [rbp-0x20], rdx
 						;; size=32 bbWeight=1 PerfScore 7.00
 G_M61129_IG02:
        mov      eax, dword ptr [rbp-0x0C]
        mov      rcx, gword ptr [rbp-0x08]
        cmp      eax, dword ptr [rcx+0x38]
        jbe      SHORT G_M61129_IG03
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
        call     [rax]System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
 						;; size=24 bbWeight=1 PerfScore 9.25
 G_M61129_IG03:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x28], rax
-       mov      rax, gword ptr [rbp-0x28]
-       vmovsd   xmm0, qword ptr [rbp-0x18]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x28]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        mov      esi, dword ptr [rbp-0x0C]
        vmovsd   xmm0, qword ptr [rbp-0x18]
        mov      rdx, qword ptr [rbp-0x20]
        mov      ecx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        nop      
-						;; size=93 bbWeight=1 PerfScore 22.50
+						;; size=34 bbWeight=1 PerfScore 9.75
 G_M61129_IG04:
        add      rsp, 48
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 155, prolog size 16, PerfScore 40.50, instruction count 36, allocated bytes for code 155 (MethodHash=91e81136) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 96, prolog size 16, PerfScore 27.75, instruction count 26, allocated bytes for code 96 (MethodHash=91e81136) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
-59 (-28.23 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )   byref  ->  [rbp-0x18]  do-not-enreg[]
 ;  V03 loc0         [V03    ] (  1,  1   )     int  ->  [rbp-0x1C]  do-not-enreg[]
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 48
 
 G_M50550_IG01:
        push     rbp
        sub      rsp, 48
        lea      rbp, [rsp+0x30]
        xor      eax, eax
        mov      qword ptr [rbp-0x28], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      bword ptr [rbp-0x18], rsi
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M50550_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x28], rax
-       mov      rax, gword ptr [rbp-0x28]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x28]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
        mov      dword ptr [rbp-0x1C], eax
        cmp      dword ptr [rbp-0x1C], 0
        jl       SHORT G_M50550_IG04
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      ecx, dword ptr [rbp-0x1C]
        cmp      ecx, dword ptr [rax+0x08]
        jae      SHORT G_M50550_IG06
        mov      edx, ecx
        imul     rdx, rdx, 24
        lea      rax, bword ptr [rax+rdx+0x10]
        mov      rcx, bword ptr [rbp-0x18]
        mov      rdx, qword ptr [rax+0x10]
        mov      qword ptr [rcx], rdx
        mov      rdi, gword ptr [rbp-0x08]
        mov      esi, dword ptr [rbp-0x1C]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveAt(int):this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveAt(int):this
        mov      eax, 1
-						;; size=151 bbWeight=1 PerfScore 44.75
+						;; size=92 bbWeight=1 PerfScore 32.00
 G_M50550_IG03:
        add      rsp, 48
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M50550_IG04:
        mov      rax, bword ptr [rbp-0x18]
        xor      ecx, ecx
        mov      qword ptr [rax], rcx
        xor      eax, eax
 						;; size=11 bbWeight=1 PerfScore 2.50
 G_M50550_IG05:
        add      rsp, 48
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M50550_IG06:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 209, prolog size 16, PerfScore 56.75, instruction count 53, allocated bytes for code 209 (MethodHash=70e43a89) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
+; Total bytes of code 150, prolog size 16, PerfScore 44.00, instruction count 43, allocated bytes for code 150 (MethodHash=70e43a89) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
-59 (-45.38 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 32
 
 G_M35017_IG01:
        push     rbp
        sub      rsp, 32
        lea      rbp, [rsp+0x20]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      qword ptr [rbp-0x18], rsi
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M35017_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        mov      rdx, qword ptr [rbp-0x18]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      esi, -1
        mov      ecx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        nop      
-						;; size=95 bbWeight=1 PerfScore 21.75
+						;; size=36 bbWeight=1 PerfScore 9.00
 G_M35017_IG03:
        add      rsp, 32
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 130, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 130 (MethodHash=bbc07736) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 71, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 71 (MethodHash=bbc07736) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
-59 (-12.22 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )     int  ->  [rbp-0x0C]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  double  ->  [rbp-0x18]  do-not-enreg[]
 ;  V03 arg3         [V03    ] (  1,  1   )  struct ( 8) [rbp-0x20]  do-not-enreg[S] <System.Nullable`1[int]>
 ;  V04 loc0         [V04    ] (  1,  1   )   byref  ->  [rbp-0x28]  do-not-enreg[] must-init
 ;  V05 loc1         [V05    ] (  1,  1   )     int  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 loc2         [V06    ] (  1,  1   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08    ] (  1,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V09 tmp2         [V09    ] (  1,  1   )     ref  ->  [rbp-0x48]  do-not-enreg[] must-init "argument with side effect"
 ;
 ; Lcl frame size = 80
 
 G_M37961_IG01:
        push     rbp
        sub      rsp, 80
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x40], ymm8
        mov      gword ptr [rbp-0x08], rdi
        mov      dword ptr [rbp-0x0C], esi
        vmovsd   qword ptr [rbp-0x18], xmm0
        mov      qword ptr [rbp-0x20], rdx
 						;; size=42 bbWeight=1 PerfScore 9.33
 G_M37961_IG02:
        mov      eax, dword ptr [rbp-0x0C]
        mov      rcx, gword ptr [rbp-0x08]
        cmp      eax, dword ptr [rcx+0x38]
        jb       SHORT G_M37961_IG03
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
        call     [rax]System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
 						;; size=24 bbWeight=1 PerfScore 9.25
 G_M37961_IG03:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x40], rax
-       mov      rax, gword ptr [rbp-0x40]
-       vmovsd   xmm0, qword ptr [rbp-0x18]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x40]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      ecx, dword ptr [rbp-0x0C]
        cmp      ecx, dword ptr [rax+0x08]
        jae      G_M37961_IG10
        mov      edx, ecx
        imul     rdx, rdx, 24
        lea      rax, bword ptr [rax+rdx+0x10]
        mov      bword ptr [rbp-0x28], rax
        mov      rax, gword ptr [rbp-0x08]
        cmp      gword ptr [rax+0x08], 0
        jne      SHORT G_M37961_IG05
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EqualityComparer`1[double]:get_Default():System.Collections.Generic.EqualityComparer`1[double]
        call     [rax]System.Collections.Generic.EqualityComparer`1[double]:get_Default():System.Collections.Generic.EqualityComparer`1[double]
        mov      gword ptr [rbp-0x48], rax
        mov      rdi, gword ptr [rbp-0x48]
        mov      rax, bword ptr [rbp-0x28]
        vmovsd   xmm1, qword ptr [rax+0x08]
        vmovsd   xmm0, qword ptr [rbp-0x18]
        mov      rax, gword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x20]System.Collections.Generic.EqualityComparer`1[double]:Equals(double,double):ubyte:this
        test     eax, eax
        je       SHORT G_M37961_IG07
        mov      rax, bword ptr [rbp-0x28]
        mov      rcx, qword ptr [rbp-0x20]
        mov      qword ptr [rax+0x10], rcx
-						;; size=169 bbWeight=1 PerfScore 55.50
+						;; size=110 bbWeight=1 PerfScore 42.75
 G_M37961_IG04:
        add      rsp, 80
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M37961_IG05:
        mov      rax, gword ptr [rbp-0x08]
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rbp-0x28]
        vmovsd   xmm1, qword ptr [rax+0x08]
        vmovsd   xmm0, qword ptr [rbp-0x18]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEqualityComparer`1[double]:Equals(double,double):ubyte:this
        call     [r11]System.Collections.Generic.IEqualityComparer`1[double]:Equals(double,double):ubyte:this
        test     eax, eax
        je       SHORT G_M37961_IG07
        mov      rax, bword ptr [rbp-0x28]
        mov      rcx, qword ptr [rbp-0x20]
        mov      qword ptr [rax+0x10], rcx
 						;; size=51 bbWeight=1 PerfScore 18.50
 G_M37961_IG06:
        add      rsp, 80
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M37961_IG07:
        xor      eax, eax
        mov      dword ptr [rbp-0x30], eax
        xor      eax, eax
        mov      dword ptr [rbp-0x38], eax
        lea      rsi, [rbp-0x30]
        lea      rdx, [rbp-0x38]
        mov      rdi, gword ptr [rbp-0x08]
        vmovsd   xmm0, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
        test     eax, eax
        jl       SHORT G_M37961_IG08
        vmovsd   xmm0, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ThrowHelper:ThrowDuplicateKey[double](double)
        call     [rax]System.Collections.ThrowHelper:ThrowDuplicateKey[double](double)
 						;; size=60 bbWeight=1 PerfScore 18.25
 G_M37961_IG08:
        mov      rdi, gword ptr [rbp-0x08]
        mov      esi, dword ptr [rbp-0x0C]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveEntryFromBucket(int):this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveEntryFromBucket(int):this
        mov      rax, bword ptr [rbp-0x28]
        mov      ecx, dword ptr [rbp-0x30]
        mov      dword ptr [rax+0x04], ecx
        mov      rax, bword ptr [rbp-0x28]
        vmovsd   xmm0, qword ptr [rbp-0x18]
        vmovsd   qword ptr [rax+0x08], xmm0
        mov      rax, bword ptr [rbp-0x28]
        mov      rcx, qword ptr [rbp-0x20]
        mov      qword ptr [rax+0x10], rcx
        mov      rdi, gword ptr [rbp-0x08]
        mov      rsi, bword ptr [rbp-0x28]
        mov      edx, dword ptr [rbp-0x0C]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:PushEntryIntoBucket(byref,int):this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:PushEntryIntoBucket(byref,int):this
        mov      rax, gword ptr [rbp-0x08]
        inc      dword ptr [rax+0x3C]
        mov      rax, gword ptr [rbp-0x08]
        mov      rdx, gword ptr [rax+0x18]
        mov      rdi, gword ptr [rbp-0x08]
        mov      esi, dword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RehashIfNecessary(uint,System.Collections.Generic.OrderedDictionary`2+Entry[double,System.Nullable`1[int]][]):this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RehashIfNecessary(uint,System.Collections.Generic.OrderedDictionary`2+Entry[double,System.Nullable`1[int]][]):this
        nop      
 						;; size=113 bbWeight=1 PerfScore 36.00
 G_M37961_IG09:
        add      rsp, 80
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M37961_IG10:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 483, prolog size 26, PerfScore 152.08, instruction count 120, allocated bytes for code 483 (MethodHash=ed356bb6) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 424, prolog size 26, PerfScore 139.33, instruction count 110, allocated bytes for code 424 (MethodHash=ed356bb6) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
-59 (-46.46 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 32
 
 G_M42298_IG01:
        push     rbp
        sub      rsp, 32
        lea      rbp, [rsp+0x20]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      qword ptr [rbp-0x18], rsi
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M42298_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        mov      rdx, qword ptr [rbp-0x18]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      esi, -1
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
        nop      
-						;; size=92 bbWeight=1 PerfScore 21.75
+						;; size=33 bbWeight=1 PerfScore 9.00
 G_M42298_IG03:
        add      rsp, 32
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 127, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 127 (MethodHash=72125ac5) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
+; Total bytes of code 68, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 68 (MethodHash=72125ac5) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
-59 (-31.05 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this
 ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )   byref  ->  [rbp-0x18]  do-not-enreg[]
 ;  V03 loc0         [V03    ] (  1,  1   )     int  ->  [rbp-0x1C]  do-not-enreg[]
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init "Reusable Box Helper"
 ;
 ; Lcl frame size = 48
 
 G_M4178_IG01:
        push     rbp
        sub      rsp, 48
        lea      rbp, [rsp+0x30]
        xor      eax, eax
        mov      qword ptr [rbp-0x28], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      bword ptr [rbp-0x18], rsi
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M4178_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x28], rax
-       mov      rax, gword ptr [rbp-0x28]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x28]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, gword ptr [rbp-0x08]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
        call     [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
        mov      dword ptr [rbp-0x1C], eax
        cmp      dword ptr [rbp-0x1C], 0
        jl       SHORT G_M4178_IG04
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      ecx, dword ptr [rbp-0x1C]
        cmp      ecx, dword ptr [rax+0x08]
        jae      SHORT G_M4178_IG06
        mov      edx, ecx
        imul     rdx, rdx, 24
        lea      rax, bword ptr [rax+rdx+0x10]
        mov      rcx, bword ptr [rbp-0x18]
        mov      rdx, qword ptr [rax+0x10]
        mov      qword ptr [rcx], rdx
        mov      eax, 1
-						;; size=132 bbWeight=1 PerfScore 39.50
+						;; size=73 bbWeight=1 PerfScore 26.75
 G_M4178_IG03:
        add      rsp, 48
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M4178_IG04:
        mov      rax, bword ptr [rbp-0x18]
        xor      ecx, ecx
        mov      qword ptr [rax], rcx
        xor      eax, eax
 						;; size=11 bbWeight=1 PerfScore 2.50
 G_M4178_IG05:
        add      rsp, 48
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M4178_IG06:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 190, prolog size 16, PerfScore 51.50, instruction count 49, allocated bytes for code 190 (MethodHash=4854efad) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
+; Total bytes of code 131, prolog size 16, PerfScore 38.75, instruction count 39, allocated bytes for code 131 (MethodHash=4854efad) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
-59 (-34.30 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V05 tmp2         [V05    ] (  1,  1   )  struct (16) [rbp-0x30]  do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;  V06 tmp3         [V06    ] (  1,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
 ;
 ; Lcl frame size = 64
 
 G_M62164_IG01:
        push     rbp
        sub      rsp, 64
        lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      qword ptr [rbp-0x38], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      qword ptr [rbp-0x18], rsi
 						;; size=33 bbWeight=1 PerfScore 7.00
 G_M62164_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x30], xmm0
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      gword ptr [rbp-0x38], rax
        lea      rdi, [rbp-0x30]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rsi, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        call     [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        vmovsd   xmm0, qword ptr [rbp-0x30]
        mov      rsi, qword ptr [rbp-0x28]
        mov      rdi, gword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Add(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Add(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
        nop      
-						;; size=133 bbWeight=1 PerfScore 37.33
+						;; size=74 bbWeight=1 PerfScore 24.58
 G_M62164_IG03:
        add      rsp, 64
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 172, prolog size 20, PerfScore 46.08, instruction count 39, allocated bytes for code 172 (MethodHash=82300d2b) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 113, prolog size 20, PerfScore 33.33, instruction count 29, allocated bytes for code 113 (MethodHash=82300d2b) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
-59 (-33.91 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this
 ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 loc0         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V05 tmp2         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
 ;  V06 tmp3         [V06    ] (  1,  1   )  struct (16) [rbp-0x38]  do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;
 ; Lcl frame size = 64
 
 G_M13622_IG01:
        push     rbp
        sub      rsp, 64
        lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      qword ptr [rbp-0x28], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M13622_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      gword ptr [rbp-0x28], rax
        xor      eax, eax
        mov      qword ptr [rbp-0x18], rax
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x38], xmm0
        lea      rdi, [rbp-0x38]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rsi, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        call     [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        vmovsd   xmm0, qword ptr [rbp-0x38]
        mov      rsi, qword ptr [rbp-0x30]
        mov      rdi, gword ptr [rbp-0x28]
        mov      rax, gword ptr [rbp-0x28]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x18]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Contains(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
        nop      
-						;; size=139 bbWeight=1 PerfScore 40.33
+						;; size=80 bbWeight=1 PerfScore 27.58
 G_M13622_IG03:
        add      rsp, 64
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 174, prolog size 20, PerfScore 48.08, instruction count 41, allocated bytes for code 174 (MethodHash=c2bacac9) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
+; Total bytes of code 115, prolog size 20, PerfScore 35.33, instruction count 31, allocated bytes for code 115 (MethodHash=c2bacac9) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
-59 (-33.91 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this
 ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 loc0         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V04 tmp1         [V04    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V05 tmp2         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
 ;  V06 tmp3         [V06    ] (  1,  1   )  struct (16) [rbp-0x38]  do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;
 ; Lcl frame size = 64
 
 G_M55812_IG01:
        push     rbp
        sub      rsp, 64
        lea      rbp, [rsp+0x40]
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
        mov      qword ptr [rbp-0x28], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
 						;; size=29 bbWeight=1 PerfScore 6.00
 G_M55812_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x20], rax
-       mov      rax, gword ptr [rbp-0x20]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x20]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      gword ptr [rbp-0x28], rax
        xor      eax, eax
        mov      qword ptr [rbp-0x18], rax
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x38], xmm0
        lea      rdi, [rbp-0x38]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rsi, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        call     [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        vmovsd   xmm0, qword ptr [rbp-0x38]
        mov      rsi, qword ptr [rbp-0x30]
        mov      rdi, gword ptr [rbp-0x28]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Remove(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Remove(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
        nop      
-						;; size=139 bbWeight=1 PerfScore 38.58
+						;; size=80 bbWeight=1 PerfScore 25.83
 G_M55812_IG03:
        add      rsp, 64
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 174, prolog size 20, PerfScore 46.33, instruction count 40, allocated bytes for code 174 (MethodHash=9f4c25fb) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
+; Total bytes of code 115, prolog size 20, PerfScore 33.58, instruction count 30, allocated bytes for code 115 (MethodHash=9f4c25fb) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
-59 (-21.15 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this
 ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )   byref  ->  [rbp-0x18]  do-not-enreg[]
 ;  V03 loc0         [V03    ] (  1,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[] must-init class-hnd exact <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
 ;  V04 loc1         [V04    ] (  1,  1   )  struct ( 8) [rbp-0x28]  do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
 ;  V05 loc2         [V05    ] (  1,  1   )  struct (16) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [rbp-0x48]  do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
 ;  V09 tmp3         [V09    ] (  1,  1   )  struct (16) [rbp-0x58]  do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;  V10 tmp4         [V10    ] (  1,  1   )  struct (16) [rbp-0x68]  do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
 ;
 ; Lcl frame size = 112
 
 G_M26086_IG01:
        push     rbp
        sub      rsp, 112
        lea      rbp, [rsp+0x70]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x40], ymm8
        mov      qword ptr [rbp-0x20], rax
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      bword ptr [rbp-0x18], rsi
 						;; size=43 bbWeight=1 PerfScore 9.33
 G_M26086_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x40], rax
-       mov      rax, gword ptr [rbp-0x40]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x40]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rax, gword ptr [rbp-0x08]
        mov      rax, gword ptr [rax+0x18]
        mov      gword ptr [rbp-0x48], rax
        xor      eax, eax
        mov      qword ptr [rbp-0x28], rax
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x58], xmm0
        lea      rdi, [rbp-0x58]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rsi, qword ptr [rbp-0x28]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        call     [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
        vmovsd   xmm0, qword ptr [rbp-0x58]
        mov      rsi, qword ptr [rbp-0x50]
        mov      rdi, gword ptr [rbp-0x48]
        mov      rax, gword ptr [rbp-0x48]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x58]
        call     [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:FindNode(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this
        mov      gword ptr [rbp-0x20], rax
        cmp      gword ptr [rbp-0x20], 0
        jne      SHORT G_M26086_IG04
        mov      rax, bword ptr [rbp-0x18]
        xor      ecx, ecx
        mov      qword ptr [rax], rcx
        xor      eax, eax
-						;; size=159 bbWeight=1 PerfScore 46.58
+						;; size=100 bbWeight=1 PerfScore 33.83
 G_M26086_IG03:
        add      rsp, 112
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 G_M26086_IG04:
        mov      rdi, gword ptr [rbp-0x20]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:get_Item():System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:get_Item():System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:this
        vmovsd   qword ptr [rbp-0x68], xmm0
        mov      qword ptr [rbp-0x60], rax
        vmovups  xmm0, xmmword ptr [rbp-0x68]
        vmovups  xmmword ptr [rbp-0x38], xmm0
        lea      rdi, [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:get_Value():System.Nullable`1[int]:this
        call     [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:get_Value():System.Nullable`1[int]:this
        mov      rcx, bword ptr [rbp-0x18]
        mov      qword ptr [rcx], rax
        mov      eax, 1
 						;; size=65 bbWeight=1 PerfScore 19.25
 G_M26086_IG05:
        add      rsp, 112
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 279, prolog size 30, PerfScore 78.67, instruction count 67, allocated bytes for code 279 (MethodHash=fbd89a19) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
+; Total bytes of code 220, prolog size 30, PerfScore 65.92, instruction count 57, allocated bytes for code 220 (MethodHash=fbd89a19) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
-59 (-17.25 % of base) - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this
 ; Assembly listing for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; Tier0 code
 ; rbp based frame
 ; partially interruptible
 ; Final local variable assignments
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [rbp-0x08]  do-not-enreg[] this class-hnd <System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]>
 ;  V01 arg1         [V01    ] (  1,  1   )  double  ->  [rbp-0x10]  do-not-enreg[]
 ;  V02 arg2         [V02    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[S] <System.Nullable`1[int]>
 ;  V03 loc0         [V03    ] (  1,  1   )     int  ->  [rbp-0x1C]  do-not-enreg[]
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05    ] (  1,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[] must-init "Reusable Box Helper"
 ;  V06 tmp2         [V06    ] (  1,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[] must-init class-hnd exact "impImportAndPushBox" <System.String>
 ;  V07 tmp3         [V07    ] (  1,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <System.ArgumentException>
 ;  V08 tmp4         [V08    ] (  1,  1   )     ref  ->  [rbp-0x40]  do-not-enreg[] must-init "argument with side effect"
 ;  V09 tmp5         [V09    ] (  1,  1   )     ref  ->  [rbp-0x48]  do-not-enreg[] must-init "argument with side effect"
 ;
 ; Lcl frame size = 80
 
 G_M22574_IG01:
        push     rbp
        sub      rsp, 80
        lea      rbp, [rsp+0x50]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x40], ymm8
        mov      gword ptr [rbp-0x08], rdi
        vmovsd   qword ptr [rbp-0x10], xmm0
        mov      qword ptr [rbp-0x18], rsi
 						;; size=39 bbWeight=1 PerfScore 8.33
 G_M22574_IG02:
-       mov      rdi, 0xD1FFAB1E      ; System.Double
-       call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x28], rax
-       mov      rax, gword ptr [rbp-0x28]
-       vmovsd   xmm0, qword ptr [rbp-0x10]
-       vmovsd   qword ptr [rax+0x08], xmm0
-       mov      rdi, gword ptr [rbp-0x28]
-       mov      rsi, 0xD1FFAB1E      ; 'key'
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
-       call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rax, gword ptr [rbp-0x08]
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, gword ptr [rbp-0x08]
        mov      rcx, gword ptr [rax+0x18]
        mov      rax, gword ptr [rbp-0x08]
        mov      edx, dword ptr [rax+0x30]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        xor      esi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Array:BinarySearch[double](double[],int,int,double,System.Collections.Generic.IComparer`1[double]):int
        call     [rax]System.Array:BinarySearch[double](double[],int,int,double,System.Collections.Generic.IComparer`1[double]):int
        mov      dword ptr [rbp-0x1C], eax
        cmp      dword ptr [rbp-0x1C], 0
        jl       G_M22574_IG04
-						;; size=114 bbWeight=1 PerfScore 32.25
+						;; size=55 bbWeight=1 PerfScore 19.50
 G_M22574_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Double
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x28], rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Argument_AddingDuplicate():System.String
        call     [rax]System.SR:get_Argument_AddingDuplicate():System.String
        mov      gword ptr [rbp-0x30], rax
        mov      rax, gword ptr [rbp-0x28]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        vmovsd   qword ptr [rax+0x08], xmm0
        mov      rdi, 0xD1FFAB1E      ; System.ArgumentException
        call     CORINFO_HELP_NEWSFAST
        mov      gword ptr [rbp-0x38], rax
        mov      rsi, gword ptr [rbp-0x28]
        mov      rdi, gword ptr [rbp-0x30]
        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
        mov      gword ptr [rbp-0x40], rax
        mov      edi, 0x869
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      gword ptr [rbp-0x48], rax
        mov      rsi, gword ptr [rbp-0x40]
        mov      rdx, gword ptr [rbp-0x48]
        mov      rdi, gword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentException:.ctor(System.String,System.String):this
        call     [rax]System.ArgumentException:.ctor(System.String,System.String):this
        mov      rdi, gword ptr [rbp-0x38]
        call     CORINFO_HELP_THROW
        int3     
 						;; size=150 bbWeight=0 PerfScore 0.00
 G_M22574_IG04:
        mov      eax, dword ptr [rbp-0x1C]
        mov      esi, eax
        not      esi
        mov      rdi, gword ptr [rbp-0x08]
        vmovsd   xmm0, qword ptr [rbp-0x10]
        mov      rdx, qword ptr [rbp-0x18]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this
        call     [rax]System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this
        nop      
 						;; size=33 bbWeight=1 PerfScore 10.00
 G_M22574_IG05:
        add      rsp, 80
        pop      rbp
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 342, prolog size 26, PerfScore 52.33, instruction count 74, allocated bytes for code 342 (MethodHash=8f1ea7d1) for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 283, prolog size 26, PerfScore 39.58, instruction count 64, allocated bytes for code 283 (MethodHash=8f1ea7d1) for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 13, 2024

@EgorBo

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