freenode/#clasp - IRC Chatlog
Search
22:44:57
drmeister
I'm generalizing the exception handling code I wrote for bclasp so that I can use it for cclasp. That will make backtrace frames easier to install.
5:55:32
Bike
hi beach. i tried path replication to eliminate boolean assignments. seems to work, though there are some kludges i'll ahve to unkludge
6:06:59
Bike
well, the problem i had with (if (if (primop:whatever ...) t nil) ...) was that recognizing constants is a little difficult. so i moved up to generally (if (if ...) ...). because of how ast-to-hir works, that results in a test where each branch ends in an output to a temporary, which is then used as an input to an eq test
6:07:32
Bike
so, for each eq instruction it checks if either of its inputs are only defined twice, and that the two instructions defining that variable share a successor.
6:09:30
Bike
no. if the shared successor doesn't dominate the eq, it's possible to reach the eq while one of its inputs is undefined, so something went pretty wrong.
6:12:30
Bike
i figured it was kind of a fairly easy case, since without doing let-uninitialized the only way to get this hir is by (if (if ...) ...). and in actual code there's two or three instructions at most between eq and the shared successor, so there's not a lot to replicate.