From: Vladimir T. <vtz...@gm...> - 2009-02-26 09:07:47
|
On Thu, 26 Feb 2009 10:28:00 +0200, Don Cohen <don...@is...> wrote: > Sam Steingold writes: > > interrupt can occur at any gc-safe spot. > Then which spots are gc safe? Currently GC safe spots are (new may be added if needed): 1. Any heap allocation 2. Any JMP bytecode instruction (this includes all variants of JMP instruction - JMPIF, JMPIF1, etc). This is too strong - but seems it does not cause noticeable performance decrease. 3. GO spec form in interpreted code 4. While the execution is in marked as "possibly blocking" foreign non-lisp code (read from socket for example). > More to the point, how does one look at a piece of lisp code and > determine in which states it could interrupt? you cannot (and should not rely on this - since in future safe spots may change). |