X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fdynbind.c;h=32f79f0809bfa0893c5874fd0965117919103f08;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=1d62ee0ecec0501420f2278deed4ed3becae3830;hpb=1d329efe312141d5385af1d2e98f72f938b5f7b6;p=sbcl.git diff --git a/src/runtime/dynbind.c b/src/runtime/dynbind.c index 1d62ee0..32f79f0 100644 --- a/src/runtime/dynbind.c +++ b/src/runtime/dynbind.c @@ -24,7 +24,6 @@ #include "pseudo-atomic.h" #include "genesis/symbol.h" #include "genesis/binding.h" -#include "genesis/thread.h" #include "genesis/static-symbols.h" void bind_variable(lispobj symbol, lispobj value, void *th) @@ -44,9 +43,8 @@ void bind_variable(lispobj symbol, lispobj value, void *th) get_spinlock(tls_index_lock,(long)th); if(!sym->tls_index) { sym->tls_index=SymbolValue(FREE_TLS_INDEX,0); - SetSymbolValue(FREE_TLS_INDEX, - make_fixnum(fixnum_value(sym->tls_index)+1),0); - if(fixnum_value(sym->tls_index)>=TLS_SIZE) { + SetSymbolValue(FREE_TLS_INDEX, sym->tls_index+N_WORD_BYTES, 0); + if((sym->tls_index)>=(TLS_SIZE << WORD_SHIFT)) { lose("Thread local storage exhausted."); } }