On 12/27/10 6:17 PM, Stefan Monnier wrote: >>>>> Actually, both Fcar and Fcdr can GC (by signalling an error which >>>>> triggers the debugger). >>>> But the debugger will not return. >>> Oh, right, >> Discussions like this worry me. What if the function is later changed to >> call something that can GC? What if it's used in some new context? If >> it's not utterly performance-critical code, isn't it better to be safe >> than sorry and GCPRO anyway? It's not as if it's an expensive operation. >> Premature optimization is the root of all evil, after all. > > On most platforms, GCPRO is a no-op, and on those where it's not, it's > never been a major performance issue, AFAIK. The problem is just that > it makes the code that much more verbose and painful to > write/read/maintain. Hrm. You learn something every day --- I thought Emacs was doing precise GC the way it has since time immemorial. How much of a win was the GC_MARK_STACK conservative scanning approach?