It seems that the BDW GC, since version 7 or so, supports inline allocation with thread-local freelists. See gc_inline.h. We can probably improve our allocation speed significantly by using this allocator in Guile. It would require adding a freelist to scm_i_thread, and passing the thread around wherever we would want inline allocation, but that is already the case in the VM.
Could be a neat little project for someone -- mostly on master, where we require BDW-GC 7.2. Cheers, Andy -- http://wingolog.org/