diff options
author | JUNG DONG-HEON <dheon.jung@samsung.com> | 2020-06-08 10:20:14 +0900 |
---|---|---|
committer | 이형주/Common Platform Lab(SR)/Staff Engineer/삼성전자 <leee.lee@samsung.com> | 2020-06-18 07:38:46 +0900 |
commit | 7d6fa13ce85654174b882c9e934c000dfd2222fe (patch) | |
tree | 46c473fdedd5747c2ad281170c0416407b74a503 /src/inc | |
parent | 488be5d790020489f7f4dd7d43680f43b101dbd4 (diff) | |
download | coreclr-7d6fa13ce85654174b882c9e934c000dfd2222fe.tar.gz coreclr-7d6fa13ce85654174b882c9e934c000dfd2222fe.tar.bz2 coreclr-7d6fa13ce85654174b882c9e934c000dfd2222fe.zip |
Implement instantiating and unboxing through portable stublinker code… (#106)
* Implement instantiating and unboxing through portable stublinker code
- Handle only the cases with register to register moves
- Shares abi processing logic with delegate shuffle thunk creation
- Architecture specific logic is relatively simple
- Do not permit use of HELPERREG in computed instantiating stubs
- Fix GetArgLoc such that it works on all architectures and OS combinations
Add a JIT stress test case for testing all of the various combinations
- Use the same calling convention test architecture that was used as part of tail call work
Rename secure delegates to wrapper delegates
- Secure delegates are no longer a feature of the runtime
- But the wrapper delegate lives on as a workaround for a weird detail of the ARM32 abi
Diffstat (limited to 'src/inc')
-rw-r--r-- | src/inc/cordebug.idl | 4 | ||||
-rw-r--r-- | src/inc/corinfo.h | 6 | ||||
-rw-r--r-- | src/inc/daccess.h | 3 | ||||
-rw-r--r-- | src/inc/vptr_list.h | 4 |
4 files changed, 6 insertions, 11 deletions
diff --git a/src/inc/cordebug.idl b/src/inc/cordebug.idl index c0dcb7670b..1e27c197f3 100644 --- a/src/inc/cordebug.idl +++ b/src/inc/cordebug.idl @@ -6507,7 +6507,7 @@ interface ICorDebugDelegateObjectValue : IUnknown * - NULL if the delegate function is a static function or an open delegate * - HRESULT CORDBG_E_UNSUPPORTED_DELEGATE for curently unsupported delegates. * In this case, the value of ppObject should not be used. Some of these - * include: Secure wrappers, Open Virual delegates. + * include: Wrapper delegates, Open Virual delegates. */ HRESULT GetTarget([out] ICorDebugReferenceValue **ppObject); @@ -6519,7 +6519,7 @@ interface ICorDebugDelegateObjectValue : IUnknown * such as generic methods, which won't contain the instantiation. * - HRESULT CORDBG_E_UNSUPPORTED_DELEGATE for curently unsupported delegates. * In this case, the value of ppObject should not be used. Some of these - * include: Secure wrappers, Open Virual delegates. + * include: Wrapper delegates, Open Virual delegates. */ HRESULT GetFunction([out] ICorDebugFunction **ppFunction); } diff --git a/src/inc/corinfo.h b/src/inc/corinfo.h index 9cc849043e..c3af9f8b78 100644 --- a/src/inc/corinfo.h +++ b/src/inc/corinfo.h @@ -1699,7 +1699,7 @@ struct CORINFO_CALL_INFO CORINFO_CONST_LOOKUP instParamLookup; // Used by Ready-to-Run - BOOL secureDelegateInvoke; + BOOL wrapperDelegateInvoke; }; //---------------------------------------------------------------------------- @@ -1826,8 +1826,8 @@ struct CORINFO_EE_INFO unsigned offsetOfDelegateInstance; unsigned offsetOfDelegateFirstTarget; - // Secure delegate offsets - unsigned offsetOfSecureDelegateIndirectCell; + // Wrapper delegate offsets + unsigned offsetOfWrapperDelegateIndirectCell; // Remoting offsets unsigned offsetOfTransparentProxyRP; diff --git a/src/inc/daccess.h b/src/inc/daccess.h index e4deab9207..802df17d0b 100644 --- a/src/inc/daccess.h +++ b/src/inc/daccess.h @@ -2165,8 +2165,7 @@ public: name(int dummy) : base(dummy) {} #define VPTR_UNIQUE_BaseDomain (100000) #define VPTR_UNIQUE_SystemDomain (VPTR_UNIQUE_BaseDomain + 1) #define VPTR_UNIQUE_ComMethodFrame (VPTR_UNIQUE_SystemDomain + 1) -#define VPTR_UNIQUE_StubHelperFrame (VPTR_UNIQUE_ComMethodFrame + 1) -#define VPTR_UNIQUE_RedirectedThreadFrame (VPTR_UNIQUE_StubHelperFrame + 1) +#define VPTR_UNIQUE_RedirectedThreadFrame (VPTR_UNIQUE_ComMethodFrame + 1) #define VPTR_UNIQUE_HijackFrame (VPTR_UNIQUE_RedirectedThreadFrame + 1) #define PTR_TO_TADDR(ptr) ((TADDR)(ptr)) diff --git a/src/inc/vptr_list.h b/src/inc/vptr_list.h index 566cfa6e72..9d1128e208 100644 --- a/src/inc/vptr_list.h +++ b/src/inc/vptr_list.h @@ -77,7 +77,6 @@ VPTR_CLASS(HelperMethodFrame_PROTECTOBJ) VPTR_CLASS(HijackFrame) #endif VPTR_CLASS(InlinedCallFrame) -VPTR_CLASS(SecureDelegateFrame) VPTR_CLASS(MulticastFrame) VPTR_CLASS(PInvokeCalliFrame) VPTR_CLASS(PrestubMethodFrame) @@ -92,9 +91,6 @@ VPTR_CLASS(ExternalMethodFrame) #ifdef FEATURE_READYTORUN VPTR_CLASS(DynamicHelperFrame) #endif -#if !defined(_TARGET_X86_) -VPTR_CLASS(StubHelperFrame) -#endif #if defined(_TARGET_X86_) VPTR_CLASS(UMThkCallFrame) #endif |