freenode/#clasp - IRC Chatlog
Search
15:59:38
drmeister
Signal an error in slime and then quit sldb. That always stresses our exception handling.
16:29:24
Bike
i mean i have this artificial one that i got by calling ERROR in a handler-bind, but that's uninteresting
16:42:25
karlosz
drmeister: right now, i'm only implicitly doing the analysis in my translate method for <-, so it's backend speicific atm. however, i think it should really be a backend independent HIR pass, so I'll try to write it.
16:43:22
karlosz
so how does one write this kind of HIR pass that goes through the whole graph and changes the graph structure? is there some sort of graph traverse i can use?
16:44:22
karlosz
map instructions or something? does that allow me to combine and remove nodes as well?
16:45:20
Bike
yes, the cleavir-ir package exports several functions for mapping and graph manipulations
16:47:04
Bike
when i've written similar passes, i've used map-instructions, conditionally collected instructions to delete, then deleted them all in one go
16:50:19
karlosz
so you're not making a new flow graph in a functional manner, but rather deleting nodes off the existing graph
17:58:48
karlosz
okay, so i've collected a list of useless asign nodes. should i call delete-instruction inside a map-instrucition call? that doesn't seem right. how do you mean you've deleted them all in one go?
18:04:58
Bike
something like (let (death-row) (map-instructions (lambda (instruction) (when ... (push instruction death-row))) ...) (mapc #'delete-instruction death-row))
18:06:35
karlosz
looking at the code for typeq elimination, it seems that it does also modify the instruction graph during mapping
18:09:56
Bike
other important functions are set-predecessors and reinitialize-data, which fix up the predecessor slots of instructions and the user/definer slots of data, resp
18:18:14
karlosz
i need to merge the uses and defs of the input and output of the assign node im deleting, and i want to make sure im not tripping over an actual invariant
18:21:36
karlosz
so if i want to delete a lexical location from the graph, do i just manually remove all its uses and defs? tjhere's no analog of delete instruction for actual data nodes, correct?
18:22:36
Bike
yes. you don't need to bother editing the datum itself, reinitialize-data will restore consistency after you mess witht he instructions
19:53:22
Bike
i merged a bunch of my sicl changes together and rebuilt everything, which resulted in alexandria failing even earlier
19:57:42
Bike
i isolated what form is having the problem, which is good. it's a page long macro,which is less good
19:59:34
drmeister
I still think we should have a HIR validator. We could write modules and come up with hypotheses about what is wrong and then test the HIR.
20:05:07
Bike
as usual, the hir is too big to look at as a graph,and reductions that really shouldn't change anything do...
20:14:48
Shinmera
the actual documentation can just be a file in the format of your choice (typically markdown or html)
20:15:31
Shinmera
I'm currently doing some more work on Staple to add stuff like source-code links to definitions.
20:16:38
drmeister
https://cloud.githubusercontent.com/assets/192614/17861955/29539898-6861-11e6-9072-82670e08f962.gif
20:18:33
Bike
as long as we have something written down, we can work out how to hook it up to whatever development environment
20:20:56
Shinmera
Either in the definitions, or anywhere else by (setf documentation), or using documentation-utils for a bit more convenience
20:21:13
Shinmera
The latter would also allow hooks to do markup transfomations and extraction if you ever want that in the future I guess
20:21:48
Bike
i don't care where we put it. moving it later is less of a project than writing it in the first place
20:24:21
Bike
hm, the bug seems to have the same source as last time, a datum with two owners. a man may not serve two masters
21:41:41
Colleen
DVSSA: drmeister said 8 hours, 49 minutes ago: Here is a good link that describes the Rosetta atom tree https://www.rosettacommons.org/docs/latest/getting_started/Getting-Started
22:17:01
karlosz
drmeister: if you're still interested, i've coded up a HIR pass I'm fairly confident reduces all <- nodes correctly. i've tested and graphed on a few inputs and i get good bytecode, but it would be great if you could test it with clasp.
22:19:37
Bike
if you have (setq x y) (setq x z) (f x), x has one use but can't be collapsed into y, but if i'm reading these conditions right it will be
2:22:00
drmeister
Bike: I mean to test it against the clasp source code - not to unilaterally incorporate it.
2:35:11
karlosz
drmeister: i think it would make sense to put it as the first optimization, right after converting to hir. that's the stage i applied the optimization to, and it should help speed up the other passes too
2:52:56
drmeister
We could postpone it until I get the kinematics working - but it helps to talk about it.
2:53:23
drmeister
When I first implemented it I made it way too complicated - I'm simplifying it now.
3:01:18
karlosz
Bike: you mentioned that generate asts is older. does that mean at some point it will be deprecated and a switch will be made to csts+ast?