libera/#clasp - IRC Chatlog
Search
3:07:30
Colleen
Bike: drmeister said 2 hours, 51 minutes ago: the arguments for jump dereference *pc as an unsigned byte - so we can only jump forward and by 256 bytes. We need to implement the clisp argument compression scheme that can handle signed 7bit, 15bit and 32bit values.
3:07:30
Colleen
Bike: karlosz said 2 hours, 44 minutes ago: I implemented catch and throw pretty much the way clisp does by saving the label in the dynenv object, should work with the clasp representation i think. in the prototype vm it seems to work with interleaving native and bytecode
3:07:50
Bike
i think i'm the best placed person to do the nlx stuff in the vm, since i've rewritten clasp's nlx like three times so far
3:08:51
Bike
this is what, some scheme like if the high bit of a byte is zero it's just a seven bit number, if it's one it's two bytes?
3:31:54
Bike
by the way, for the non-vm thing i was doing i ended up taking a look at all the bclasp special operators, and hoo boy. we might have to make some changes to the aclasp/bclasp sources to make them bytecompilable
3:34:39
Bike
oh, like just bytecompile everything from C++ and load cleavir from there without using the aclasp compiler?
3:35:30
Bike
right, well even then we'd have to watch out for stuff. e.g. in clos we use a couple special special operators for vaslists and stamps
3:35:55
Bike
in my other branch i've put in function calls for those, so they should be easier to work with
3:36:53
Bike
so either we need to build that special support into the bytecompiler as well, or do something less special
3:38:45
Bike
cclasp is now using them fairly extensively, but they should be basically untagged in that case, so they don't need any lisp accessibility
3:40:07
Bike
it uses "unboxed" vaslists. like how an unboxed double is just an llvm double, an unboxed vaslist is just { i64, i8** } or whatever it is
3:41:06
Bike
the idea is to let code like (lambda (&rest r) (dolist (x r) (print x))) not cons a rest list or even a tagged vaslist pointer
3:59:04
drmeister
It tests the uint16 argument functions by writing and reading powers of 2 and the int32 functions the same way for positive and negative numbers.
6:56:39
karlosz
big closure related optimizations just pushed - we no longer need to make cells and do indirection to get at function definitions for FLET or LABELS. we also don't cons closures at all when the enviornment size is zero and just call the function template object directly now - this is closurettes
6:57:24
karlosz
that should be easy to implement on the C++ vm side, right? we just need to make bytecode function template objects funcallable as well and have them always just use closure vectors of 0
13:27:51
drmeister
So the options are make entry-points into function objects or pre-allocate closures?
13:28:21
drmeister
At this point the EntryPoint_O hierarchy is starting to look like function objects
14:24:03
drmeister
1. We need to talk about pauses. https://usercontent.irccloud-cdn.com/file/4HciTBRK/image.png
14:25:10
drmeister
The cclasp compiler didn't like the (member :local :special :symbol-macro :constant) type
14:30:16
Bike
wait, it's wrong anyway, that's now how you specify a type in a defstruct. did i write that?