libera/#clasp - IRC Chatlog
Search
12:45:45
drmeister
I think we should implement the interpreter straight into c++. In Common Lisp it will be weird and require more functions to be exposed.
12:51:05
drmeister
I don’t understand it. We will probably end up with something similar but with exception handling built in.
12:56:23
Bike
we have a stack machine with a variable size register file, kind of like the jvm as i understand it
13:07:17
jackdaniel
all that to ensure seamless integration between native code and the bytecodes vm
18:06:03
Colleen
karlosz: drmeister said 17 hours, 26 minutes ago: I just realized I'd need to expose stack manipulation functions, closure slot accessing functions, and multiple-value accessing functions if we want to implement the VM in Common Lisp for testing. Should I?
18:07:08
karlosz
we already have an implementation independent prototype vm for the bytecode machine which does weird stuff like emulate pointers and pointer arithmetic with array indices. it's not great
18:07:28
karlosz
interior pointers into the stack/bytecode array/literals array make way more sense in C++
18:12:22
drmeister
Ok, then we are all agreed. The VM bytecode machine will be implemented in C++ from the start.
18:13:03
drmeister
I'd like to implement a couple of instructions, like (NIL) and (RETURN) to get started.
18:15:15
Bike
the current compiler doesn't do declarations at all, and that's the part that makes let* annoying to compile
18:15:35
Bike
i've been distracted by cclasp stuff, but i should be able to do that, especially since aclasp already has the code for it
18:22:41
karlosz
aux doesn't need that declaration stuff but i figured it might share a big chunk of code with let*
21:00:02
karlosz
it was a mistake to make the function for a function call be at the top of the stack
21:00:25
karlosz
even though in CL the function can be "evaluated" out of order with the args, this isn't true for multiple value call or funcall
21:00:36
karlosz
and it doesn't really hurt to change it to be bottom of stack, that's how clisp does it to
21:28:24
Bike
it would probably behoove us to support a direct call special operator a la cleavir-primop:funcall. i think aclasp might already support that even
22:55:53
karlosz
drmeister: we were compiling (f x y z) with (PUSH X) (PUSH Y) (PUSH Z) (PUSH F) (CALL)
22:56:23
karlosz
but really it makes more sense to do (PUSH F) (PUSH X) (PUSH Y) (PUSH Z) (CALL) because funcall evaluates its first argument (the function) before everything els