summaryrefslogtreecommitdiff
path: root/src/vm/class.cpp
diff options
context:
space:
mode:
authorgbalykov <g.balykov@samsung.com>2018-02-22 20:47:46 +0300
committerJan Kotas <jkotas@microsoft.com>2018-02-22 09:47:46 -0800
commit34247df6ccb1bcc54363807f047e67c8d43c03cb (patch)
treef74c65cf73c5e677046cc17e6c9ea6d9f839421c /src/vm/class.cpp
parent9e7ec667bd2871970b127fda856b0c6cf3eb2060 (diff)
downloadcoreclr-34247df6ccb1bcc54363807f047e67c8d43c03cb.tar.gz
coreclr-34247df6ccb1bcc54363807f047e67c8d43c03cb.tar.bz2
coreclr-34247df6ccb1bcc54363807f047e67c8d43c03cb.zip
Remove relocations for MethodTable::m_pParentMethodTable for Linux ARM (#15915)
Diffstat (limited to 'src/vm/class.cpp')
-rw-r--r--src/vm/class.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/vm/class.cpp b/src/vm/class.cpp
index d0b07f0896..cd2bbbae47 100644
--- a/src/vm/class.cpp
+++ b/src/vm/class.cpp
@@ -883,7 +883,15 @@ ClassLoader::LoadExactParentAndInterfacesTransitively(MethodTable *pMT)
LOG((LF_CLASSLOADER, LL_INFO1000, "GENERICS: Replaced approximate parent %s with exact parent %s from token %x\n", pParentMT->GetDebugClassName(), pNewParentMT->GetDebugClassName(), crExtends));
// SetParentMethodTable is not used here since we want to update the indirection cell in the NGen case
- *EnsureWritablePages(pMT->GetParentMethodTablePtr()) = pNewParentMT;
+ if (pMT->IsParentMethodTableIndirectPointerMaybeNull())
+ {
+ *EnsureWritablePages(pMT->GetParentMethodTableValuePtr()) = pNewParentMT;
+ }
+ else
+ {
+ EnsureWritablePages(pMT->GetParentMethodTablePointerPtr());
+ pMT->GetParentMethodTablePointerPtr()->SetValueMaybeNull(pNewParentMT);
+ }
pParentMT = pNewParentMT;
}