From: Daniel B. <da...@us...> - 2003-03-01 10:02:15
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86 In directory sc8-pr-cvs1:/tmp/cvs-serv10794/src/compiler/x86 Modified Files: Tag: dan_native_threads_3_branch cell.lisp macros.lisp Log Message: 0.7.13.5.thread.4 More thread-safety fixes: smoke testing with araneida and apachebench *gc-inhibit* is now a fixnum. Created new atomic-{inc,dec}f macros and rewrote without-gcing to behave as described When starting a new thread, rebind *descriptor-handlers* and *available-buffers*, avoid confusing fd-streams quite as much Renamed fast-symbol-value-xadd to fast-symbol-global-value-xadd to indicate more clearly it won't work with tls values Various changes to stop-for-gc logic to cope with stopping pseudo-atomic threads in a way that doesn't kill us. Most notably, when we resume a pa thread we need to let it run past (and handle) the SIGTRAP (or alternatively, remember that it had happened and arrange for PTRACE_DETACH to pass the signal on. That might be a better approach) Dummy SIGALRM handler installed in all threads, just so nothing bad happens when we signal a thread that's supposed to be stopped but has been woken up by GC Sleeping threads may get woken by the garbage collector and therefore be in a state of both running and queued. add_thread_to_queue should check and avoid putting thread on the same queue multiple times sb-bsd-sockets should be wrapping its alien-data-in-lispspace accessors in without-gcing Index: cell.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/cell.lisp,v retrieving revision 1.10.16.1 retrieving revision 1.10.16.2 diff -u -d -r1.10.16.1 -r1.10.16.2 --- cell.lisp 27 Feb 2003 03:37:20 -0000 1.10.16.1 +++ cell.lisp 1 Mar 2003 10:02:12 -0000 1.10.16.2 @@ -133,14 +133,12 @@ (:policy :fast) (:translate symbol-value)) -;;; like to know where this is useed too -#+nil -(defknown fast-symbol-value-xadd (symbol fixnum) fixnum ()) -#+nil -(define-vop (fast-symbol-value-xadd cell-xadd) +(defknown fast-symbol-global-value-xadd (symbol fixnum) fixnum ()) + +(define-vop (fast-symbol-global-value-xadd cell-xadd) (:variant symbol-value-slot other-pointer-lowtag) (:policy :fast) - (:translate fast-symbol-value-xadd) + (:translate fast-symbol-global-value-xadd) (:arg-types * tagged-num)) (define-vop (boundp) Index: macros.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/macros.lisp,v retrieving revision 1.11.2.1 retrieving revision 1.11.2.2 diff -u -d -r1.11.2.1 -r1.11.2.2 --- macros.lisp 27 Feb 2003 03:37:21 -0000 1.11.2.1 +++ macros.lisp 1 Mar 2003 10:02:12 -0000 1.11.2.2 @@ -278,17 +278,6 @@ (cons 'progn (emit-error-break vop error-trap error-code values))) -;;; not used in SBCL -#| -(defmacro cerror-call (vop label error-code &rest values) - #!+sb-doc - "Cause a continuable error. If the error is continued, execution resumes - at LABEL." - `(progn - ,@(emit-error-break vop cerror-trap error-code values) - (inst jmp ,label))) -|# - (defmacro generate-error-code (vop error-code &rest values) #!+sb-doc "Generate-Error-Code Error-code Value* @@ -299,24 +288,6 @@ (error-call ,vop ,error-code ,@values) start-lab))) -;;; not used in SBCL -#| -(defmacro generate-cerror-code (vop error-code &rest values) - #!+sb-doc - "Generate-CError-Code Error-code Value* - Emit code for a continuable error with the specified Error-Code and - context Values. If the error is continued, execution resumes after - the GENERATE-CERROR-CODE form." - (let ((continue (gensym "CONTINUE-LABEL-")) - (error (gensym "ERROR-LABEL-"))) - `(let ((,continue (gen-label)) - (,error (gen-label))) - (emit-label ,continue) - (assemble (*elsewhere*) - (emit-label ,error) - (cerror-call ,vop ,continue ,error-code ,@values)) - ,error))) -|# ;;;; PSEUDO-ATOMIC |