summaryrefslogtreecommitdiff
path: root/src/vm/methodtable.h
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/methodtable.h
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/methodtable.h')
-rw-r--r--src/vm/methodtable.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/vm/methodtable.h b/src/vm/methodtable.h
index fcc9779157..92a61f4118 100644
--- a/src/vm/methodtable.h
+++ b/src/vm/methodtable.h
@@ -110,25 +110,40 @@ struct InterfaceInfo_t
friend class NativeImageDumper;
#endif
- FixupPointer<PTR_MethodTable> m_pMethodTable; // Method table of the interface
+ // Method table of the interface
+#if defined(PLATFORM_UNIX) && defined(_TARGET_ARM_)
+ RelativeFixupPointer<PTR_MethodTable> m_pMethodTable;
+#else
+ FixupPointer<PTR_MethodTable> m_pMethodTable;
+#endif
public:
FORCEINLINE PTR_MethodTable GetMethodTable()
{
LIMITED_METHOD_CONTRACT;
- return m_pMethodTable.GetValue();
+ return ReadPointerMaybeNull(this, &InterfaceInfo_t::m_pMethodTable);
}
#ifndef DACCESS_COMPILE
void SetMethodTable(MethodTable * pMT)
{
LIMITED_METHOD_CONTRACT;
- m_pMethodTable.SetValue(pMT);
+ m_pMethodTable.SetValueMaybeNull(pMT);
}
// Get approximate method table. This is used by the type loader before the type is fully loaded.
PTR_MethodTable GetApproxMethodTable(Module * pContainingModule);
-#endif
+#endif // !DACCESS_COMPILE
+
+#ifndef DACCESS_COMPILE
+ InterfaceInfo_t(InterfaceInfo_t &right)
+ {
+ m_pMethodTable.SetValueMaybeNull(right.m_pMethodTable.GetValueMaybeNull());
+ }
+#else // !DACCESS_COMPILE
+private:
+ InterfaceInfo_t(InterfaceInfo_t &right);
+#endif // !DACCESS_COMPILE
}; // struct InterfaceInfo_t
typedef DPTR(InterfaceInfo_t) PTR_InterfaceInfo;