Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2017-11-16 13:22:33 +0300
committerGitHub <noreply@github.com>2017-11-16 13:22:33 +0300
commit39f8c0743655ebec09a0bdd043ae4031825c7042 (patch)
tree561c758dc7808278abbec60349c05f6ac3e27dda /src/System.Private.Jit
parent3db234ddbb11315d8d44747bb837ac65db475fed (diff)
Implement efficient/correct Comparer.get_Default and EqualityComparer.get_Default (#4935)
This work has several parts that largely hook up into the existing infrastructure in the class library we built for Project N. 1. Generate specialized method bodies for Comparer.Create and EqualityComparer.Create that create the right comparer specialized for the given T (if T implement the interface, doesn't implement the interface, is nullable, or is an enum) 2. If specialization is not possible at compile time, fall back to using template type loader to load the right type. 3. Add code that ensures appropriate templates get generated. This is a bit of a divergence from what Project N does because there we don't track precisely what we need and rely on universal shared code to fill in the blanks. 4. Enable RyuJIT optimization around EqualityComparer.get_Default that lets us devirtualize subsequent calls on the result of the intrinsic.
Diffstat (limited to 'src/System.Private.Jit')
-rw-r--r--src/System.Private.Jit/src/System.Private.Jit.csproj1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/System.Private.Jit/src/System.Private.Jit.csproj b/src/System.Private.Jit/src/System.Private.Jit.csproj
index db1d659f2..5df579bb4 100644
--- a/src/System.Private.Jit/src/System.Private.Jit.csproj
+++ b/src/System.Private.Jit/src/System.Private.Jit.csproj
@@ -66,6 +66,7 @@
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\AddrOfIntrinsic.cs" />
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\ArrayMethodILEmitter.cs" />
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\CalliIntrinsic.cs" />
+ <Compile Include="$(TypeSystemBasePath)\IL\Stubs\ComparerIntrinsics.cs" />
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\DelegateMarshallingMethodThunk.cs" />
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\ForwardDelegateCreationThunk.cs" />
<Compile Include="$(TypeSystemBasePath)\IL\Stubs\EETypePtrOfIntrinsic.cs" />