From 34247df6ccb1bcc54363807f047e67c8d43c03cb Mon Sep 17 00:00:00 2001 From: gbalykov Date: Thu, 22 Feb 2018 20:47:46 +0300 Subject: Remove relocations for MethodTable::m_pParentMethodTable for Linux ARM (#15915) --- src/vm/class.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/vm/class.cpp') 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; } -- cgit v1.2.3