freenode/#clasp - IRC Chatlog
Search
20:06:00
drmeister
I'm guess that we are still spilling registers into the register save area of the generic function... checking...
20:07:26
Bike
by the way, to test the outcomes, just look at the call history. there's a fast-method-call structure
20:07:50
scymtym_
drmeister: you could also declare N to be of type fixnum to avoid generic arithmetic overhead. i have seen these things matter in my own fastgf benchmarks
20:23:04
Bike
well... beats me. they're functions that exist, i assume there's an llvm name for them somewhere
20:28:58
Bike
well, you can just turn on debug fastgf and get the thing dumped as ir i can actually sort of read
20:31:58
drmeister
Why is there double and float math in the loop? Is that the inlining without type inference and elision?
21:22:26
drmeister
It's calling llvm.va_end on an uninitialized va_list in dispatch-va_list* - that's not good.
21:28:22
Bike
i found a bug in applicable-method-p, not sure if it's what's causing the weirdness though
21:28:32
drmeister
We could get rid of some of the bit shifting if we compared the stamp to tagged stamp values - but other than that - I don't see much more room for improvement.
21:29:43
Bike
applicable-method-p thinks that a call history entry with an eql specializer never has any methods without eql specializers in that position apply to it, which is pretty wrong
21:31:02
drmeister
generic functions that take eql specializers and class specializers in the same position - I'm puzzled by some aspects of that.
21:31:25
drmeister
What if you have (defmethod foo ((x (eql 'a))) ...) (defmethod foo ((x symbol)) ...)
21:32:34
drmeister
I didn't know that eql specializers mean "more specific" if the eql specializer applies.
21:33:17
drmeister
But you are saying that if the eql specialized method calls call-next-method - it should end up in the symbol class specialized method.
21:35:36
Bike
i ran into this with cleavir-compilation-policy:compute-policy-quality, which is in this situation of having an around method
21:36:15
Bike
and... it not being called actually explains some weird behavior i noticed months ago, but isn't anything major
21:44:48
drmeister
Understood - I only say that because it involves code walking and the code walkers (bclasp and cclasp) are a little squirrelly.
21:48:39
drmeister
We inherited this generic-function slot called spec-list - it keeps track of when a generic function argument position includes eql specializers or not - I only have a vague idea of how it works.
7:38:35
beach
I improved the SICL reader so that it handles end-of-file better. I can see two more obstacles for you to use it. One is that the source information should be possible to customize. Currently, it just returns a CONS of the file positions before and after the object read. Another is that what the backquote reader macro returns is not possible to customize. Currently, it uses QUASIQUOTE, UNQUOTE, and UNQUOTE-SPLICING.
7:39:28
beach
I use the improved reader myself now in the SICL boot procedure, so it is able to read all the code that is being loaded during that procedure.