diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2018-06-29 17:25:17 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2018-06-29 07:25:17 -0700 |
commit | 61146b5c5851698e113e936d4e4b51b628095f27 (patch) | |
tree | 7b9d9eec971076fe30fa47244bff066b75ac0b09 /src/vm/generics.cpp | |
parent | 1ad9c94ef5e541e9c8ac29606515d6f54e0e445c (diff) | |
download | coreclr-61146b5c5851698e113e936d4e4b51b628095f27.tar.gz coreclr-61146b5c5851698e113e936d4e4b51b628095f27.tar.bz2 coreclr-61146b5c5851698e113e936d4e4b51b628095f27.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/generics.cpp')
-rw-r--r-- | src/vm/generics.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/vm/generics.cpp b/src/vm/generics.cpp index 4ff877ed43..b68054985e 100644 --- a/src/vm/generics.cpp +++ b/src/vm/generics.cpp @@ -324,7 +324,7 @@ ClassLoader::CreateTypeHandleForNonCanonicalGenericInstantiation( // If none, we need to allocate space for the slots if (!canShareVtableChunks) { - allocSize += S_SIZE_T( cSlots ) * S_SIZE_T( sizeof(PCODE) ); + allocSize += S_SIZE_T( cSlots ) * S_SIZE_T( sizeof(MethodTable::VTableIndir2_t) ); } if (allocSize.IsOverflow()) @@ -446,7 +446,7 @@ ClassLoader::CreateTypeHandleForNonCanonicalGenericInstantiation( else { // Use the locally allocated chunk - it.SetIndirectionSlot((PTR_PCODE)(pMemory+offsetOfUnsharedVtableChunks)); + it.SetIndirectionSlot((MethodTable::VTableIndir2_t *)(pMemory+offsetOfUnsharedVtableChunks)); offsetOfUnsharedVtableChunks += it.GetSize(); } } |