diff options
author | Koundinya Veluri <kouvel@microsoft.com> | 2015-10-09 11:36:25 -0700 |
---|---|---|
committer | Koundinya Veluri <kouvel@microsoft.com> | 2015-10-12 13:52:12 -0700 |
commit | 2753a8e8f39aad2188d3dc056a4b971323bf4110 (patch) | |
tree | 2ae9db0d7bdd293dc9db533303330ad898a52764 /src/vm/jitinterfacegen.cpp | |
parent | 1a729f8c93d03e305a1d830c9e65ca05185adcd1 (diff) | |
download | coreclr-2753a8e8f39aad2188d3dc056a4b971323bf4110.tar.gz coreclr-2753a8e8f39aad2188d3dc056a4b971323bf4110.tar.bz2 coreclr-2753a8e8f39aad2188d3dc056a4b971323bf4110.zip |
Add some fast paths that are missing outside Windows
- Allocation fast path for arrays of object elements
- On Linux, a microbenchmark is 25% faster with the portable fast path
- On Windows with the asm fast path, the microbenchmark was 52% faster than on Linux before, and is now 22% faster with the portable fast path
- On Windows, the portable fast path is within 4% slower than the asm fast path
- Allocation fast path for objects
- On Linux, a microbenchmark is 200% faster with the portable fast path
- On Windows with the asm fast path, the microbenchmark was 325% faster than on Linux before, and is now 43% faster with the portable fast path
- On Windows, the portable fast path is within 1% slower than the asm fast path
- Skipped the Box fast path since that seems to be inlined into jitted code using the new object fast path. As a result of adding the new object fast path, boxing perf has also improved outside Windows similarly to above.
Diffstat (limited to 'src/vm/jitinterfacegen.cpp')
-rw-r--r-- | src/vm/jitinterfacegen.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vm/jitinterfacegen.cpp b/src/vm/jitinterfacegen.cpp index e93a40a0bc..5cf1de911c 100644 --- a/src/vm/jitinterfacegen.cpp +++ b/src/vm/jitinterfacegen.cpp @@ -225,7 +225,10 @@ void InitJITHelpers1() if (GCHeap::UseAllocationContexts()) { #ifdef FEATURE_IMPLICIT_TLS + SetJitHelperFunction(CORINFO_HELP_NEWSFAST, JIT_NewS_MP_FastPortable); + SetJitHelperFunction(CORINFO_HELP_NEWSFAST_ALIGN8, JIT_NewS_MP_FastPortable); SetJitHelperFunction(CORINFO_HELP_NEWARR_1_VC, JIT_NewArr1VC_MP_FastPortable); + SetJitHelperFunction(CORINFO_HELP_NEWARR_1_OBJ, JIT_NewArr1OBJ_MP_FastPortable); #else // !FEATURE_IMPLICIT_TLS // If the TLS for Thread is low enough use the super-fast helpers if (gThreadTLSIndex < TLS_MINIMUM_AVAILABLE) |