Remove relocations for vtable chunks (dotnet/coreclr#17147)
authorGleb Balykov <g.balykov@samsung.com>
Fri, 29 Jun 2018 14:25:17 +0000 (17:25 +0300)
committerJan Kotas <jkotas@microsoft.com>
Fri, 29 Jun 2018 14:25:17 +0000 (07:25 -0700)
commit7d6c1a52d903d5af6b1d6d56521400678191a9c0
tree71eeb1f4b8f348a92fcf7d196cfd4bd704ceb859
parent433449736c00889ef66b5100bf521192e14e0773
Remove relocations for vtable chunks (dotnet/coreclr#17147)

* Separate sections READONLY_VCHUNKS and READONLY_DICTIONARY

* Remove relocations for second-level indirection of Vtable in case FEATURE_NGEN_RELOCS_OPTIMIZATIONS is enabled.

Introduce FEATURE_NGEN_RELOCS_OPTIMIZATIONS, under which NGEN specific relocations optimizations are enabled

* Replace push/pop of R11 in stubs with
  - str/ldr of R4 in space reserved in epilog for non-tail calls
  - usage of R4 with hybrid-tail calls (same as for EmitShuffleThunk)

* Replace push/pop of R11 for function epilog with usage of LR as helper register right before its restore from stack

Commit migrated from https://github.com/dotnet/coreclr/commit/61146b5c5851698e113e936d4e4b51b628095f27
23 files changed:
src/coreclr/clrdefinitions.cmake
src/coreclr/src/debug/daccess/nidump.cpp
src/coreclr/src/debug/daccess/nidump.h
src/coreclr/src/inc/corcompile.h
src/coreclr/src/inc/corinfo.h
src/coreclr/src/inc/fixuppointer.h
src/coreclr/src/jit/codegencommon.cpp
src/coreclr/src/jit/importer.cpp
src/coreclr/src/jit/lower.cpp
src/coreclr/src/jit/lower.h
src/coreclr/src/jit/morph.cpp
src/coreclr/src/vm/arm/stubs.cpp
src/coreclr/src/vm/array.cpp
src/coreclr/src/vm/dataimage.cpp
src/coreclr/src/vm/generics.cpp
src/coreclr/src/vm/jitinterface.cpp
src/coreclr/src/vm/method.cpp
src/coreclr/src/vm/method.hpp
src/coreclr/src/vm/methodtable.cpp
src/coreclr/src/vm/methodtable.h
src/coreclr/src/vm/methodtable.inl
src/coreclr/src/vm/methodtablebuilder.cpp
src/coreclr/src/zap/zapimage.cpp