summaryrefslogtreecommitdiff
path: root/src/vm/jitinterfacegen.cpp
diff options
context:
space:
mode:
authorKoundinya Veluri <kouvel@microsoft.com>2015-10-09 11:36:25 -0700
committerKoundinya Veluri <kouvel@microsoft.com>2015-10-12 13:52:12 -0700
commit2753a8e8f39aad2188d3dc056a4b971323bf4110 (patch)
tree2ae9db0d7bdd293dc9db533303330ad898a52764 /src/vm/jitinterfacegen.cpp
parent1a729f8c93d03e305a1d830c9e65ca05185adcd1 (diff)
downloadcoreclr-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.cpp3
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)