Remove with-absolutely-no-interrupts from runtime/gc.scm.
authorMatt Birkholz <puck@birchwood-abbey.net>
Tue, 23 Jun 2015 18:42:13 +0000 (11:42 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Mon, 6 Jul 2015 05:45:44 +0000 (22:45 -0700)
commitbe706dee6fc48f01df4f94ba68a368ea77c14584
treef1cc6184cd5e06a93c0c2c2e6faf496e984d4ba4
parent1b69fd6a7481df1d0d86db3f953c68014e973caf
Remove with-absolutely-no-interrupts from runtime/gc.scm.

Default/purify and default/gc-flip modified the constant-space-queue
under the cover of with-absolutely-no-interrupts, which is no longer
atomic.  Serializing these procedures is a trick because the latter is
invoked by the GC interrupt.  (Thus ABSOLUTELY no interrupts were
allowed?)

But there is no need for default/gc-flip to remove items from the
queue.  Flush-purification-queue! will know that its queue is "empty"
when its head is in constant space.  Thus the interrupt no longer
modifies the queue, and the queuing process is serialized in the usual
way.

Since primitive-purify cannot fail for lack of space, ancient error
signals and retry loops are also eliminated.
src/runtime/gc.scm