Eliminate multiple trigger-gc-deamons!.
authorMatt Birkholz <puck@birchwood-abbey.net>
Fri, 11 Dec 2015 17:16:50 +0000 (10:16 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Sun, 3 Jan 2016 20:06:11 +0000 (13:06 -0700)
commit6f4b96bcb3905df71189b775341b63bfea6b4e01
tree1e2c51916fbdffa5a743da6cc0a786b11c847393
parent17a859d937c3838c7882b98622cbe1db90ffae45
Eliminate multiple trigger-gc-deamons!.

The GC notification in GC events reveals that the after-gc interrupt
handler can run multiple times after one GC.  This seems to happen
when a timer interrupt occurs during trigger-gc-daemons!.  Thread
switching leads to re-signaling.  (Was it assumed interrupt handlers
would not allow thread switching?)

This new interrupt handler is applied with interrupt-mask NOT
/timer-ok and allows timer interrupts only after clearing the after-gc
bit.  A substitute mechanism prevents "us from getting into a loop
just running the daemons."
src/runtime/intrpt.scm