diff options
author | gbalykov <g.balykov@samsung.com> | 2017-06-03 06:31:28 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2017-06-02 20:31:28 -0700 |
commit | fd3668c7c9b9f5d64b5e6d1edf8c55a307cd3c2d (patch) | |
tree | 4dfd969b9979a2e4794e0cff4c46a378343b993e /src/vm/prestub.cpp | |
parent | b47b138d595267315008885e6ac7e2f4322cc5a9 (diff) | |
download | coreclr-fd3668c7c9b9f5d64b5e6d1edf8c55a307cd3c2d.tar.gz coreclr-fd3668c7c9b9f5d64b5e6d1edf8c55a307cd3c2d.tar.bz2 coreclr-fd3668c7c9b9f5d64b5e6d1edf8c55a307cd3c2d.zip |
Remove relocations from SECTION_MethodDesc for ngened images for fields accessed from jit code for Linux ARM (#11963)
Diffstat (limited to 'src/vm/prestub.cpp')
-rw-r--r-- | src/vm/prestub.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp index 921d376978..1ebcdc4b4d 100644 --- a/src/vm/prestub.cpp +++ b/src/vm/prestub.cpp @@ -2383,6 +2383,9 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock pResult->testForFixup = pResult->testForNull = false; pResult->signature = NULL; + + pResult->indirectFirstOffset = 0; + pResult->indirections = CORINFO_USEHELPER; DWORD numGenericArgs = 0; @@ -2433,6 +2436,11 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock pResult->indirections = 2; pResult->offsets[0] = offsetof(InstantiatedMethodDesc, m_pPerInstInfo); + if (decltype(InstantiatedMethodDesc::m_pPerInstInfo)::isRelative) + { + pResult->indirectFirstOffset = 1; + } + ULONG data; IfFailThrow(sigptr.GetData(&data)); pResult->offsets[1] = sizeof(TypeHandle) * data; @@ -2472,6 +2480,11 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock // Indirect through dictionary table pointer in InstantiatedMethodDesc pResult->offsets[0] = offsetof(InstantiatedMethodDesc, m_pPerInstInfo); + if (decltype(InstantiatedMethodDesc::m_pPerInstInfo)::isRelative) + { + pResult->indirectFirstOffset = 1; + } + *pDictionaryIndexAndSlot |= dictionarySlot; } } |