From: Nikodemus S. <de...@us...> - 2009-05-08 19:08:16
|
Update of /cvsroot/sbcl/sbcl/src/compiler/alpha In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31092/src/compiler/alpha Modified Files: cell.lisp Log Message: 1.0.28.30: DEFGLOBAL, ALWAYS-BOUND, GLOBAL, SYMBOL-GLOBAL-VALUE * ALWAYS-BOUND allows the compiler to elide boundness checks for symbol value access, and prohibits MAKUNBOUND. This is handled via a new globaldb entry. GLOBAL makes the compiler elide TLS checking for symbol values access, and prohibits rebinding. This is handled via new globaldb :variable :type, namely :global. DEFGLOBAL is build on top of these. Global variables are mainly an efficiency measure on threaded builds, but can also express intention as they prohibit rebinding. * Add %SET-SYMBOL-GLOBAL-VALUE, FAST-SYMBOL-GLOBAL-VALUE, and SYMBOL-GLOBAL-VALUE VOPs to all backends. On unithreaded builds these are trivial copies of the non-global versions. * Tell SB-CLTL2 about both GLOBAL and ALWAYS-BOUND declarations too. * Document in the Efficiency chapter of the manual. * Prohibit declaring constants special. * Tests. Later: use these new features inside SBCL itself. For now there is only a single DEFGLOBAL used, but more could well be. Index: cell.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/alpha/cell.lisp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- cell.lisp 6 Oct 2006 11:44:20 -0000 1.18 +++ cell.lisp 8 May 2009 19:08:08 -0000 1.19 @@ -100,6 +100,13 @@ ;; ensure this is explained in the comment in objdef.lisp (loadw res symbol symbol-hash-slot other-pointer-lowtag) (inst bic res #.(ash lowtag-mask -1) res))) + +;;; On unithreaded builds these are just copies of the non-global versions. +(define-vop (%set-symbol-global-value set)) +(define-vop (symbol-global-value symbol-value) + (:translate symbol-global-value)) +(define-vop (fast-symbol-global-value fast-symbol-value) + (:translate symbol-global-value)) ;;;; fdefinition (FDEFN) objects |