MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [EgorBo] JIT: Bulk copy of byrefs #362

Open MihuBot opened 2 months ago

MihuBot commented 2 months ago

Build completed in 32 minutes. https://github.com/dotnet/runtime/pull/101761

Diffs

Diffs ``` Found 260 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 38861902 Total bytes of diff: 38856617 Total bytes of delta: -5285 (-0.01 % of base) Total relative delta: Infinity diff is an improvement. relative diff is a regression. Top file regressions (bytes): 41 : System.Net.Sockets.dasm (0.02 % of base) Top file improvements (bytes): -5315 : System.Collections.Immutable.dasm (-0.25 % of base) -11 : ILCompiler.Reflection.ReadyToRun.dasm (-0.00 % of base) 3 total files with Code Size differences (2 improved, 1 regressed), 253 unchanged. Top method regressions (bytes): 41 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:UnregisterSocket(long):this (FullOpts) Top method improvements (bytes): -52 (-9.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -52 (-9.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) -52 (-8.87 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -51 (-5.34 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -51 (-5.73 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -51 (-5.69 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]:this (FullOpts) -51 (-5.32 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -51 (-5.69 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -49 (-5.59 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -49 (-5.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts) -49 (-5.55 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -49 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts) -49 (-5.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-8.76 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) -48 (-8.54 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -46 (-8.61 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-7.10 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-5.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (FullOpts) -13 (-5.83 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) Top method regressions (percentages): 41 (Infinity of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEngine:UnregisterSocket(long):this (FullOpts) Top method improvements (percentages): -52 (-9.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -13 (-9.92 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.85 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -52 (-9.68 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -13 (-9.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Builder[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -52 (-9.47 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+Builder[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -52 (-9.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) -52 (-9.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.27 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -11 (-9.24 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.Generic.IEnumerable.GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) -46 (-9.09 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1+NodeEnumerable[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -46 (-9.07 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[ubyte]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[double,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[int,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[short,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) -48 (-9.02 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[ubyte,System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[double]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[long]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[short]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -11 (-8.94 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.Numerics.Vector`1[float]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) 219 total methods with Code Size differences (218 improved, 1 regressed), 240319 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 2 months ago

Top method improvements

-52 (-9.40 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this ```diff ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T03] ( 3, 3 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T04] ( 3, 3 ) ref -> rbx this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V03 tmp2 [V03,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ; V04 tmp3 [V04 ] ( 4, 8 ) struct (160) [rbp-0xC0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" ; V05 tmp4 [V05,T00] ( 4, 7 ) ref -> rbx class-hnd exact single-def "Inlining Arg" ; V06 tmp5 [V06 ] ( 14, 20 ) struct (32) [rbp-0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" ;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref ;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref ;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 tmp9 [V10 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "impAppendStmt" -; V11 tmp10 [V11,T07] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -; V12 tmp11 [V12,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -;* V13 tmp12 [V13,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V11 tmp10 [V11,T09] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V12 tmp11 [V12,T06] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +;* V13 tmp12 [V13,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp13 [V14 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" -; V15 tmp14 [V15,T08] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" +; V15 tmp14 [V15,T10] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" ;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" -; V18 tmp17 [V18,T04] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V18 tmp17 [V18,T05] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" ;* V20 tmp19 [V20 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" ;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V22 tmp21 [V22,T06] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +; V22 tmp21 [V22,T07] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" ; V23 tmp22 [V23 ] ( 5, 5.50) ref -> [rbp-0xE0] do-not-enreg[X] addr-exposed "field V06._root (fldOffset=0x0)" P-DEP ; V24 tmp23 [V24 ] ( 7, 6 ) ref -> [rbp-0xD8] do-not-enreg[X] addr-exposed "field V06._stack (fldOffset=0x8)" P-DEP ; V25 tmp24 [V25 ] ( 3, 4 ) ref -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V06._current (fldOffset=0x10)" P-DEP ; V26 tmp25 [V26 ] ( 5, 5 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed "field V06._poolUserId (fldOffset=0x18)" P-DEP ;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref "field V14._root (fldOffset=0x0)" P-INDEP ;* V28 tmp27 [V28 ] ( 0, 0 ) ref -> zero-ref "field V14._stack (fldOffset=0x8)" P-INDEP ;* V29 tmp28 [V29 ] ( 0, 0 ) ref -> zero-ref "field V14._current (fldOffset=0x10)" P-INDEP -; V30 tmp29 [V30,T09] ( 3, 1.50) int -> r14 "field V14._poolUserId (fldOffset=0x18)" P-INDEP +; V30 tmp29 [V30,T11] ( 3, 1.50) int -> r14 "field V14._poolUserId (fldOffset=0x18)" P-INDEP ;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._root (fldOffset=0x0)" P-INDEP ;* V32 tmp31 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._stack (fldOffset=0x8)" P-INDEP ;* V33 tmp32 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._current (fldOffset=0x10)" P-INDEP ;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref "field V20._poolUserId (fldOffset=0x18)" P-INDEP ;* V35 tmp34 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "V10.[000..008)" ;* V36 tmp35 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "V10.[008..016)" ;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "V10.[016..024)" -; V38 tmp37 [V38,T11] ( 2, 1 ) int -> r14 "V10.[024..028)" +; V38 tmp37 [V38,T13] ( 2, 1 ) int -> r14 "V10.[024..028)" +; V39 rat0 [V39,T03] ( 3, 6 ) byref -> rdi "fgMakeTemp is creating a new local variable" +; V40 rat1 [V40,T08] ( 2, 4 ) byref -> rdi "argument with side effect" ; ; Lcl frame size = 192 G_M46956_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 192 lea rbp, [rsp+0xE0] vxorps xmm8, xmm8, xmm8 mov rax, -192 vmovdqa xmmword ptr [rbp+rax-0x20], xmm8 vmovdqa xmmword ptr [rbp+rax-0x10], xmm8 vmovdqa xmmword ptr [rax+rbp], xmm8 add rax, 48 jne SHORT -5 instr mov rbx, rdi ;; size=64 bbWeight=1 PerfScore 13.83 G_M46956_IG02: mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]] call CORINFO_HELP_NEWSFAST mov r15, rax mov rbx, gword ptr [rbx+0x08] test rbx, rbx je G_M46956_IG09 mov gword ptr [rbp-0xE0], rbx xor rax, rax mov gword ptr [rbp-0xD0], rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int call [rax]System.Collections.Immutable.SecureObjectPool:NewId():int mov dword ptr [rbp-0xC8], eax xor rsi, rsi mov gword ptr [rbp-0xD8], rsi mov rsi, gword ptr [rbp-0xE0] cmp gword ptr [rsi+0x08], 0 je G_M46956_IG06 ;; size=92 bbWeight=1 PerfScore 17.50 G_M46956_IG03: mov r14d, dword ptr [rbp-0xC8] cmp r14d, -1 je SHORT G_M46956_IG04 lea rsi, [rbp-0xD8] mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte test eax, eax je SHORT G_M46956_IG04 mov rdi, gword ptr [rbp-0xD8] mov dword ptr [rdi+0x10], r14d jmp SHORT G_M46956_IG05 ;; size=59 bbWeight=0.50 PerfScore 5.75 G_M46956_IG04: xor rdi, rdi mov gword ptr [rbp-0xD8], rdi mov r14d, dword ptr [rbp-0xC8] mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]] call CORINFO_HELP_NEWSFAST mov r13, rax movzx rsi, byte ptr [rbx+0x1D] mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]] call CORINFO_HELP_NEWSFAST mov rbx, rax lea rdi, bword ptr [rbx+0x08] mov rsi, r13 call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x10], r14d mov gword ptr [rbp-0xD8], rbx ;; size=95 bbWeight=0.50 PerfScore 7.25 G_M46956_IG05: lea rdi, [rbp-0xE0] mov rsi, gword ptr [rbp-0xE0] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this ;; size=26 bbWeight=0.50 PerfScore 2.38 G_M46956_IG06: vmovdqu ymm0, ymmword ptr [rbp-0xE0] vmovdqu ymmword ptr [rbp-0xB0], ymm0 ;; size=16 bbWeight=1 PerfScore 5.00 G_M46956_IG07: vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [rbp-0x90], ymm0 vmovdqu ymmword ptr [rbp-0x70], ymm0 vmovdqu ymmword ptr [rbp-0x50], ymm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 mov dword ptr [rbp-0xB8], -1 lea rdi, bword ptr [r15+0x08] - lea rsi, bword ptr [rbp-0xC0] - call CORINFO_HELP_ASSIGN_BYREF - movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - call CORINFO_HELP_ASSIGN_BYREF - mov ecx, 5 - rep movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + cmp byte ptr [rdi], dil + lea rsi, [rbp-0xC0] + mov edx, 72 + call CORINFO_HELP_ASSIGN_STRUCT mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.DictionaryEnumerator`2[System.Numerics.Vector`1[float],System.Nullable`1[int]] call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, r15 lea rdi, bword ptr [rbx+0x08] call CORINFO_HELP_ASSIGN_REF mov rax, rbx - ;; size=146 bbWeight=1 PerfScore 50.08 + ;; size=94 bbWeight=1 PerfScore 14.08 G_M46956_IG08: vzeroupper add rsp, 192 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=19 bbWeight=1 PerfScore 4.75 G_M46956_IG09: mov edi, 0x45F mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String) call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 553, prolog size 61, PerfScore 106.54, instruction count 115, allocated bytes for code 553 (MethodHash=0c354893) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) +; Total bytes of code 501, prolog size 61, PerfScore 70.54, instruction count 101, allocated bytes for code 501 (MethodHash=0c354893) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IDictionary.GetEnumerator():System.Collections.IDictionaryEnumerator:this (FullOpts) ```
-52 (-9.94 % of base) - System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this ```diff ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 11 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T02] ( 3, 3 ) ref -> rbx this class-hnd single-def +; V00 this [V00,T03] ( 3, 3 ) ref -> rbx this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V03 tmp2 [V03 ] ( 4, 8 ) struct (160) [rbp-0xC0] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" ; V04 tmp3 [V04,T00] ( 4, 7 ) ref -> rbx class-hnd exact single-def "Inlining Arg" ; V05 tmp4 [V05 ] ( 14, 20 ) struct (32) [rbp-0xE0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" ;* V06 tmp5 [V06 ] ( 0, 0 ) byref -> zero-ref ;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref ;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp8 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "impAppendStmt" -; V10 tmp9 [V10,T05] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" -; V11 tmp10 [V11,T04] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -;* V12 tmp11 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp9 [V10,T07] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +; V11 tmp10 [V11,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp12 [V13 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" -; V14 tmp13 [V14,T06] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" +; V14 tmp13 [V14,T08] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" ;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" -; V17 tmp16 [V17,T03] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V17 tmp16 [V17,T04] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" ;* V19 tmp18 [V19 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V21 tmp20 [V21 ] ( 5, 5.50) ref -> [rbp-0xE0] do-not-enreg[X] addr-exposed "field V05._root (fldOffset=0x0)" P-DEP ; V22 tmp21 [V22 ] ( 7, 6 ) ref -> [rbp-0xD8] do-not-enreg[X] addr-exposed "field V05._stack (fldOffset=0x8)" P-DEP ; V23 tmp22 [V23 ] ( 3, 4 ) ref -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V05._current (fldOffset=0x10)" P-DEP ; V24 tmp23 [V24 ] ( 5, 5 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed "field V05._poolUserId (fldOffset=0x18)" P-DEP ;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13._root (fldOffset=0x0)" P-INDEP ;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref "field V13._stack (fldOffset=0x8)" P-INDEP ;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref "field V13._current (fldOffset=0x10)" P-INDEP -; V28 tmp27 [V28,T07] ( 3, 1.50) int -> r14 "field V13._poolUserId (fldOffset=0x18)" P-INDEP +; V28 tmp27 [V28,T09] ( 3, 1.50) int -> r14 "field V13._poolUserId (fldOffset=0x18)" P-INDEP ;* V29 tmp28 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._root (fldOffset=0x0)" P-INDEP ;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._stack (fldOffset=0x8)" P-INDEP ;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._current (fldOffset=0x10)" P-INDEP ;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V19._poolUserId (fldOffset=0x18)" P-INDEP ;* V33 tmp32 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[000..008)" ;* V34 tmp33 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)" ;* V35 tmp34 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[016..024)" -; V36 tmp35 [V36,T09] ( 2, 1 ) int -> r14 "V09.[024..028)" +; V36 tmp35 [V36,T11] ( 2, 1 ) int -> r14 "V09.[024..028)" +; V37 rat0 [V37,T02] ( 3, 6 ) byref -> rdi "fgMakeTemp is creating a new local variable" +; V38 rat1 [V38,T06] ( 2, 4 ) byref -> rdi "argument with side effect" ; ; Lcl frame size = 192 G_M12866_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 192 lea rbp, [rsp+0xE0] vxorps xmm8, xmm8, xmm8 mov rax, -192 vmovdqa xmmword ptr [rbp+rax-0x20], xmm8 vmovdqa xmmword ptr [rbp+rax-0x10], xmm8 vmovdqa xmmword ptr [rax+rbp], xmm8 add rax, 48 jne SHORT -5 instr mov rbx, rdi ;; size=64 bbWeight=1 PerfScore 13.83 G_M12866_IG02: mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]] call CORINFO_HELP_NEWSFAST mov r15, rax mov rbx, gword ptr [rbx+0x08] test rbx, rbx je G_M12866_IG09 mov gword ptr [rbp-0xE0], rbx xor rax, rax mov gword ptr [rbp-0xD0], rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int call [rax]System.Collections.Immutable.SecureObjectPool:NewId():int mov dword ptr [rbp-0xC8], eax xor rsi, rsi mov gword ptr [rbp-0xD8], rsi mov rsi, gword ptr [rbp-0xE0] cmp gword ptr [rsi+0x08], 0 je G_M12866_IG06 ;; size=92 bbWeight=1 PerfScore 17.50 G_M12866_IG03: mov r14d, dword ptr [rbp-0xC8] cmp r14d, -1 je SHORT G_M12866_IG04 lea rsi, [rbp-0xD8] mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte test eax, eax je SHORT G_M12866_IG04 mov rdi, gword ptr [rbp-0xD8] mov dword ptr [rdi+0x10], r14d jmp SHORT G_M12866_IG05 ;; size=59 bbWeight=0.50 PerfScore 5.75 G_M12866_IG04: xor rdi, rdi mov gword ptr [rbp-0xD8], rdi mov r14d, dword ptr [rbp-0xC8] mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]] call CORINFO_HELP_NEWSFAST mov r13, rax movzx rsi, byte ptr [rbx+0x1D] mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]] call CORINFO_HELP_NEWSFAST mov rbx, rax lea rdi, bword ptr [rbx+0x08] mov rsi, r13 call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x10], r14d mov gword ptr [rbp-0xD8], rbx ;; size=95 bbWeight=0.50 PerfScore 7.25 G_M12866_IG05: lea rdi, [rbp-0xE0] mov rsi, gword ptr [rbp-0xE0] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this ;; size=26 bbWeight=0.50 PerfScore 2.38 G_M12866_IG06: vmovdqu ymm0, ymmword ptr [rbp-0xE0] vmovdqu ymmword ptr [rbp-0xB0], ymm0 ;; size=16 bbWeight=1 PerfScore 5.00 G_M12866_IG07: vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [rbp-0x90], ymm0 vmovdqu ymmword ptr [rbp-0x70], ymm0 vmovdqu ymmword ptr [rbp-0x50], ymm0 vmovdqu xmmword ptr [rbp-0x30], xmm0 mov dword ptr [rbp-0xB8], -1 lea rdi, bword ptr [r15+0x08] - lea rsi, bword ptr [rbp-0xC0] - call CORINFO_HELP_ASSIGN_BYREF - movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - call CORINFO_HELP_ASSIGN_BYREF - mov ecx, 5 - rep movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + cmp byte ptr [rdi], dil + lea rsi, [rbp-0xC0] + mov edx, 72 + call CORINFO_HELP_ASSIGN_STRUCT mov rax, r15 - ;; size=116 bbWeight=1 PerfScore 46.83 + ;; size=64 bbWeight=1 PerfScore 10.83 G_M12866_IG08: vzeroupper add rsp, 192 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=19 bbWeight=1 PerfScore 4.75 G_M12866_IG09: mov edi, 0x45F mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String) call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 523, prolog size 61, PerfScore 103.29, instruction count 109, allocated bytes for code 523 (MethodHash=8ba9cdbd) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) +; Total bytes of code 471, prolog size 61, PerfScore 67.29, instruction count 95, allocated bytes for code 471 (MethodHash=8ba9cdbd) for method System.Collections.Immutable.ImmutableDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) ```
-52 (-9.35 % of base) - System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this ```diff ; Assembly listing for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 6 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V03 tmp2 [V03 ] ( 5, 10 ) struct (160) [rbp-0xC8] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" ; V04 tmp3 [V04,T01] ( 4, 7 ) ref -> r14 class-hnd exact single-def "Inlining Arg" ; V05 tmp4 [V05 ] ( 14, 20 ) struct (32) [rbp-0xE8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" ;* V06 tmp5 [V06 ] ( 0, 0 ) byref -> zero-ref -; V07 tmp6 [V07,T06] ( 2, 2 ) byref -> rcx single-def -; V08 tmp7 [V08,T08] ( 2, 2 ) int -> rdi +; V07 tmp6 [V07,T08] ( 2, 2 ) byref -> rdi single-def +; V08 tmp7 [V08,T10] ( 2, 2 ) int -> rsi ;* V09 tmp8 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "impAppendStmt" -; V10 tmp9 [V10,T05] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" -; V11 tmp10 [V11,T04] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" -;* V12 tmp11 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp9 [V10,T07] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" +; V11 tmp10 [V11,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" +;* V12 tmp11 [V12,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp12 [V13 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" -; V14 tmp13 [V14,T07] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" +; V14 tmp13 [V14,T09] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" ;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" -; V17 tmp16 [V17,T03] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" +; V17 tmp16 [V17,T04] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" ;* V19 tmp18 [V19 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" ;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V21 tmp20 [V21 ] ( 5, 5.50) ref -> [rbp-0xE8] do-not-enreg[X] addr-exposed "field V05._root (fldOffset=0x0)" P-DEP ; V22 tmp21 [V22 ] ( 7, 6 ) ref -> [rbp-0xE0] do-not-enreg[X] addr-exposed "field V05._stack (fldOffset=0x8)" P-DEP ; V23 tmp22 [V23 ] ( 3, 4 ) ref -> [rbp-0xD8] do-not-enreg[X] addr-exposed "field V05._current (fldOffset=0x10)" P-DEP ; V24 tmp23 [V24 ] ( 5, 5 ) int -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V05._poolUserId (fldOffset=0x18)" P-DEP ;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref "field V13._root (fldOffset=0x0)" P-INDEP ;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref "field V13._stack (fldOffset=0x8)" P-INDEP ;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref "field V13._current (fldOffset=0x10)" P-INDEP -; V28 tmp27 [V28,T09] ( 3, 1.50) int -> r13 "field V13._poolUserId (fldOffset=0x18)" P-INDEP +; V28 tmp27 [V28,T11] ( 3, 1.50) int -> r13 "field V13._poolUserId (fldOffset=0x18)" P-INDEP ;* V29 tmp28 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._root (fldOffset=0x0)" P-INDEP ;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._stack (fldOffset=0x8)" P-INDEP ;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._current (fldOffset=0x10)" P-INDEP ;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V19._poolUserId (fldOffset=0x18)" P-INDEP ;* V33 tmp32 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[000..008)" ;* V34 tmp33 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)" ;* V35 tmp34 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[016..024)" -; V36 tmp35 [V36,T11] ( 2, 1 ) int -> r13 "V09.[024..028)" +; V36 tmp35 [V36,T13] ( 2, 1 ) int -> r13 "V09.[024..028)" +; V37 rat0 [V37,T03] ( 3, 6 ) byref -> rdi "fgMakeTemp is creating a new local variable" +; V38 rat1 [V38,T06] ( 2, 4 ) byref -> rdi "argument with side effect" ; ; Lcl frame size = 200 G_M25738_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 200 lea rbp, [rsp+0xF0] xor eax, eax mov qword ptr [rbp-0xE8], rax vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0xE0], ymm8 vmovdqu ymmword ptr [rbp-0xC0], ymm8 vmovdqu ymmword ptr [rbp-0xA0], ymm8 vmovdqu ymmword ptr [rbp-0x80], ymm8 vmovdqu ymmword ptr [rbp-0x60], ymm8 vmovdqa xmmword ptr [rbp-0x40], xmm8 mov qword ptr [rbp-0x30], rax mov rbx, rdi ;; size=85 bbWeight=1 PerfScore 21.58 G_M25738_IG02: mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.Numerics.Vector`1[float],System.Nullable`1[int]] call CORINFO_HELP_NEWSFAST mov r15, rax mov r14, gword ptr [rbx+0x08] mov gword ptr [rbp-0xC8], rbx test r14, r14 je G_M25738_IG09 mov gword ptr [rbp-0xE8], r14 xor rax, rax mov gword ptr [rbp-0xD8], rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SecureObjectPool:NewId():int call [rax]System.Collections.Immutable.SecureObjectPool:NewId():int mov dword ptr [rbp-0xD0], eax xor rsi, rsi mov gword ptr [rbp-0xE0], rsi mov rsi, gword ptr [rbp-0xE8] cmp gword ptr [rsi+0x08], 0 je G_M25738_IG06 ;; size=99 bbWeight=1 PerfScore 18.50 G_M25738_IG03: mov r13d, dword ptr [rbp-0xD0] cmp r13d, -1 je SHORT G_M25738_IG04 lea rsi, [rbp-0xE0] mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.AllocFreeConcurrentStack`1[System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]]] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte call [rax]System.Collections.Immutable.AllocFreeConcurrentStack`1[System.__Canon]:TryTake(byref):ubyte test eax, eax je SHORT G_M25738_IG04 mov rdi, gword ptr [rbp-0xE0] mov dword ptr [rdi+0x10], r13d jmp SHORT G_M25738_IG05 ;; size=59 bbWeight=0.50 PerfScore 5.75 G_M25738_IG04: xor rdi, rdi mov gword ptr [rbp-0xE0], rdi mov r13d, dword ptr [rbp-0xD0] mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]] call CORINFO_HELP_NEWSFAST mov r12, rax movzx rsi, byte ptr [r14+0x1D] mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this call [rax]System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.__Canon]]:.ctor(int):this mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.SecurePooledObject`1[System.Collections.Generic.Stack`1[System.Collections.Immutable.RefAsValueType`1[System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]]]] call CORINFO_HELP_NEWSFAST mov r14, rax lea rdi, bword ptr [r14+0x08] mov rsi, r12 call CORINFO_HELP_ASSIGN_REF mov dword ptr [r14+0x10], r13d mov gword ptr [rbp-0xE0], r14 ;; size=95 bbWeight=0.50 PerfScore 7.25 G_M25738_IG05: lea rdi, [rbp-0xE8] mov rsi, gword ptr [rbp-0xE8] mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this call [rax]System.Collections.Immutable.SortedInt32KeyNode`1+Enumerator[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:PushLeft(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.Numerics.Vector`1[float],System.Nullable`1[int]]]):this ;; size=26 bbWeight=0.50 PerfScore 2.38 G_M25738_IG06: vmovdqu ymm0, ymmword ptr [rbp-0xE8] vmovdqu ymmword ptr [rbp-0xB8], ymm0 ;; size=16 bbWeight=1 PerfScore 5.00 G_M25738_IG07: vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [rbp-0x98], ymm0 vmovdqu ymmword ptr [rbp-0x78], ymm0 vmovdqu ymmword ptr [rbp-0x58], ymm0 vmovdqu xmmword ptr [rbp-0x38], xmm0 - lea rcx, bword ptr [rbp-0xC8] - mov edi, dword ptr [rbx+0x2C] - mov dword ptr [rcx+0x08], edi + lea rdi, bword ptr [rbp-0xC8] + mov esi, dword ptr [rbx+0x2C] + mov dword ptr [rdi+0x08], esi lea rdi, bword ptr [r15+0x08] - lea rsi, bword ptr [rbp-0xC8] - call CORINFO_HELP_ASSIGN_BYREF - movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - call CORINFO_HELP_ASSIGN_BYREF - mov ecx, 5 - rep movsq - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - call CORINFO_HELP_ASSIGN_BYREF - movsq - movsq - movsq + cmp byte ptr [rdi], dil + lea rsi, [rbp-0xC8] + mov edx, 72 + call CORINFO_HELP_ASSIGN_STRUCT mov rax, r15 - ;; size=119 bbWeight=1 PerfScore 49.33 + ;; size=67 bbWeight=1 PerfScore 13.33 G_M25738_IG08: vzeroupper add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=21 bbWeight=1 PerfScore 5.25 G_M25738_IG09: mov edi, 0x45F mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:FailArgumentNullException(System.String) call [rax]System.Collections.Immutable.Requires:FailArgumentNullException(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 556, prolog size 82, PerfScore 115.04, instruction count 117, allocated bytes for code 556 (MethodHash=b1859b75) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) +; Total bytes of code 504, prolog size 82, PerfScore 79.04, instruction count 103, allocated bytes for code 504 (MethodHash=b1859b75) for method System.Collections.Immutable.ImmutableDictionary`2+Builder[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) ```

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

MihuBot commented 2 months ago

@EgorBo