freenode/#clasp - IRC Chatlog
Search
4:13:03
Bike
well, it's 14.248/2.105 on this machine (which is worse, but also i'm chewing up the cpu), for pre-this, so that would be a reduction from 6.77 to 4.82
12:56:39
beach
I am starting to agree with Bike in that it might not be a great idea to have a CST syntax checker separate from the converter to AST.
15:02:40
drmeister
And in cl-wrappers.lisp is: (generate-direct-call-defun (core:magic-intern "cl__cons") (object1 object2) "wrapped_cl__cons" )
15:04:05
drmeister
And wrapped_cl__cons translates the arguments - which shouldn't be anything in this case, just wrap the core::T_O* in a T_sp
15:09:21
drmeister
I think that was so that these wrapped functions wouldn't override our cleavir inline versions
15:11:14
Bike
so, i mean, this lisp function isn't inlined. so (cons 'a 'b) calls a lisp function, which multiple-value-foreign-calls wrapped_cl__cons, which finally calls cl__cons?
15:12:49
drmeister
Yes - and the the core:multiple-value-foreign-call can cause the wrapped_cl__cons to be inlined in the lisp function via LTO and the core::cl__cons function can be inlined in the wrapped_cl__cons via LTO.
15:14:55
drmeister
Right - now this is assuming all this stuff is working and LTO is working as it should.
15:15:37
drmeister
We can verify it if we compile-file some test code and link it to fasls while saving the llvm LTO temp files.
15:16:17
drmeister
LTO kind of does it's think when clang runs on the final link product. But it's set up to turn on a flag that saves the intermediate optimized bitcode files.
15:22:34
drmeister
There can be no variadic functors in calls involving these functions. If there are - then something is wrong.
15:25:28
drmeister
My reading of the C++ rules and my occasional tests tell me that T_sp should be passed by value in a single pointer and that creating them and using T_sp x; x.raw_() or x.rawRef_() should be zero cost.
15:48:35
drmeister
cclasp appears to be building fine. I'll push to testing and get some timing - now with direct-calls turned on.
15:53:29
drmeister
The other thing is to make sure LTO is on and that I haven't left something else disabled or some other debugging flags on that could be slowing things down.
15:55:38
drmeister
And there are a lot of calls that aren't being wrapped at the moment - investigating...
15:59:10
drmeister
The 'cclasp-boehm' executable is the executable that has everything inlined as well as it can be.
15:59:54
drmeister
the 'iclasp-boehm' executable relies on calls from the Common Lisp code to the C++ code - but not through VariadicFunctor - straight up calls.