* triggerring gc
As the code uses something like:
triggerring gc is not reliable especially under heavy interrupt load (read:=
sb-sprof). Furthermore, in a WITHOUT-INTERRUPTS gc is not triggered, becaus=
maybe_defer_handler defers it.
* delivery of SIG_STOP_FOR_GC
In a WITHOUT-INTERRUPTS block this signal is deferred, thus the gc cannot=20
start until an exit from it.
Thread A can already be stopping the world when thread B enters the=20
WITHOUT-GCING body and since the SIG_STOP_FOR_GC is not blocked thread B is=
stopped and gc starts.
Assuming these are undesirable (including WITHOUT-INTERRUPTS deferring gc (=
my current plan is to add gc_pending, sig_stop_for_gc_pending fields to=20
=2D make WITHOUT-INTERRUPTS let gcs and SIG_STOP_FOR_GCs through
=2D make WITHOUT-GCING and pseudo atomic block/defer SIG_STOP_FOR_GC
=2D give priority to gc over signal handling (?!), if there is an interrupt=
a gc/SIG_STOP_FOR_GC pending do the gc first
Currently, I'm reading up on the fabulous and rich history of gencgc.c, but=
the meantime let me know if you have a simple(r) scheme for this.