freenode/#clasp - IRC Chatlog
Search
14:40:36
drmeister
https://github.com/clasp-developers/clasp/blob/imagesaveload/src/core/print.cc#L252
14:41:49
drmeister
So it should fall back and use the _GlobalValue but it's indexing into thread local value vector at index 0xffffffff
14:42:09
Bike
i think there's a distinguished "doesn't yet have an index" value that _BindingIdx should be
14:42:49
Bike
each thread has an array of bindings, and each symbol has a global index. when you bind a variable, the thread looks up the symbol's index, or assigns a new one to it globally and atomically, and then accesses that position in the thread lcoal array
14:43:35
drmeister
https://github.com/clasp-developers/clasp/blob/imagesaveload/include/clasp/core/arguments.h#L130
14:43:59
Bike
https://github.com/clasp-developers/clasp/blob/imagesaveload/src/gctools/threadlocal.cc#L77-L78 yeah, this thing, NO_THREAD_LOCAL_BINDINGS
14:44:12
drmeister
Yeah - the assigning it a new one - I don't see any tests for that - it seems to assume that it has a valid thread local _BindingIdx
14:46:17
Bike
DSM there calls threadLocalSymbolValue, which calls thread_local_value, which calls ensure_binding_index
14:47:10
Bike
https://github.com/clasp-developers/clasp/blob/imagesaveload/include/clasp/core/symbol.h#L114-L118 here it looks like you release the binding index but you don't actually change the symbol's BindingIdx?
14:50:57
drmeister
I'm starting up clasp in a weird state - I load the image into a clasp that hasn't been initialized like we normally do.
14:51:50
drmeister
It is dispatching into the correct function - that's a huge step. It got into cl__print. There is a lot of machinery to get that to work.
14:55:22
drmeister
Nope - it's not that it wasn't initialized properly - it's that I screwed it up. Fixing...
14:56:52
drmeister
I added a virtual method for fixing up objects on image load/save. So any class that needs special initialization when it's loaded from an image just needs to implement the method fixupInternalsForImageSaveLoad(FixupOperation& op)
14:57:18
drmeister
I'm using it to fixup code pointers, stream operation tables and reconnect to stdin, stdout, stderr
15:02:35
drmeister
When I try to grab the package write lock in intern. Am I not initializing pthreads?
15:05:08
drmeister
https://github.com/clasp-developers/clasp/blob/imagesaveload/include/clasp/core/mpPackage.fwd.h#L239
15:29:08
drmeister
Now I just need to get the object files talking to the JIT and we should be good.
15:30:03
drmeister
I've set it up as a sort of pluggable architecture - so fixing up objects is done by adding that method.