Add thread-local lock-free, TLS-free freelists.
authorAndy Wingo <wingo@pobox.com>
Sun, 2 Feb 2014 15:04:58 +0000 (16:04 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 2 Feb 2014 15:17:54 +0000 (16:17 +0100)
commitaef1fcf94e635c51bc1d0849ad1f60a1d1274276
treeed3cba5817f71e87a8576c8e89d7488ccbd7476e
parent407190060bfc9a7625d5c415463fa9bbc70859fd
Add thread-local lock-free, TLS-free freelists.

* libguile/bdw-gc.h: Remove a needless compatibility hack.

* libguile/gc-inline.h: New file, implementing thread-local freelists
  providing faster allocation if we already have a scm_i_thread*
  pointer.  Based on gc_inline.h from libgc.

* libguile/threads.h (scm_i_thread): Add freelists here.
* libguile/threads.c (guilify_self_1, guilify_self_2): Initialize
  freelists.

* libguile/vm.c: Include gc-inline.h.
* libguile/vm-engine.c: Rename current_thread to thread.  Use
  scm_inline_cons instead of scm_cons, scm_inline_cell instead of
  scm_cell, and scm_inline_words instead of words.
libguile/Makefile.am
libguile/bdw-gc.h
libguile/gc-inline.h [new file with mode: 0644]
libguile/threads.c
libguile/threads.h
libguile/vm-engine.c
libguile/vm.c