Includes the addition of 'overflow and 'start-overflow-work
events, whcih are effectively specializations of 'sync and
'start-work to expose overflow handling.
Also, fix a bug related to a potential GC during mark-stack
restore from a lightweight continuation.
These primitives atomically update a box to a new value, as long
as the current value is the same as a provided value. They also
are future-safe.
When futures are enabled, they use low-level hardware instructions
to perform the change atomically.
- abstract over JIT inlining of fsemaphore operations
- fix problems with non-parallel fsemaphores
- adjust tests so they don't assume too much concurrency
- clarify fsemaphore vs. semaphore in the docs
if no future thread is running the future; also adjust the
policy for suspending a future so that even synchronized
operations can suspend if there's other work to be done;
also also fix `current-future' for nested `touch'es and when
parallel futures are disabled
which required adding a notion of "lightweight continuation" to
the runtime system, where a lightweight continuation involves
only frames from JIT0generated code (so that details of the stack
layout are known, for example)