Remove relocations for vtable chunks (#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)
commit61146b5c5851698e113e936d4e4b51b628095f27
tree7b9d9eec971076fe30fa47244bff066b75ac0b09
parent1ad9c94ef5e541e9c8ac29606515d6f54e0e445c
Remove relocations for vtable chunks (#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
23 files changed:
clrdefinitions.cmake
src/debug/daccess/nidump.cpp
src/debug/daccess/nidump.h
src/inc/corcompile.h
src/inc/corinfo.h
src/inc/fixuppointer.h
src/jit/codegencommon.cpp
src/jit/importer.cpp
src/jit/lower.cpp
src/jit/lower.h
src/jit/morph.cpp
src/vm/arm/stubs.cpp
src/vm/array.cpp
src/vm/dataimage.cpp
src/vm/generics.cpp
src/vm/jitinterface.cpp
src/vm/method.cpp
src/vm/method.hpp
src/vm/methodtable.cpp
src/vm/methodtable.h
src/vm/methodtable.inl
src/vm/methodtablebuilder.cpp
src/zap/zapimage.cpp