From: Daniel B. <da...@us...> - 2002-12-12 03:16:54
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs1:/tmp/cvs-serv13045/src/runtime Modified Files: Tag: dan_native_threads_branch thread.c Log Message: 0.7.9.54.thread.10 #+better-a-dinner-of-herbs-than-a-hole-in-the-head experimental threads Fix the debugger - or at least, the obviously badly broken bits ... some disagreement over fixnums vs machine words in control stack boundaries ... it's bad to reinitialize *free-tls-index* if this is a warm core, because existing symbols have valid tls indices already ... frame-down should test the return value of x86-call-context before passing to compute-calling-frame (backtrace was broken at far end of stack) Add SB-THREAD package definition in preparation for some alien glue to actually allow new threads to be started. Shuffle things around to empty code/target-thread.lisp so that it may contain this glue Index: thread.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/Attic/thread.c,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -u -d -r1.1.2.6 -r1.1.2.7 --- thread.c 11 Dec 2002 00:38:21 -0000 1.1.2.6 +++ thread.c 12 Dec 2002 03:16:47 -0000 1.1.2.7 @@ -41,8 +41,10 @@ int i; for(i=0;i<(dynamic_values_bytes/sizeof(lispobj));i++) per_thread->dynamic_values[i]=UNBOUND_MARKER_WIDETAG; - SetSymbolValue(FREE_TLS_INDEX, - make_fixnum(sizeof(struct thread)/sizeof(lispobj)),0); + if(SymbolValue(FREE_TLS_INDEX,0)==UNBOUND_MARKER_WIDETAG) + SetSymbolValue(FREE_TLS_INDEX, + make_fixnum(sizeof(struct thread)/sizeof(lispobj)), + 0); ((struct symbol *)(BINDING_STACK_START-OTHER_POINTER_LOWTAG)) ->tls_index=make_fixnum(1); ((struct symbol *)(BINDING_STACK_POINTER-OTHER_POINTER_LOWTAG)) |