libera/#sicl - IRC Chatlog
Search
13:25:30
jackdaniel
bike: here's another question - in compile-ast you stipulate that the function returns NIL for no values, :no-return or (list bir) -- is NIL used anywhere? if so, couldn't it be represented with a bir standing for 0 values?
13:51:08
bike
jackdaniel: that's "no values" in a sense different from (values) - it means for ASTs that conceptually do not return values, like set-constant-symbol-value
14:00:13
jackdaniel
this ast does not seem to have a documentation; what is an advantage of having ast nodes that do not return values but are not non-local transfer control?
14:05:15
bike
set-constant-symbol-value represents the setting part of (setf *special* value). it's generated by convert-setq-special-variable. if you check convert-setq.lisp, you can see it only generates it in the middle of a progn where it's OK
14:06:22
jackdaniel
I see; would it make a difference if it was handled as if it were returning 42 or anything else?
14:12:19
bike
i'm not sure exactly what that would mean. the equivalent instruction has no outputs, so it doesn't "really" return anything
14:13:55
jackdaniel
I was thinking whether there are some gotchas if I don't handle such special case myself, that's all. I think I have a gist of it, thanks
14:18:48
bike
there are few of the no-value ASTs and it might be a good idea to eliminate them to make things more regular.