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, 17 Aug 2015 23:52:58 +0000 (16:52 -0700)
commit4781c478630f3c19373aea69cca3d2efac8154ee
tree0bd91eee75518a7137faa7c4b8c0361b6b7565aa
parent65d2d32dc13779bdebc5bcba37224cde73468ee6
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