freenode/#clasp - IRC Chatlog
Search
0:17:30
karlosz
i don't know if your new single dispatch changes is supposed to cause consing to go down significantly, but the if-if changes did cause reduced consing because less llvm instructions got consed up
3:25:37
drmeister
That is probably your stuff. The single dispatch changes shouldn't change how much consing is going on - not 250 mb
3:26:27
drmeister
::notify Bike We are getting a weird crash on the buildbot with the deploy script. Not anything else, not macOS, not my linux machine - just the buildbot. The error and some of the backtrace is here: https://gist.github.com/drmeister/8232a97e40b55f477bcbdef56fba3fa1
3:28:29
drmeister
It's very reproducible - it's happened five times in a row with different commits. Any ideas?
4:58:14
karlosz
wow, some incredibly simple changes now gets ironclad compiling like: Time real(125.112 secs) run(125.114 secs) consed(8553760464 bytes) interps(2) unwinds(1540)
5:00:53
karlosz
::notify Bike you're not going to believe this, but a 3 line change causes an entire gigabyte less of consing while compiling ironclad and also shaves 20 seconds off the whole kaboodle from 2 mins 20 seconds to 2 mins. the change looks like this... https://paste.gnome.org/pryehpgkv
5:01:55
karlosz
since (cl:car ...) and (cl:null ...) are so frequently inlined, making the expansions easier for the compiler to digest (not having to bring in the definition of EQ in, for example), makes the compiler's job a lot easier
5:02:38
karlosz
so i think rethinking how we implement primitive operations/transform stuff is going to be pretty important, since we want to have a better handle on the type directed machinery anyway
5:05:54
karlosz
how i noticed this was i just did https://paste.gnome.org/pmrzyzftg and noticed that's a shitton of initial BIR code just to compile CAR which we need to crunch through on every inline
6:49:26
karlosz
drmeister: it's just code corresponding to this: https://github.com/clasp-developers/clasp/blob/3a758559ed3ac3b2868a97743d3ede111d47aefb/src/lisp/kernel/cleavir/inline.lisp#L310
6:52:02
karlosz
hence why removing the call to eq (which needs to get inlined) reduces the amount the compiler has to process
6:52:26
karlosz
it only makes such a dramatic effect because these things like CAR are so ubiquitous