diff options
author | Aaron Robinson <arobins@microsoft.com> | 2021-05-13 22:04:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-13 22:04:46 +0300 |
commit | c1e7ca823f45082c3459e3211ece37456b2604dd (patch) | |
tree | 27006813192e83d56d3e03c990630a7cd433346f /src/coreclr/inc | |
parent | d77854a16eaa29f1a141f1da267885dcf2675027 (diff) |
Low level API support for Objective-C interop. (#52146)
* Add Objective-C interop support.
* Include handling of HNDTYPE_REFCOUNTED when FEATURE_OBJCMARSHAL is defined (#47534)
* Allow overriding of Objective-C message send P/Invokes (#47721)
* Add new flag to MethodTable for types with ObjectiveCTrackedTypeAttribute.
Discover attribute during type load and set bit.
Update EagerFinalizer callout to query bit.
* Add testing for API
* Bridge API for propagating managed exception to native.
* Update GCEE interface to support GCServer scenario for Objective-C.
The new callbacks now fire when before the GC scans handles and is
non-concurrent.
* Comment added for ExceptionTracker non-NULL condition.
Co-authored-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
Diffstat (limited to 'src/coreclr/inc')
-rw-r--r-- | src/coreclr/inc/pinvokeoverride.h | 12 | ||||
-rw-r--r-- | src/coreclr/inc/utilcode.h | 4 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/coreclr/inc/pinvokeoverride.h b/src/coreclr/inc/pinvokeoverride.h index 525f976b3de..3cec8c5b498 100644 --- a/src/coreclr/inc/pinvokeoverride.h +++ b/src/coreclr/inc/pinvokeoverride.h @@ -15,8 +15,16 @@ class PInvokeOverride { public: - static void SetPInvokeOverride(PInvokeOverrideFn* overrideImpl); - static const void* GetMethodImpl(const char* libraryName, const char* entrypointName); + // Override source. This represents the priority order in which overrides will be called. + enum class Source + { + RuntimeConfiguration, + ObjectiveCInterop, + Last = ObjectiveCInterop, + }; + + static void SetPInvokeOverride(_In_ PInvokeOverrideFn* overrideImpl, _In_ Source source); + static const void* GetMethodImpl(_In_z_ const char* libraryName, _In_z_ const char* entrypointName); }; #endif // _PINVOKEOVERRIDE_H_ diff --git a/src/coreclr/inc/utilcode.h b/src/coreclr/inc/utilcode.h index 563fff829c9..a47034ee2e0 100644 --- a/src/coreclr/inc/utilcode.h +++ b/src/coreclr/inc/utilcode.h @@ -4715,12 +4715,12 @@ void* FindLocalizedFile(_In_z_ LPCWSTR wzResourceDllName, LocalizedFileHandler l namespace Clr { namespace Util { -#ifdef FEATURE_COMINTEROP +#ifdef HOST_WINDOWS namespace Com { HRESULT FindInprocServer32UsingCLSID(REFCLSID rclsid, SString & ssInprocServer32Name); } -#endif // FEATURE_COMINTEROP +#endif // HOST_WINDOWS }} |