Search
Tuesday, 26th of May 2020, 1:42:01 UTC
1:54:49
drmeister
With the old discriminating function compiler the build takes 18m0s
1:57:43
drmeister
Going back to the control flow graph...
1:58:23
drmeister
The llvm-ir for Instance_O vs FuncallableInstance_O looks identical - is the rack at the same offset at the moment?
1:59:41
Bike
but that could change, or we coudl use the same thing for derivables where the rack is at a different offset.
1:59:50
drmeister
https://usercontent.irccloud-cdn.com/file/HuPr1vAq/image.png
2:00:07
Bike
the switch is different, but i assume you mean other than that part.
2:00:16
drmeister
Yes - other than the switch.
2:01:01
Bike
splitting it up also means that we do one 3-switch on the header and then a 2- or 3- switch on the rack stamp, rather than a switch on the where tag followed by a 5-switch on the rack stamp.
2:03:00
Bike
though honestly i have my doubts that the speed of the switch is relevant at all
2:03:10
Bike
especially for actually generic functions. this is simpler than that, though
2:07:14
Bike
should do some metrics on the average spread, at some point when i'm less sick of this code
2:09:18
Bike
i gues a histogram of call history lengths would probably be a good start and easy to do
2:16:42
drmeister
Do you want to push that code then?
2:17:32
Bike
i'll do it tomorrow along with the interpreter.
2:17:44
drmeister
How do you generate the llvm-ir for a discriminator using compile-file?
2:18:30
Bike
quickest way would probably be #.(clos::generate-discriminator #'generic-function)
2:19:11
drmeister
That generates what? A Module?
2:19:42
Bike
try (generate-discriminator #'some-generic-function) in a repl and se
2:20:11
Bike
the discriminating function generator hasn't involved llvm in like over a year now
2:20:26
drmeister
Oh yeah - Common Lisp.
2:20:50
drmeister
Are we using Cleavir or bclasp to compile those then?
2:22:46
Bike
bclasp generally. if you put it in a file and you're in cclasp it'll be cleavir, though.
2:23:11
Bike
i have some ideas for using cleavir for the runtime compiles, but i haven't bothered
2:24:24
Bike
actually it might be possible to do so now since dispatch misses don't invalidate the function, but i dunno, i don't like going down that rabbit hole
2:24:31
drmeister
https://www.irccloud.com/pastebin/OR0WBPun/
2:24:42
drmeister
#<standard-generic-function print-object>
2:24:53
Bike
clos::discriminate is a macro that does most of the work
2:25:04
Bike
in this case it looks like you've never called print-object
2:25:13
Bike
so it just dispatch misses immediately
2:25:31
drmeister
Uh huh - right - I gotta call the generic function.
2:27:06
Bike
cleavir-ir:successors is a function i use for this sometimes, since it's inevitably got a call history that's like 60 long
2:27:22
Bike
though they all have the same outcome
2:27:29
drmeister
Ok but what do I do about the #<xxx>
2:27:53
Bike
you want to see how the macro expands/
2:28:22
Bike
i usually pick out the form and call macroexpand myself. like (macroexpand-1 (third (fourth (third (third (fourth form)))))) in this case
2:28:22
drmeister
I'd like to get the llvm-ir for a discriminating function.
2:28:26
Bike
not the prettiest, but it works
2:28:33
Bike
er, then just put it in a file and compile the file.
2:28:51
drmeister
It won't read because of the #<xxx>
2:28:53
Bike
like i said. just put #.(clos::generate-discriminator whatever) in an otherwise empty file and compile that.
2:29:29
drmeister
You said "quickest way would probably be #.(clos::generate-discriminator #'generic-function)"
2:29:44
drmeister
It helps to be more explicit like...
2:29:58
drmeister
The quickest way would probably be to put #.(clos::generate-discriminator #'generic-function) into a file and compile-file it.
2:31:32
drmeister
So I put this in a file...
2:31:32
drmeister
quickest way would probably be #.(clos::generate-discriminator #'generic-function)
2:31:44
drmeister
#.(clos::generate-discriminator #'clos::initialize-instance)
2:32:00
drmeister
https://www.irccloud.com/pastebin/BFnZUT6C/
2:32:38
Bike
lemme remember how to do this
2:33:50
Bike
uh, maybe do #.(clos::compile-time-discriminator #'initialize-instance (clos::generic-function-call-history #'initialize-instance))
2:34:23
drmeister
Yes - that worked.
2:37:49
drmeister
How do you get llvm-ir? I get a fasp file.
2:38:04
Bike
use the serial compiler
2:38:31
drmeister
f*ck - I can't even keep this straight.
2:39:45
Bike
your ir will have some fixnum tests it doesn't need to. i cut those out locally to see if they were the problem
2:39:51
Bike
otherwise it ought to look pretty much the same
2:58:57
beach
Good morning everyone!
Tuesday, 26th of May 2020, 13:42:01 UTC