diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2018-06-29 17:25:17 +0300 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2018-09-18 15:49:14 +0300 |
commit | ef670ab6e5db223d8b31738b02bb763d3e135ad2 (patch) | |
tree | 78bcdf1c6087c4fd04b333468c7be80b4111a5ac /src/vm/array.cpp | |
parent | d424bb734ce61bc98d1cfab815c48c5ad1d01d5e (diff) | |
download | coreclr-ef670ab6e5db223d8b31738b02bb763d3e135ad2.tar.gz coreclr-ef670ab6e5db223d8b31738b02bb763d3e135ad2.tar.bz2 coreclr-ef670ab6e5db223d8b31738b02bb763d3e135ad2.zip |
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
Diffstat (limited to 'src/vm/array.cpp')
-rw-r--r-- | src/vm/array.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/vm/array.cpp b/src/vm/array.cpp index 6c58fe727b..9295c7cdc8 100644 --- a/src/vm/array.cpp +++ b/src/vm/array.cpp @@ -374,7 +374,7 @@ MethodTable* Module::CreateArrayMethodTable(TypeHandle elemTypeHnd, CorElementTy // If none, we need to allocate space for the slots if (!canShareVtableChunks) { - cbMT += numVirtuals * sizeof(PCODE); + cbMT += numVirtuals * sizeof(MethodTable::VTableIndir2_t); } // Canonical methodtable has an array of non virtual slots pointed to by the optional member @@ -544,7 +544,7 @@ MethodTable* Module::CreateArrayMethodTable(TypeHandle elemTypeHnd, CorElementTy else { // Use the locally allocated chunk - it.SetIndirectionSlot((PTR_PCODE)(pMemory+cbArrayClass+offsetOfUnsharedVtableChunks)); + it.SetIndirectionSlot((MethodTable::VTableIndir2_t *)(pMemory+cbArrayClass+offsetOfUnsharedVtableChunks)); offsetOfUnsharedVtableChunks += it.GetSize(); } } |