diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2023-02-08 08:21:45 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2023-02-08 12:23:53 +0300 |
commit | e0871911cab3250d2f50e267eb9028db72f8086d (patch) | |
tree | 5866a2b90f1b6040335970cf7ded13b6f83fa2a0 /tests | |
parent | 892a21b74980ab578f06429f1045c018558765c4 (diff) | |
download | bdwgc-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.c | 1 |
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 |