freenode/#clasp - IRC Chatlog
Search
8:08:49
frgo
kpoeck cracauer: Build succeeded with the given commit. Buuuut it hangs comopiling quicklisp now.
14:38:21
drmeister
I forgot to upgrade to BigSur on my macmini - so I'll bring in an extra power supply and do it at work.
14:38:51
drmeister
Lang Hames is working on the exception handling support for JITLink on llvm12 for linux.
14:45:45
drmeister
Then there is a pass in llvm that converts address space(1) annotations into stackmap entries. Badda bing.
14:47:55
drmeister
This means that our tagged_ptr and smart_ptr - which we use everywhere to indicate GC managed pointers - can be annotated to contain an address_space(1) pointer.
14:48:43
drmeister
There is a hitch. I haven't been completely dogmatic about using smart_ptr/tagged_ptr to indicate GC managed pointers.
14:49:28
drmeister
There are also internal pointers for things like strings. There has been some leakage into regular pointers.
14:50:21
Bike
i think i've mentioned this before, but i really don't like the array operators we have that let C++ get a regular pointer to the data
14:50:54
drmeister
I'm looking forward to incorporating MMTk where we can take more control of the stack scanning.
14:51:57
drmeister
We might be able to do something like precise GC from the stack - but pin objects that are on the stack.
14:52:58
drmeister
Rely on precise pointers to keep things alive and pinned from the stack. It's going to be a while to get there.
14:53:15
Bike
yeah, i'm not totally clear on what the statepoints stuff is doing with the addrspace markings
14:54:16
drmeister
The statepoints is independent. We define a @gc.safepoint_poll() function and provide the code for inlining in llvm.
16:09:56
drmeister
We can provide the @gc.safepoint_poll() code (it needs to be tight) and then run the pass to add safe-points to the llvm-IR. Then we can take a look at how they are distributed. Once MMTk 0.3 comes out in February (or whenever, no hurry) we can work through the tutorial and implement bindings for clasp that work with MMTk. I'm hoping that in the coming months to a year MMTk will grow in power as it gets a port of immix
16:09:56
drmeister
and we can transition to it fully. We have maintained a discipline of manipulating GC managed objects using a C++ template class that wraps a tagged pointer. We can annotate that tagged pointer with __attribute__((address_space (1) )). Then we can run the pass that converts those pointers to GC stackmap entries. With this we may be able to do better than fully conservative stack scanning. I'm thinking MAYBE we can rely
16:09:56
drmeister
on precise pointers (in stackmaps) from the stack to keep objects alive and pin them and use exclusively precise pointers on the heap.