summaryrefslogtreecommitdiff
path: root/packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch')
-rw-r--r--packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch153
1 files changed, 153 insertions, 0 deletions
diff --git a/packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch b/packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch
new file mode 100644
index 0000000000..f7b650569f
--- /dev/null
+++ b/packaging/0003-dllimportcallback-remove-code-for-CallbackOnCollecte.patch
@@ -0,0 +1,153 @@
+From 7244ba7107daea201faac0b6c71b545d77fbcb57 Mon Sep 17 00:00:00 2001
+From: Konstantin Baladurin <k.baladurin@partner.samsung.com>
+Date: Fri, 12 Jan 2018 11:46:48 +0300
+Subject: [PATCH 03/47] dllimportcallback: remove code for
+ CallbackOnCollectedDelegate MDA
+
+---
+ src/vm/dllimportcallback.cpp | 71 --------------------------------------------
+ src/vm/dllimportcallback.h | 19 ------------
+ 2 files changed, 90 deletions(-)
+
+diff --git a/src/vm/dllimportcallback.cpp b/src/vm/dllimportcallback.cpp
+index fe03f47..8623d46 100644
+--- a/src/vm/dllimportcallback.cpp
++++ b/src/vm/dllimportcallback.cpp
+@@ -112,34 +112,6 @@ EXTERN_C void STDCALL UM2MThunk_WrapperHelper(void *pThunkArgs,
+ UMEntryThunk *pEntryThunk,
+ Thread *pThread);
+
+-#ifdef MDA_SUPPORTED
+-EXTERN_C void __fastcall CallbackOnCollectedDelegateHelper(UMEntryThunk *pEntryThunk)
+-{
+- CONTRACTL
+- {
+- THROWS;
+- GC_TRIGGERS;
+- MODE_COOPERATIVE;
+- SO_TOLERANT;
+- PRECONDITION(CheckPointer(pEntryThunk));
+- }
+- CONTRACTL_END;
+-
+- MdaCallbackOnCollectedDelegate* pProbe = MDA_GET_ASSISTANT(CallbackOnCollectedDelegate);
+-
+- // This MDA must be active if we generated a call to CallbackOnCollectedDelegateHelper
+- _ASSERTE(pProbe);
+-
+- if (pEntryThunk->IsCollected())
+- {
+- INSTALL_UNWIND_AND_CONTINUE_HANDLER;
+- pProbe->ReportViolation(pEntryThunk->GetMethod());
+- COMPlusThrow(kNullReferenceException);
+- UNINSTALL_UNWIND_AND_CONTINUE_HANDLER;
+- }
+-}
+-#endif // MDA_SUPPORTED
+-
+ // This is used as target of callback from DoADCallBack. It sets up the environment and effectively
+ // calls back into the thunk that needed to switch ADs.
+ void UM2MThunk_Wrapper(LPVOID ptr) // UM2MThunk_Args
+@@ -412,25 +384,6 @@ VOID UMEntryThunk::CompileUMThunkWorker(UMThunkStubInfo *pInfo,
+ // would deadlock).
+ pcpusl->EmitLabel(pDoADCallBackStartLabel);
+
+-
+-#ifdef MDA_SUPPORTED
+- if ((pInfo->m_wFlags & umtmlSkipStub) && !(pInfo->m_wFlags & umtmlIsStatic) &&
+- MDA_GET_ASSISTANT(CallbackOnCollectedDelegate))
+- {
+- // save registers
+- pcpusl->X86EmitPushReg(kEAXentryThunk);
+- pcpusl->X86EmitPushReg(kECXthread);
+-
+- // CallbackOnCollectedDelegateHelper is a fast call
+- pcpusl->X86EmitMovRegReg(kECX, kEAXentryThunk);
+- pcpusl->X86EmitCall(pcpusl->NewExternalCodeLabel((LPVOID)CallbackOnCollectedDelegateHelper), 0);
+-
+- // restore registers
+- pcpusl->X86EmitPopReg(kECXthread);
+- pcpusl->X86EmitPopReg(kEAXentryThunk);
+- }
+-#endif
+-
+ // save the thread pointer
+ pcpusl->X86EmitPushReg(kECXthread);
+
+@@ -1217,30 +1170,6 @@ VOID UMEntryThunk::FreeUMEntryThunk(UMEntryThunk* p)
+ }
+ CONTRACTL_END;
+
+-#ifdef MDA_SUPPORTED
+- MdaCallbackOnCollectedDelegate* pProbe = MDA_GET_ASSISTANT(CallbackOnCollectedDelegate);
+- if (pProbe)
+- {
+- if (p->GetObjectHandle())
+- {
+- DestroyLongWeakHandle(p->GetObjectHandle());
+- p->m_pObjectHandle = NULL;
+-
+- // We are intentionally not reseting m_pManagedTarget here so that
+- // it is available for diagnostics of call on collected delegate crashes.
+- }
+- else
+- {
+- p->m_pManagedTarget = NULL;
+- }
+-
+- // Add this to the array of delegates to be cleaned up.
+- pProbe->AddToList(p);
+-
+- return;
+- }
+-#endif
+-
+ p->Terminate();
+ }
+
+diff --git a/src/vm/dllimportcallback.h b/src/vm/dllimportcallback.h
+index d820a76..555b737 100644
+--- a/src/vm/dllimportcallback.h
++++ b/src/vm/dllimportcallback.h
+@@ -424,13 +424,7 @@ public:
+ MODE_ANY;
+ SUPPORTS_DAC;
+ PRECONDITION(m_state == kRunTimeInited || m_state == kLoadTimeInited);
+-#ifdef MDA_SUPPORTED
+- // We can return NULL here if the CollectedDelegate probe is on because
+- // a collected delegate will have set this field to NULL.
+- POSTCONDITION(g_pDebugInterface->ThisIsHelperThread() || MDA_GET_ASSISTANT(CallbackOnCollectedDelegate) || CheckPointer(RETVAL));
+-#else
+ POSTCONDITION(CheckPointer(RETVAL));
+-#endif
+ }
+ CONTRACT_END;
+
+@@ -503,15 +497,6 @@ public:
+
+ static UMEntryThunk* Decode(LPVOID pCallback);
+
+-#ifdef MDA_SUPPORTED
+- BOOL IsCollected() const
+- {
+- LIMITED_METHOD_CONTRACT;
+- _ASSERTE(m_pMD != NULL && m_pMD->IsEEImpl());
+- return m_pObjectHandle == NULL;
+- }
+-#endif
+-
+ static VOID __fastcall ReportViolation(UMEntryThunk* p);
+
+ private:
+@@ -613,8 +598,4 @@ EXTERN_C void UMThunkStub(void);
+ void STDCALL LogUMTransition(UMEntryThunk* thunk);
+ #endif
+
+-#ifdef MDA_SUPPORTED
+-EXTERN_C void __fastcall CallbackOnCollectedDelegateHelper(UMEntryThunk *pEntryThunk);
+-#endif // MDA_SUPPORTED
+-
+ #endif //__dllimportcallback_h__
+--
+2.7.4
+