freenode/#clasp - IRC Chatlog
Search
4:11:04
karlosz
so im describing the problem of putting create cell instructions at the top of all enter instructions, instead of where they come in scope
4:11:16
karlosz
Bike was suggesting we create special ast node subclasses to denote where a variable comes in scope
4:12:34
karlosz
right, but that way of fixing things would preclude us from doing any drastic graph modifications between ast->hir and closure conversion, since graph modifications can invalidate the scope information easily
4:13:45
karlosz
yeah, when this is fixed we should be able to compile (loop with x do (block nil (if (null x) (setf x (lambda () (return))) (funcall x)))) correctly
4:14:54
karlosz
beach: do you know what has happened to the clim channel? i havent been able to connect to it recently. something about freenode getting lots of spam recently
4:16:41
beach
I had to use Clouseau on the ENTER-INSTRUCTION, but the combination was enough to find the problem.
4:17:21
karlosz
yes, that sounds like exactly what we need. any other ambiitious plans for it you plan on implementing in the near future?
4:18:09
beach
Not really. I was thinking of adding features as they are needed. It is a small program and since it is CLIM, it should be easy to add new features.
4:20:18
beach
As with HIR, for ASTs we have a better idea than GraphViz does what layout we would like to see.
4:22:15
beach
Right. But the particular bug I had the other day was that there was an FDEFINITION-AST that should not have been there, and I would have seen it immediately because the AST was quite small.
4:23:09
beach
As it was, I wasn't sure whether it was in the AST or whether the FDEFINITION-INSTRUCTION was introduced by some HIR transformation.
4:26:45
karlosz
right, you'd have to keep track of the object identities and draw the graph on paper or something to have a good picture
6:14:21
karlosz
::notify Bike I found a possible cause. Code like this (let ((*x* (or ... ...)))) can introduce a lexical location that is defined in two branches. Thus, we have our no dominating definer case we were looking for. I generalized the code to handle placing it in the lowest common ancestor node in the dominance tree.
6:16:12
karlosz
::notify Bike i meant that the let can introduce a lexical location which can be captured and has no dominating definer.
6:30:23
beach
The extraction of macro expanders to separate files turned out to have an interesting twist to it. Several such macro expanders call GET-SETF-EXPANSION, and if the expander code is executed by the host, the host version of that function will be called with a Cleavir environment, which does not work of course.
6:30:24
beach
The fix was simple: just replace calls to GET-SETF-EXPANSION by calls to the SICL-specific equivalent.