Search
Sunday, 11th of November 2018, 1:50:17 UTC
2:07:33
drmeister
How does make-load-form-using-slots do?
2:08:12
drmeister
Bike: You are advocating using it here - right?
2:08:12
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/cmpliteral.lsp#L278
2:08:30
drmeister
Here: https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/cmpliteral.lsp#L269
2:09:22
Bike
using what where? i just meant we could avoid initialize-instance
2:09:50
drmeister
Right - I'm trying to figure out how to follow through with your suggestion.
2:10:01
drmeister
Because my idea was crap
2:12:44
Bike
well, i'm not sure what specifically is the problem with the current system
2:12:52
Bike
having two functions for each object does seem unfrotunate
2:13:00
Bike
and changing what make-load-form returns won't matter
2:13:20
drmeister
There is an entire function being created for each allocate-instance and again for initialize-instance from this...
2:13:32
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cleavir/inline-prep.lisp#L70
2:14:16
drmeister
That's like 50-100 lines of llvm-IR for to create and initialize one CLOS object.
2:15:32
drmeister
So - I tried this...
2:15:34
drmeister
https://www.irccloud.com/pastebin/TKEzUCje/
2:15:40
drmeister
in cmpliteral.lsp
2:16:16
Bike
Could we reasonably special case the situation of a creation or initialization form being only a function call?
2:17:01
drmeister
I thought I could - but this code gives me weird errors.
2:17:22
drmeister
(with-open-file (*debug-io* "/tmp/output.log" :direction :output) (compile-file "sys:kernel;cleavir;inline.lisp"))
2:17:35
drmeister
https://www.irccloud.com/pastebin/JQYNxOpA/
2:20:27
drmeister
make-load-form - you pass it an object as the first argument and it gets substituted in the create and initialization forms that are returned - correct?
2:20:36
drmeister
Somehow I'm subverting that.
2:21:05
Bike
you can only refer to the object in the initialization form
2:22:51
Bike
i think you're just misisng an argument.
2:23:01
Bike
it goes (add-creator "ltvc_whatever" index args...)
2:23:08
Bike
you're not passing an index.
2:40:38
drmeister
Yeah - that's still not enough - you need to compile the make-load-form create and initialize forms so that they compile other make-load-form forms.
2:42:02
drmeister
A simple thing I could do is suppress the spilling of register arguments - that's not needed at all.
2:42:18
drmeister
But beyond that it may need rethinking how to generate literals.
3:35:57
beach
Good morning everyone!
8:01:04
drmeister
I got inline.ll down to 1.8M lines of llvm-IR by removing the register spilling code.
8:01:13
drmeister
And I'm off to bed.
8:05:19
drmeister
Total lines of llvm-IR 8,673,062
8:05:42
drmeister
Previously 9,985,761
11:23:17
stassats
just reducing compilation size is just plugging holes, i'd rather make it involve zero compilation for constants
13:49:22
drmeister
Build time is down to 49 min.
Sunday, 11th of November 2018, 13:50:17 UTC