summaryrefslogtreecommitdiff
path: root/src/vm/array.cpp
diff options
context:
space:
mode:
authorGleb Balykov <g.balykov@samsung.com>2017-06-22 20:24:54 +0300
committerGleb Balykov <g.balykov@samsung.com>2017-07-10 16:37:05 +0300
commite085f07a5fa0aff778ff7562a33a88513b79b3b7 (patch)
treeab1caf69d1d269e4b2ddec8eaaa4b9592353bab2 /src/vm/array.cpp
parente8adb62978b887eda3617dff7eccec1fc7719d07 (diff)
downloadcoreclr-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.cpp7
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