freenode/#clasp - IRC Chatlog
Search
13:56:13
beach
Bike: What criteria do you currently use in order to determine whether inlining is possible?
13:58:51
Bike
a function can be inlined if it doesn't close over any functions that escape, it doesn't call itself even indirectly, and it doesn't escape. probably the last isn't necessary
14:01:42
Bike
i also used to have that the function couldn't close over anything. you were surprised by that and i realized it was unnecessary
14:04:22
beach
Now, do we have a reliable analysis to determine whether a function creates a closure that escapes?
14:07:08
Bike
https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/HIR-transformations/escape.lisp#L44-L65 here's my analysis
14:08:22
beach
In line with my new "purpose in life", I'll try to pay more attention and read more of your code in the future.
14:09:01
Bike
Which just follows assignments until it finds something else, and determines that a function "escapes" if it's anything other than a funcall or multiple value call
14:09:44
beach
In the near future, I am thinking I should read and try to understand your code. Would it be OK then if I start asking you questions about it?
16:32:29
Bike
drmeister: speaking of the condition printing stuff - if i do %a in bformat will that be like ~a?
17:46:59
drmeister
Bike: No - there is a short list of format specifiers that translate to C++ boost::format specifiers - I don't think ~a -> %a is one of them.
17:47:38
Bike
Just wondering if we could fix that thing where errors during build don't display correctly until you quit.
19:50:14
karlosz
is there a way to tell if there's a path between two instructions? following the directed edges
19:53:08
karlosz
apparently the catch instruction doesn't necessarily have to dominate all instructions before its two branches merge again
20:04:50
karlosz
is it still necessarily true that catch-instruction dominates everything that succeeds it?
20:09:54
karlosz
i mean like a case where you have some directed edge into a block succeeding catch but not itself dominated by catch
20:10:29
Bike
you need to have this catch close instruction at the point the block is no longer valid, right?
20:10:45
karlosz
im inserting catch close instruction at the predecessor dominated by the first successor of catch
20:11:00
karlosz
but thats not working for some convoluted cases, hence why i asked by using the weaker path condition instead
20:15:12
Bike
I mean, if you have like (block inner (return-from outer)) how does the inner block get closed?
20:15:13
karlosz
what i have works for the majority of non local exits. this is some voodoo coming from restart case
20:17:33
karlosz
right, this catch close is just for deallocating the block frame allocated onto the stack
23:51:41
drmeister
::notify karlosz Could you compile alexandria and time it? I'm dying to compare timing values between Clasp and your setup.
0:32:56
Colleen
karlosz: drmeister said 41 minutes, 15 seconds ago: Could you compile alexandria and time it? I'm dying to compare timing values between Clasp and your setup.
0:34:06
karlosz
caveat: this is with cleavir compiled with clisp. it shouldn't matter too much, but im unable to use cleavir entirely compiled with cleavir at the moment because it segfaults while self compiling somewhere in generate ast
0:37:44
karlosz
theres a lot of low hanging fruit on my end in terms of bringing the compile time down
0:38:12
karlosz
using a real basic block representation would shave a lot of linear lookups for successors
0:40:01
karlosz
in fact ill go ahead and implement that right now to see how much of a difference it makes...
1:09:48
karlosz
partially cleavir compiled cleavir and clisp compiled cleavir dont seem to differ much in terms of compile time
1:17:22
drmeister
karlosz: Could I get a copy of what you are running at some point to compare to clasp?
1:22:52
karlosz
into clisp and switching cleavir-clisp::*use-cleavir* on and compiling forms, if you actually want to run it
1:23:25
karlosz
to load alexandria you have to load it once with clisp to get the macros in and then (let ((sys::*load-compiling* t)) (asdf:load-system :alexandria :force t)) to compile it with cleavir
1:31:36
karlosz
you don't have to compile clisp yourself. i think a binary copy from whatever package manager works well enough
1:33:33
karlosz
but i need to load it once and then manually have asdf force compile it with cleavir
1:34:17
karlosz
make sure you load alexandria with clisp first -- some macros are declared in the same file they are used in alexandria
1:45:10
karlosz
the compiler is written in lisp, but it compiles to a bytecode stack virtual machine that is implemented with C
1:49:13
balrog
ugh, this box seems to hang when compiling large projects. might be time to replace it :|