diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2017-06-22 20:24:54 +0300 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2017-07-10 16:37:05 +0300 |
commit | e085f07a5fa0aff778ff7562a33a88513b79b3b7 (patch) | |
tree | ab1caf69d1d269e4b2ddec8eaaa4b9592353bab2 /src/vm/array.cpp | |
parent | e8adb62978b887eda3617dff7eccec1fc7719d07 (diff) | |
download | coreclr-e085f07a5fa0aff778ff7562a33a88513b79b3b7.tar.gz coreclr-e085f07a5fa0aff778ff7562a33a88513b79b3b7.tar.bz2 coreclr-e085f07a5fa0aff778ff7562a33a88513b79b3b7.zip |
Remove relocations for InterfaceInfo_t::m_pMethodTable for Linux ARM
Diffstat (limited to 'src/vm/array.cpp')
-rw-r--r-- | src/vm/array.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/vm/array.cpp b/src/vm/array.cpp index d6792942e7..3f5a8aab00 100644 --- a/src/vm/array.cpp +++ b/src/vm/array.cpp @@ -509,8 +509,11 @@ MethodTable* Module::CreateArrayMethodTable(TypeHandle elemTypeHnd, CorElementTy #endif // !defined(_WIN64) && (DATA_ALIGNMENT > 4) pMT->SetBaseSize(baseSize); // Because of array method table persisting, we need to copy the map - memcpy(pMTHead + imapOffset, pParentClass->GetInterfaceMap(), - pParentClass->GetNumInterfaces() * sizeof(InterfaceInfo_t)); + for (unsigned index = 0; index < pParentClass->GetNumInterfaces(); ++index) + { + InterfaceInfo_t *pIntInfo = (InterfaceInfo_t *) (pMTHead + imapOffset + index * sizeof(InterfaceInfo_t)); + pIntInfo->SetMethodTable((pParentClass->GetInterfaceMap() + index)->GetMethodTable()); + } pMT->SetInterfaceMap(pParentClass->GetNumInterfaces(), (InterfaceInfo_t *)(pMTHead + imapOffset)); // Copy down flags for these interfaces as well. This is simplified a bit since we know that System.Array |