random-state.net

Nikodemus Siivola

<< next | top | previous >>

August 20th 2004 #
random, August 20th 2004

Wild ideas about shrinking SBCL core sizes — not necessary as practical you might like, though... This is entirely in the realm of speculation:

  • Code vector compaction. When purifying, replace identical code vector tails with jumps to a shared tail. I'm guessing that the sharing could be fairly significant, since many tails are inlined boilerplate error handling code — which would also mean that the effect on locality might not be as bad as you'd think, since most of the affected code would be run only when encountering an error. Interactions with breakpoints might be nasty, though...
  • Code vector sharing. A less radical cousin of the above: when purifying share fully identical code vectors. Boring, and not necessarily very effective — but who knows.
  • Symbol name sharing. Make symbols with identical names share the same namestring. This might actually be fairly simple to do, but I'm not all that sure of how effective it would be.

As far as ideas go these aren't too original: apparently Allegro CL does something similar to what I called compaction above. Hey, maybe that means it's not such a silly idea after all! In fact, there is quite a lot of research on this subject out there.