freenode/#clasp - IRC Chatlog
Search
20:09:15
kpoeck
I am working around that by adding &key #+clasp &ALLOW-OTHER-KEYS in every accept methods that reads ... &key )
20:18:23
karlosz
with bir compile (disassemble '(lambda (x) x) :type :ir) throws "Could not recover jitted module..."
20:22:25
Bike
put a (cmp::potentially-save-module) in TRANSLATE after memoized-layout-procedure has run
20:33:14
kpoeck
Bike: do you believe that https://github.com/clasp-developers/clasp/issues/733 is an error that needs to be fixed? This issue is happening now a lot in mcclim (found like 20 places already)
20:35:10
Bike
i don't think the standard is very clear, so i wouldn't mind changing clasp to undo the bug.
20:40:18
Bike
i'm definitely happy with the faster turnaround disassemblywise, but there are some obvious improvements to be made
20:40:47
Bike
not just the verifier and ast-to-bir, but like more making names consistent. functions have names now but the disassembler ignores them. iblocks should probably have names as well
20:46:28
karlosz
and designing the disasm tool in such a way that it can also just output into a graphviz to stuff the text into a basic block cfg
21:04:28
karlosz
Bike: do you particularly care about having a sexp trace or do you think it would be cleaner to just print the IR to a stream
21:05:17
Bike
i do kind of like the sexp trace. i was kind of imagining something like ccl's disassemblies
21:06:34
Bike
i certainly wouldn't mind having a print to stream thing, since that's probably the most common action anyway
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