Mechanisms can be used to facilitate suspension of a mutator thread (or
mutator threads) while imposing negligible overhead on the mutator
computation during periods when thread suspension is not requested.
Mechanisms are provided to spill values from a fixed set of resources to
a secondary store and to fill values from the secondary store into the
fixed set in correspondence with function call triggered overflows and
function return triggered underflows. In some configurations, modified
spill and/or fill mechanism(s) are used to suspend threads at safe points
coinciding with call and/or return sites. Because the modified spill
and/or fill mechanism(s) impose negligible overhead when not employed and
can be engaged in response to an event (e.g., a start garbage collection
event), safe points can be defined at call and/or return points
throughout mutator code to reduce the latency between the event and
suspension of threads.