freenode/#clasp - IRC Chatlog
Search
20:32:23
Bike
i was thinking the slowness was because of how i did catch, but maybe it's just inlining
20:33:00
Bike
as to what you said, yeah, makes sense. pcv is already pretty simple, though, it basically mostly does the filling
20:36:09
Bike
oh, and note to self, there are gonna be problems compiling tagbody if someone writes c ode with unreachable tagbody blocks
20:57:51
karlosz
Bike: you could run the profiler flame graph tool if you think something is slow and you don't know what it is
22:06:09
karlosz
at least not by the disassembly for (lambda (x) (let ((y x)) (let ((z y)) (print z)))) after the inline pass
22:20:51
karlosz
managed to get rid of all-functions in favor of module IR container for functions and delete trigger on enclose
22:22:15
karlosz
i couldnt decide between module and component but i guess in most compilers the container for functions is a called a module
22:30:16
Bike
i put in a quick fix to prevent it from trying to inline when the enclose is an argument rather than the callee
22:47:09
Bike
it gets kind of strict about replacing instructions, since it can't just add a use to something that already has a use. think i can fix this.
23:08:17
karlosz
there's already a manifest phase ordering problem just with delete-temporary-variables and inlining
23:09:45
karlosz
and theres still a bunch of code being generated just for (lambda (x) (let ((y x)) (let ((z y)) (print z))))
23:16:12
Bike
the dynenv reperesents the dynamic extent if it turns out to need a cell but the cell is dynamic extent
23:17:40
karlosz
i thought dynenvs were just markers for things that depended on lexical scope like dynamic variable bindings
23:19:50
karlosz
it just seems weird to me that variables which don't have dynamic extent declarations carry dynenvs
23:30:48
Bike
it's true that the dynamic extent of a leti could be narrowed by looking at liveness. i just wanted to preserve information from the source level if possible
23:31:12
Bike
like with my previous (mostly undeveloped) understanding of dynamic-extent, marking something as dynamic-extent would be only at the whole function scope
23:33:57
karlosz
there should always be an event that causes new variables to become temporary and get deleted
23:34:42
karlosz
like in the wiki page i posted earlier today the events are basically a variable losing SETQs or a readvar of that variable becoming local
23:35:08
karlosz
those are the things which cause lexical variables to become eligible for deletion or better represented
23:36:55
Bike
well, what about the initial pass? i think it would be kind of tricky to check at ast-to-bir time whether there's only one write and one read
23:40:46
karlosz
and of course having lets be converted directly to lexical-bind instructions in ast-to-bir will save a lot of work
2:22:22
drmeister
I'm setting up a loaner machine as a development system so I can get my macbook pro repaired.