freenode/#clasp - IRC Chatlog
Search
15:53:51
drmeister
I've added a 'datum' type to the literal compiler. It stores the index for the datum in the literal table or if it's a transient value it stores a gensym to uniquely identify the transient. It's on the way to creating the bytecode interpreter. I'm stealing ideas from Cleavir.
15:55:42
drmeister
Right now the literal tables are full of transient values that are only there to create 'toplevel' values that the code references. I want to get the transient values out of there and only store 'toplevel' values that the code references. It will make the literal tables much more compact.
16:02:10
drmeister
i'm introducing the concept of a 'toplevel' value - one that is referenced by the code and a 'transient' value - one that is created by the literal interpreter to create a 'toplevel' value. The code only refers directly to 'toplevel' values.
16:03:14
drmeister
In your example above NIL and (nil #1=(#1# . #1#)) are toplevel values. #1# is transient.
16:04:41
drmeister
But if we had say... ("hello" #1=(#1# . #1#)) then only the ("hello" #1=(#1# . #1#)) would be toplevel.
16:11:59
Bike
the real problem with this hir stuff is it means i need to go through landing-pad.lisp again
16:12:23
Bike
i think any cleanup code needs to be duplicated a bunch because we need to rethrow any unwinds for other frames, but merely resume any non-unwinds
16:13:03
Bike
maybe we can just not start the "catch" thing until after we check whether it's the same frame? is that kosher?