mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 17:20:29 +02:00
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.
This commit is contained in:
parent
407190060b
commit
aef1fcf94e
7 changed files with 247 additions and 30 deletions
|
@ -4,7 +4,7 @@
|
|||
#define SCM_THREADS_H
|
||||
|
||||
/* Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2006,
|
||||
* 2007, 2008, 2009, 2011, 2012, 2013 Free Software Foundation, Inc.
|
||||
* 2007, 2008, 2009, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
|
@ -72,6 +72,10 @@ typedef struct scm_i_thread {
|
|||
scm_i_pthread_cond_t sleep_cond;
|
||||
int sleep_fd, sleep_pipe[2];
|
||||
|
||||
/* Thread-local freelists; see gc-inline.h. */
|
||||
void **freelists;
|
||||
void **pointerless_freelists;
|
||||
|
||||
/* Other thread local things.
|
||||
*/
|
||||
SCM dynamic_state;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue