summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2023-02-08 08:21:45 +0300
committerIvan Maidanski <ivmai@mail.ru>2023-02-08 12:23:53 +0300
commite0871911cab3250d2f50e267eb9028db72f8086d (patch)
tree5866a2b90f1b6040335970cf7ded13b6f83fa2a0 /tests
parent892a21b74980ab578f06429f1045c018558765c4 (diff)
downloadbdwgc-e0871911cab3250d2f50e267eb9028db72f8086d.tar.gz
Generalize finalizers interruption API
(fix of commit e71a7d653) * finalize.c (GC_interrupt_finalizers): Move definition upper (to be before GC_enqueue_all_finalizers); change type from GC_bool to unsigned; update comment. * finalize.c [!JAVA_FINALIZATION_NOT_NEEDED] (GC_finalize_all): Set GC_interrupt_finalizers to 0 after GC_enqueue_all_finalizers() call. * finalize.c (GC_set_interrupt_finalizers): Add unsigned argument; set GC_interrupt_finalizers to the argument value. * finalize.c (GC_set_interrupt_finalizers, GC_invoke_finalizers): Wrap access to GC_interrupt_finalizers into LOCK/UNLOCK. * finalize.c (GC_get_interrupt_finalizers): New public function definition. * finalize.c (GC_invoke_finalizers): Do not break the loop (because of non-zero GC_interrupt_finalizers) on the first iteration or if iteration number is smaller than GC_interrupt_finalizers value. * finalize.c (GC_notify_or_invoke_finalizers): Update comment for the reset of *pnested. * finalize.c [!THREADS] (GC_notify_or_invoke_finalizers): Allow finalize_now to be non-null in the assertion in case of a non-zero value of GC_interrupt_finalizers. * include/gc/gc.h (GC_set_interrupt_finalizers): Update comment; add unsigned argument. * include/gc/gc.h (GC_get_interrupt_finalizers): New public function declaration. * tests/gctest.c [GC_PTHREADS && !GC_NO_FINALIZATION] (main): Call GC_set_interrupt_finalizers() and GC_get_interrupt_finalizers().
Diffstat (limited to 'tests')
-rw-r--r--tests/gctest.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/tests/gctest.c b/tests/gctest.c
index b2bbb96a..709d65cd 100644
--- a/tests/gctest.c
+++ b/tests/gctest.c
@@ -2606,6 +2606,7 @@ int main(void)
# endif
# ifndef GC_NO_FINALIZATION
GC_set_await_finalize_proc(GC_get_await_finalize_proc());
+ GC_set_interrupt_finalizers(GC_get_interrupt_finalizers());
# ifndef GC_TOGGLE_REFS_NOT_NEEDED
GC_set_toggleref_func(GC_get_toggleref_func());
# endif