From: Nikodemus S. <nik...@ra...> - 2008-02-08 19:34:17
|
On 2/8/08, William Harold Newman <wil...@ai...> wrote: > > 4. (defun foo () (if <true> 'zot (quux)) > > > > doesn't tell XREF about FOO calling QUUX. (The patch doesn't adjust > > SB-INTROSPECT test for this, and so seems to break it.) > > I haven't thought about XREF enough to have a stable opinion, but > tentatively I'm inclined to blame XREF for this, having excessively > confident ideas about what might be eliminated and/or when it can > reliably peek at what's going on in the compiler. It'd be nice to fix > it (either by tweaking the compiler patch, or by tweaking the > semantics of what XREF guarantees), but I'm not sure not having a fix > at hand should be a reason not to speed up the compiler. I don't think this is our XREF's fault, since it pretty much does TRT, collection of information being part of the compiler. Since the code doesn't get compiled, XREF doesn't learn about it. The alternative approaches require implementing a full parallel pass just for XREF, and will make future implementation of eg. WHO-INLINES either brittle or impossible. > My opinion is that if #1 could be fixed without too much difficulty, > then it's worth doing this for a 2% increase in compilation speed. It > looks like enormously less hair than implementing something like a > full fast simple compiler in parallel with the slow complicated > compiler. The hair difference is so enormous that even if the gain is > only 2%, I'm pretty sure the gain-to-hair ratio is good compared to > things that are often considered reasonable tradeoffs. One option would be something like *CONVERTING-DEAD-CODE*, which sites doing potentially expensive things could check, and take a lazy-but-still-converts everything way out. Another option would be a full source-level precompilation pass -- and I have not idea if that would make things faster or slower. (Though it might enable doing some other things, like those the PCL code-walker does, in a more principled manner.) Cheers, -- Nikodemus |