freenode/#clasp - IRC Chatlog
Search
20:16:45
drmeister
We could then make one pass through the RUN-ALL's to initialize all classes in all linked modules and then a second pass to run everything.
20:18:16
drmeister
Right - but the class initialization can then be distributed across multiple compilation units that are linked together.
20:19:04
Bike
this is unrelated, but what does count-calls do? i figured it would just be asthe name says
20:19:18
drmeister
It's run first even if it came from multiple compile-file's that were linked together.
20:26:21
Bike
is there some way to look at the post-optimization llvm-ir easily? is that the assembly compile-file puts out, or is that pre optimization?
20:27:04
Bike
also i wonder if we couldn't store classes (and otherobjs) as literal objects in files instead of constructing them
20:27:37
drmeister
Is this a fasl file generated using link-time optimization? I think you can tell if there is an object file generated - then it's not LTO and if there isn't an object file then it is LTO.
20:28:59
drmeister
The file you are compile-file'ing - does it generate a .o file or just the .bc/.ll file?
20:47:31
drmeister
We would have think hard if it's (1) possible with Boehm (2) possible with MPS (3) cost with MPS Boehm - I'm not so worried about - it could be slower and we switch to MPS as our production GC.
20:53:13
drmeister
Basically you want to compile data into a fasl file - and not generate code that generates the data at startup. We would have to do that will all literals wouldn't we?
20:59:01
drmeister
I think everything needs to be compiled that way - or nothing. Class definitions need symbols and they need packages and strings ...
21:02:24
Bike
Like right now, for strings, we have the data in the fasl,and then run-all just makes a base-string.
22:42:00
drmeister
Bike: I had a short conversation with David at Ravenbrook about loading compiled objects into the MPS - that is starting to look like the biggest problem that we have.
22:43:04
drmeister
Would you agree? If we had a way to compile data into fasls and then access it like regular MPS objects when the code is loaded - then we wouldn't have all these optimization problems.
22:46:32
drmeister
I need some clarity here - is there any to be had? Imagine you take all the ltvc_xxx functions and run them before any other code is evaluated and generate all of the data structures at once. Now get rid of all that and just restore the data structures. Can we then have inlined asts for all functios that we want inlined?
23:51:36
drmeister
(1) How do other lisps handle data like this? (2) beach had a scheme to use the linker to resolve pointers - how did that approach deal with tagging?
23:57:04
drmeister
Martin is picking me up soon - I'll talk with him about it. I want an excellent way out of this problem.
2:14:11
Bike
you can't use it for multiple-value-setq directly since it doesn't handle specials or symbol macros
2:16:43
Bike
but you can just expand (m-v-b (x y) form ...) into (let-uninitialized (w z) (primop:m-v-setq (w z) form) (let ((x w) (z y)) ...))
2:17:23
Bike
actually, if you just do that, and then have m-v-setq expand into setf values, that'll probably handle it, since setf values expands into multiple value binds unless clisp is extremely weird
2:23:05
Bike
https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Intermediate-representation/HIR/multiple-value-related-instructions.lisp#L48-L67
2:24:54
Bike
the primop is definitely converted into the ast/instruction https://github.com/robert-strandh/SICL/blob/master/Code/Cleavir/Generate-AST/convert-primop.lisp#L319-L338
2:37:01
karlosz
thats just for defining the function in the first place, kind of like call-with-variable-bound
2:38:09
karlosz
the point is that the host compiler knows how to compile m-v-l so you can compile code with m-v-c in the new compiler