libera/#clasp - IRC Chatlog
Search
13:56:12
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L2980
13:58:17
drmeister
:bootstrap, :lispalloc (Typical LISP_CLASS), :templated-lispalloc (templated subclasses like Wrapper<XXX>), :gcvector, :gcarray, :classalloc, :rootclassalloc, :templated-classalloc
13:59:36
drmeister
The static analyzer runs matchers on the C++ AST and the matchers are passed to the discriminator of a species to decide if the thing that is being matched is one of those species.
14:48:37
drmeister
So that to figure out if a class x is descended from A you simply check if its stamp is between the stamp values of A-D
14:48:57
drmeister
And if a class x descended from B you check if its stamp is between the stamp values B-D
14:51:09
Bike
and i have no idea what the "analysis" structure it uses is, and what these other fields in the 'stamp' struct mean, and so on
15:03:42
Bike
and i guess that's because all subclasses of derivable cxx object have the same stamp, even though they can be different C++ classes
15:03:53
drmeister
You can bring this up in slime - it takes a little bit of prep though. I can walk you through it.
15:05:20
drmeister
The header stamp is primarily for the garbage collector. The stamp and the where-tag part of the header stamp tells you where to look for the stamp used for dispatch
15:35:20
Bike
defvirtual binds a useless call-next-method - is that something that we'd ever actually be able to have or want?