freenode/#clasp - IRC Chatlog
Search
22:13:56
karlosz
Bike: i hacked up a prettier printer for the disasm. just a fun called print-disasm while keeping things sexp based
22:24:37
karlosz
a cool way to make traversing forward flow order on the blocks super efficient would be to cache a forward flow ordering in a list, and having that cache invalidated by triggers on graph modifications which change the iblock structure
22:25:24
karlosz
that would make things really efficient while at the same time giving a consistent view on forward flow, which is pretty important for forward dataflow analysis
22:28:40
Bike
the translator has to use map-reachable-iblocks instead of map-iblocks because map-iblocks is in some random order that doesn't work with llvm's ssaness
22:29:02
Bike
and map-reachable-iblocks does the whole seen table thing, so it's dumb, and caching the order would be much nicer
22:30:11
karlosz
we might want both if we're really tight on efficiency, but i don't think that's necessary
22:30:20
karlosz
its probably just better to use clos to cache just the forward flow ordering blocks
22:33:01
karlosz
anyway, at the very least there should be an interface to get the forward flow order blocks
22:35:04
karlosz
especially when you are doing a worklist algorithm, you'd have to do map-reachable-iblocks and build up the list anyway
22:35:39
Bike
yeah, we can define it in terms of map-reachable-iblocks for now and then make it a slot later
22:55:03
karlosz
yeah so the idea of forward flow order is that parents are always looked at before children
22:55:46
karlosz
it makes forward flow analysis converge much faster because you make sure to always propagate as much as possible from the parent to the child
22:56:21
karlosz
so like, with the flow graph A -> B, A -> C, B -> D C -> D you want to go A, B, C, D
22:57:57
karlosz
i tried changing map-reachable-blocks to forward flow and i got a problem in verify though
22:59:37
Bike
still, i don't understand how the traversal would matter. are you hitting iblocks more than once? that would probably screw it up.
23:01:38
karlosz
i guess it makes sense to start of with some kind of set api so not everything is just a list
23:03:07
Bike
basically yes i didn't want the api to guarantee things are lists when they don't need to be ordered.
23:39:41
karlosz
i wanted to see what non local exits looked like but (lambda (x) (block hey (lambda () (return-from hey)))) gives an error
23:44:17
Bike
some stuff with blocks and conditions was pretty broken. i'm HOPING i through debugging that kind of basic codegen now but who knows