freenode/#clasp - IRC Chatlog
Search
11:03:37
Bike
if i compile (foo ...), that will compile as something like (funcall (car (load-time-value (function-cell 'foo +global-environment+))) ...). at runtime, if the function is unbound, calling the cell result will signal an UNBOUND-FUNCTION error
11:04:21
Bike
but if i compile (list #'foo), i get (list (car (load-time-value (function-cell 'foo +global-environment+)))). since the function isn't actually called, the error isn't signalled
11:54:54
drmeister
When I try compile-file'ing all cleavir source files, it goes into an infinite loop while or after compiling inline.lsp.
11:56:00
drmeister
If I load the cleavir source files the old way - it works fine - but doesn't go at all faster. It's really looking like jitted code is considerably slower and less optimized than AOT compile-file'd code.
11:58:42
Shinmera
Does LLVM have tuning properties for the tradeoff in JIT optimisation vs JIT compilation time?
11:59:21
Shinmera
It seems pretty strange to me that there would be a difference in quality of output if there isn't a tradeoff for compilation time.
11:59:41
drmeister
I define the JIT optimization pipeline - but it's kind of mysterious to me still.
12:06:59
drmeister
I added an optimization pass to bclasp that rewrites the llvm-ir to identify variables that can go into the stack frames, compress activation frames and remove empty activation frames. It should reduce consing as the code runs considerably.
12:09:00
drmeister
The most effect will be seen after inlining a bunch of small C++ functions that reveal that the the stack frame references can be promoted to registers and the mem2reg optimization pass is run on that to actually promote the stack frame references to register accesses.
12:10:06
drmeister
Without that the allocation-frame->stack-frame variable optimization doesn't improve things much by itself.
12:10:42
drmeister
So if the llvm optimizers aren't doing exactly what I want them to do - there can't be much improvement in performance.
12:35:33
drmeister
I compile-file 191 cleavir source files, reloading them as they are ready - then LOAD inline.lisp and then compile-file everything.
12:36:43
drmeister
At the very least - I should be able to push this stuff to github - I think it's ready to bring it online.
12:54:36
drmeister
I have one lambda-list/argument code generator now and it only deals in raw T_O* pointers
12:56:56
drmeister
These new llvm-ir rewriting optimizations added the time to do the new llvm-ir rewriting optimizations.
13:09:24
drmeister
Thank you - I realized I couldn't see it because I was in bclasp - cclasp is still building
13:09:43
Bike
beach: so, cst-to-ast and generate-ast both have the function special operator and global function calls go through a convert-global-function - i don't see where i can differentiate the special operator
13:10:11
Bike
i mean, other than putting a method on convert-special that redoes a lot of what the default one does, and i don't think theh functions are all exported
13:11:00
beach
Yes, I see. That may have to be fixed. Maybe in one case, wrap it in an AST that tests the return value.
13:12:01
beach
There might be functions that are not exported but that should. Not all that stuff has been tested.
13:13:22
drmeister
Bike: I'm not sure which 'inline thing' you are asking about. I didn't have any new insights about inline because I've been wrestling with getting things working.
13:16:21
drmeister
Oh - that. I compile-file everything up to inline.lisp and the load inline.lisp - that works.
13:17:05
Bike
oh, i see. if you get it stable enough to push i could look at why compile-file doesn't work
13:17:41
drmeister
I think it's stable enough to push - I'm just about in to the lab - I'll do it from there.
13:40:38
drmeister
Hmm, I'm getting this for clasp-cleavir::*global-optimize* --> ((COMPILATION-SPEED 1) (DEBUG 1) (SPACE 1) (SPEED 1) (SAFETY 1))
13:49:44
drmeister
I pushed through to testing, the VPN is working, but connecting in to linut the browser just hangs.
14:14:16
shiho
I'm trying to configure it for the first time so we can open a file in emacs from a shell in emacs.
14:25:50
beach
I wonder whether that is related to the problem I have with *cache-p* when I use CST-to-AST.
14:26:43
Bike
well, the problem is that sicl-genv:get-setf-expansion calls setf expanders with one argument, but setf expanders are produced by parse-macro, so they take two
14:27:05
Bike
that is, they take a form and an environment, but get-setf-expansion only passes the form
14:27:33
Bike
but i'm guessing on the latter part, since i'm not atually using sicl's define-setf-expander at the moment.
14:28:20
Bike
anyway, easily fixed, and i can have setf expanders that take the right arguments and setf works, so i can push that
14:30:15
Bike
no. i think what arguments setf expanders take isn't defined; clasp's take different arguments from sicl's, too
14:30:30
Bike
but setf expander lambda lists can have &environment, so they have to get that somehow
14:37:24
Bike
as a much more minor thing, get-setf-expansion should probably use *macroexpand-hook*, but i'm not sure how that would work with environments
15:03:04
Shinmera
shiho: All I had to do was (require 'server) (unless (server-running-p) (server-start))