Add some fast paths that are missing outside Windows
authorKoundinya Veluri <kouvel@microsoft.com>
Fri, 9 Oct 2015 18:36:25 +0000 (11:36 -0700)
committerKoundinya Veluri <kouvel@microsoft.com>
Mon, 12 Oct 2015 20:52:12 +0000 (13:52 -0700)
commit14eaefab6f75cac7337185ec5130ebcbbad2d157
treef1b5a2fab1761a40aa9d17ca37868d108d18e603
parent7a6cad1ca3aea5ef3360ef950e435512d5c8cbad
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.

Commit migrated from https://github.com/dotnet/coreclr/commit/2753a8e8f39aad2188d3dc056a4b971323bf4110
src/coreclr/src/vm/jithelpers.cpp
src/coreclr/src/vm/jitinterface.h
src/coreclr/src/vm/jitinterfacegen.cpp
src/coreclr/src/vm/object.h