From: Daniel B. <da...@us...> - 2002-12-03 22:55:55
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86 In directory sc8-pr-cvs1:/tmp/cvs-serv19014/src/compiler/x86 Modified Files: Tag: dan_native_threads_branch cell.lisp Log Message: 0.7.9.54.thread.7 This is the #+prefer-trepanning experimental native threads branch, which in general is not expected to do anything useful. Current status: runs, dumps sbcl.core. Not that you'd notice, it doesn't actually let you start new threads yet Rewrite boundp vop to check both symbol values (global and tl) gencgc: scavenge the tls values. This make it work a /whole/ lot better ;-) thread.h: fix typo in SetSymbolValue Index: cell.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/cell.lisp,v retrieving revision 1.10.4.3 retrieving revision 1.10.4.4 diff -u -d -r1.10.4.3 -r1.10.4.4 --- cell.lisp 2 Dec 2002 20:00:50 -0000 1.10.4.3 +++ cell.lisp 3 Dec 2002 22:55:22 -0000 1.10.4.4 @@ -149,11 +149,27 @@ (:args (object :scs (descriptor-reg))) (:conditional) (:info target not-p) - (:temporary (:sc descriptor-reg :from (:argument 0)) value) + (:temporary (:sc descriptor-reg #+nil(:from (:argument 0))) value) (:generator 9 - (loadw value object symbol-value-slot other-pointer-lowtag) - (inst cmp value unbound-marker-widetag) - (inst jmp (if not-p :e :ne) target))) + (if not-p + (let ((not-target (gen-label))) + (loadw value object symbol-value-slot other-pointer-lowtag) + (inst cmp value unbound-marker-widetag) + (inst jmp :ne not-target) + (loadw value object symbol-tls-index-slot other-pointer-lowtag) + (inst gs-segment-prefix) + (inst cmp (make-ea :dword :index value :scale 1) unbound-marker-widetag) + (inst jmp :e target) + (emit-label not-target)) + (progn + (loadw value object symbol-value-slot other-pointer-lowtag) + (inst cmp value unbound-marker-widetag) + (inst jmp :ne target) + (loadw value object symbol-tls-index-slot other-pointer-lowtag) + (inst gs-segment-prefix) + (inst cmp (make-ea :dword :index value :scale 1) unbound-marker-widetag) + (inst jmp :ne target))))) + (define-vop (symbol-hash) (:policy :fast-safe) |