22:02:18moon-childhmmmm what if you did a mimalloc style allocator but with trees instead of freelists?
22:02:38moon-childI'd think it'd be much nicer to cache
22:02:55moon-childsince a tree node has a bunch of children, vs just 1 in the freelist case
22:03:32hayleymoon-child: At SAVE-LISP-AND-DIE I'd like to compact everything in one go. But, yes, I could do multiple passes.
22:04:11moon-child(you'd need a parent pointer, of course; so useless for conses, but anything bigger...)
23:08:22moon-childI guess it could work for conses. If you do blocks of 64k cells, a pointer can be a 2 byte offset
23:53:30hayleyI'm also not sure about using a break table. There was a recent publication about compressing forwarding information in ZGC I should investigate. But, all things considered, I'd have to try hard to have worse results than doing semispace copying.
23:57:21hayleyhttps://inside.java/2020/06/25/compact-forwarding/ I think OpenJDK also grows objects to store a hash? Or maybe not, I don't remember.
23:58:34hayleyThe algorithm there looks identical to the algorithm for the Compressor.