From: Juho S. <js...@us...> - 2004-11-18 04:46:56
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29213/src/code Modified Files: Tag: x86-64-again-branch target-unithread.lisp target-thread.lisp fd-stream.lisp Log Message: 0.8.15.14.x86-64-again-branch.9: * Fix return value handling of non-local-exits. * Make SAP-INT / INT-SAP argument and return types word-sized. Remove kludgy typecheck workaround from FROB-INPUT. * Change various hardcoded 4s in SB!THREAD to SB!VM:N-WORD-BYTES. * Fix GENERIC-+ / GENERIC-- shifts on overflow. (1+ MOST-POSITIVE-FIXNUM) now returns correct value. Index: target-unithread.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/target-unithread.lisp,v retrieving revision 1.12 retrieving revision 1.12.6.1 diff -u -d -r1.12 -r1.12.6.1 --- target-unithread.lisp 19 Jul 2004 23:44:45 -0000 1.12 +++ target-unithread.lisp 18 Nov 2004 04:46:42 -0000 1.12.6.1 @@ -16,11 +16,11 @@ (defun sb!vm::current-thread-offset-sap (n) (declare (type (unsigned-byte 27) n)) (sb!sys:sap-ref-sap (alien-sap (extern-alien "all_threads" (* t))) - (* n 4))) + (* n sb!vm:n-word-bytes))) (defun current-thread-id () (sb!sys:sap-ref-32 (alien-sap (extern-alien "all_threads" (* t))) - (* sb!vm::thread-pid-slot 4))) + (* sb!vm::thread-pid-slot sb!vm:n-word-bytes))) (defun reap-dead-threads ()) Index: target-thread.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/target-thread.lisp,v retrieving revision 1.23 retrieving revision 1.23.2.1 diff -u -d -r1.23 -r1.23.2.1 --- target-thread.lisp 3 Oct 2004 00:57:14 -0000 1.23 +++ target-thread.lisp 18 Nov 2004 04:46:42 -0000 1.23.2.1 @@ -351,7 +351,8 @@ "Call FUNCTION once for each known thread, giving it the thread structure as argument" (let ((function (coerce function 'function))) (loop for thread = (alien-sap (extern-alien "all_threads" (* t))) - then (sb!sys:sap-ref-sap thread (* 4 sb!vm::thread-next-slot)) + then (sb!sys:sap-ref-sap thread (* sb!vm:n-word-bytes + sb!vm::thread-next-slot)) until (sb!sys:sap= thread (sb!sys:int-sap 0)) collect (funcall function thread)))) @@ -359,9 +360,11 @@ (let ((thread (alien-sap (extern-alien "all_threads" (* t))))) (loop (when (sb!sys:sap= thread (sb!sys:int-sap 0)) (return nil)) - (let ((pid (sb!sys:sap-ref-32 thread (* 4 sb!vm::thread-pid-slot)))) + (let ((pid (sb!sys:sap-ref-32 thread (* sb!vm:n-word-bytes + sb!vm::thread-pid-slot)))) (when (= pid id) (return thread)) - (setf thread (sb!sys:sap-ref-sap thread (* 4 sb!vm::thread-next-slot))))))) + (setf thread (sb!sys:sap-ref-sap thread (* sb!vm:n-word-bytes + sb!vm::thread-next-slot))))))) ;;; internal use only. If you think you need to use this, either you ;;; are an SBCL developer, are doing something that you should discuss @@ -371,7 +374,7 @@ (let ((thread (thread-sap-from-id thread-id))) (when thread (let* ((index (sb!vm::symbol-tls-index symbol)) - (tl-val (sb!sys:sap-ref-32 thread (* 4 index)))) + (tl-val (sb!sys:sap-ref-32 thread (* sb!vm:n-word-bytes index)))) (if (eql tl-val sb!vm::unbound-marker-widetag) (sb!vm::symbol-global-value symbol) (sb!kernel:make-lisp-obj tl-val)))))) Index: fd-stream.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/fd-stream.lisp,v retrieving revision 1.48.2.1 retrieving revision 1.48.2.2 diff -u -d -r1.48.2.1 -r1.48.2.2 --- fd-stream.lisp 11 Nov 2004 03:14:14 -0000 1.48.2.1 +++ fd-stream.lisp 18 Nov 2004 04:46:42 -0000 1.48.2.2 @@ -531,11 +531,9 @@ (multiple-value-bind (count errno) ;; XXX XXX XXX a bogus check-unsigned-byte-32 is emitted here ;; on amd64. Kludge around it with (safety 0) until problem is solved. - (locally - (declare (optimize (safety 0))) - (sb!unix:unix-read fd - (sb!sys:int-sap (+ (sb!sys:sap-int ibuf-sap) tail)) - (- buflen tail))) + (sb!unix:unix-read fd + (sb!sys:int-sap (+ (sb!sys:sap-int ibuf-sap) tail)) + (- buflen tail)) (cond ((null count) (if (eql errno sb!unix:ewouldblock) (progn |