diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2017-06-23 14:57:25 +0300 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2017-07-10 16:37:05 +0300 |
commit | cf1fb9e17fc8b6ee849edab5a696d0ec5c6eadd2 (patch) | |
tree | 446fedc57adce0d4610d8e6cfc98c1a17243e3f9 /src/vm/class.cpp | |
parent | 7a107e9622ff5803987add587414610014eeca4e (diff) | |
download | coreclr-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.cpp | 10 |
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; } |