You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactor GC bridge to use UCO callback instead of wait_for_processing
- Pass UCO callback to native during initialization
- Native mark_cross_references calls the UCO callback directly
- UCO stores args in ConcurrentQueue and signals SemaphoreSlim
- C# background thread waits on semaphore and processes from queue
- Remove clr_gc_bridge_wait_for_processing P/Invoke
- Remove semaphore and atomic from C++ code
- Regenerate pinvoke-tables.include
Co-authored-by: simonrozsival <374616+simonrozsival@users.noreply.github.com>
abort_unless (args->CrossReferences != nullptr || args->CrossReferenceCount == 0, "CrossReferences must not be null if CrossReferenceCount is greater than 0");
53
53
log_mark_cross_references_args_if_enabled (args);
54
54
55
-
shared_args.store (args);
56
-
shared_args_semaphore.release ();
55
+
// Invoke the managed callback to queue the args for processing
56
+
abort_unless (on_mark_cross_references_callback != nullptr, "on_mark_cross_references_callback must be set before mark_cross_references is called");
0 commit comments