summaryrefslogtreecommitdiff
path: root/src/vm/class.cpp
diff options
context:
space:
mode:
authorGleb Balykov <g.balykov@samsung.com>2017-06-23 14:57:25 +0300
committerGleb Balykov <g.balykov@samsung.com>2017-07-10 16:37:05 +0300
commitcf1fb9e17fc8b6ee849edab5a696d0ec5c6eadd2 (patch)
tree446fedc57adce0d4610d8e6cfc98c1a17243e3f9 /src/vm/class.cpp
parent7a107e9622ff5803987add587414610014eeca4e (diff)
downloadcoreclr-cf1fb9e17fc8b6ee849edab5a696d0ec5c6eadd2.tar.gz
coreclr-cf1fb9e17fc8b6ee849edab5a696d0ec5c6eadd2.tar.bz2
coreclr-cf1fb9e17fc8b6ee849edab5a696d0ec5c6eadd2.zip
Remove relocations for MethodTable::m_pParentMethodTable for Linux ARM
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 c1519a2bfe..f1332f3650 100644
--- a/src/vm/class.cpp
+++ b/src/vm/class.cpp
@@ -889,7 +889,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->GetParentMethodTablePlainOrRelativePointerPtr()->IsIndirectPtrMaybeNull())
+ {
+ *EnsureWritablePages(pMT->GetParentMethodTablePlainOrRelativePointerPtr()->GetValuePtr()) = pNewParentMT;
+ }
+ else
+ {
+ EnsureWritablePages(pMT->GetParentMethodTablePlainOrRelativePointerPtr());
+ pMT->GetParentMethodTablePlainOrRelativePointerPtr()->SetValueMaybeNull(pNewParentMT);
+ }
pParentMT = pNewParentMT;
}