libera/#clasp - IRC Chatlog
Search
14:56:37
drmeister
Phew - I got the clbind type cast graph moved into GC managed memory. That's an important step to getting it handled by the snapshot save/load code.
14:57:07
drmeister
Currently snapshot save/load doesn't save/load the clbind type cast graph and so clbind doesn't work with loaded snapshots.
14:59:48
drmeister
What's complicated about it is that it maps what source C++ classes you can cast to what target C++ classes and uses template specialized C++ cast functions to achieve this. So I have a mess of function pointers that need to be saved and then restored on load.
15:07:36
drmeister
Bike: Where are you at with the things you are working on. How is the scraper/static analyzer stuff going?
15:08:12
Bike
i fixed the analyzer to output an actual sif, and i have the scraper loading that sif and interpreting the tags, but it's not doing anything with the tags yet
15:09:17
drmeister
Ok - I'm running head first into the problems with the old method. To build clasp with both the seqan-clasp and cando extensions I have to rename clasp_gc_cando.cc to clasp_gc_seqan-clasp.cc (or something like that name).
15:09:53
drmeister
The wscript file has a way of cooking up a clasp_gc_xxxx.cc file name based on the installed extensions.
15:11:04
Bike
right... well, the fact is i don't understand what any of these data actually mean, which makes it a little daunting to proceed. even just outputting the code stream... i'm not sure the information in the tags covers everything that the analyzer outputs in the cc file
15:12:48
drmeister
Oh - ok - I thought you were moving forward with confidence. We can talk about it some more. I'm 99+% sure everything in the cc file can be generated from the tags that I had the static analyzer write out.
15:13:37
drmeister
Because I followed what the code generator in the static analyzer was doing and wrote out the information that it needed.
15:13:53
Bike
right... the particular example i was looking at i was wrong about, so maybe it's fine
15:14:47
Bike
and yesterday i tried to figure out libtooling enough to see if source information could be provided but that's a whole other can of worms
15:14:50
drmeister
The kind of new/hardest thing is to generate the stamps - are you starting with that or are you starting with the class layouts?
15:15:20
Bike
i figured i'd start with the layouts since that can be done independently of the other scraper information, i think
15:17:56
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/modules/clang-tool/clang-tool.lisp#L871
15:18:49
drmeister
mtag-source is what I was using to get source info - I believe. Are you familiar with that function and what it returns? I'm pretty hazy and would have to run some experiments.
15:19:53
drmeister
The static analyzer is driven by the clang tooling C++ code and it's hard to wrestle information out of it. So I tend to put print statements into the code (and leave them there - hence the huge amount of output).
15:20:15
Bike
i'm really not. but the source info isn't a big deal, i can figure it out later if ever, it would just mean i wouldn't get slot unbound errors whenever i try to print one of the analyzer tags
15:22:16
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L1772
15:23:24
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L1670
15:25:28
drmeister
Looks up the node bound to :method in the 'minfo' match result (I think it's a match result) and returns some kind of source info.
15:26:49
drmeister
I think that will give you the source position of every method declaration in whatever C++ header file of the C++ class/struct we are interested in.
15:27:22
drmeister
Yeah - really good source info is definitely available - because I was using this to do source to source translation.