diff --git a/src/mono/mono/metadata/sgen-bridge.c b/src/mono/mono/metadata/sgen-bridge.c index 18aa1c2c5a3a12..35146dd2d2e67d 100644 --- a/src/mono/mono/metadata/sgen-bridge.c +++ b/src/mono/mono/metadata/sgen-bridge.c @@ -54,6 +54,14 @@ volatile gboolean mono_bridge_processing_in_progress = FALSE; */ void mono_gc_wait_for_bridge_processing (void) +{ + MONO_ENTER_GC_UNSAFE; + mono_gc_wait_for_bridge_processing_internal (); + MONO_EXIT_GC_UNSAFE; +} + +void +mono_gc_wait_for_bridge_processing_internal (void) { if (!mono_bridge_processing_in_progress) return; @@ -738,6 +746,11 @@ mono_gc_wait_for_bridge_processing (void) { } +void +mono_gc_wait_for_bridge_processing_internal (void) +{ +} + MonoGCBridgeObjectKind sgen_bridge_class_kind (MonoClass *klass) { diff --git a/src/mono/mono/metadata/sgen-bridge.h b/src/mono/mono/metadata/sgen-bridge.h index c131f3066914e0..3f11c11bcb09f3 100644 --- a/src/mono/mono/metadata/sgen-bridge.h +++ b/src/mono/mono/metadata/sgen-bridge.h @@ -103,7 +103,7 @@ typedef struct { */ MONO_API void mono_gc_register_bridge_callbacks (MonoGCBridgeCallbacks *callbacks); -MONO_API void mono_gc_wait_for_bridge_processing (void); +MONO_API MONO_RT_EXTERNAL_ONLY void mono_gc_wait_for_bridge_processing (void); MONO_END_DECLS diff --git a/src/mono/mono/metadata/sgen-client-mono.h b/src/mono/mono/metadata/sgen-client-mono.h index 211d9ed5549842..f69e05904f6df4 100644 --- a/src/mono/mono/metadata/sgen-client-mono.h +++ b/src/mono/mono/metadata/sgen-client-mono.h @@ -250,10 +250,13 @@ sgen_client_bridge_processing_stw_step (void) sgen_bridge_processing_stw_step (); } +void +mono_gc_wait_for_bridge_processing_internal (void); + static void G_GNUC_UNUSED sgen_client_bridge_wait_for_processing (void) { - mono_gc_wait_for_bridge_processing (); + mono_gc_wait_for_bridge_processing_internal (); } static void G_GNUC_UNUSED diff --git a/src/mono/mono/metadata/sgen-mono.c b/src/mono/mono/metadata/sgen-mono.c index ff3bca77b8cd6d..c04e5dba6a57f6 100644 --- a/src/mono/mono/metadata/sgen-mono.c +++ b/src/mono/mono/metadata/sgen-mono.c @@ -2848,7 +2848,7 @@ sgen_client_ensure_weak_gchandles_accessible (void) * should wait for bridge processing but would fail to do so. */ if (G_UNLIKELY (mono_bridge_processing_in_progress)) - mono_gc_wait_for_bridge_processing (); + mono_gc_wait_for_bridge_processing_internal (); } void*