0.pre7.33:
[sbcl.git] / src / code / symbol.lisp
index 3ceba16..f2c1c0c 100644 (file)
   "VARIABLE must evaluate to a symbol. This symbol's special value cell is
   set to the specified new value."
   (declare (type symbol variable))
-  (cond ((null variable)
-        (error "Nihil ex nihil, NIL can't be set."))
-       ((eq variable t)
-        (error "Veritas aeterna, T can't be set."))
-       ((and (boundp '*keyword-package*)
-             (keywordp variable))
-        (error "Keywords can't be set."))
-       (t
-        (%set-symbol-value variable new-value))))
+  (about-to-modify variable)
+  (%set-symbol-value variable new-value))
 
 (defun %set-symbol-value (symbol new-value)
   (%set-symbol-value symbol new-value))
        (%primitive sb!c:make-other-immediate-type 0 sb!vm:unbound-marker-type))
   variable)
 
+#!+(or x86 mips) ;; only backends for which a symbol-hash vop exists
 (defun symbol-hash (symbol)
   #!+sb-doc
   "Return the built-in hash value for symbol."
   (symbol-hash symbol))
 
+#!-(or x86 mips)
+(defun symbol-hash (symbol)
+  #!+sb-doc
+  "Return the built-in hash value for symbol."
+  (%sxhash-simple-string (symbol-name symbol)))
+
+
 (defun symbol-function (variable)
   #!+sb-doc
   "VARIABLE must evaluate to a symbol. This symbol's current definition
 
 (defun getf (place indicator &optional (default ()))
   #!+sb-doc
-  "Searches the property list stored in Place for an indicator EQ to Indicator.
-  If one is found, the corresponding value is returned, else the Default is
-  returned."
+  "Search the property list stored in Place for an indicator EQ to INDICATOR.
+  If one is found, return the corresponding value, else return DEFAULT."
   (do ((plist place (cddr plist)))
       ((null plist) default)
     (cond ((atom (cdr plist))
 
 (defun get-properties (place indicator-list)
   #!+sb-doc
-  "Like GETF, except that Indicator-List is a list of indicators which will
-  be looked for in the property list stored in Place. Three values are
+  "Like GETF, except that INDICATOR-LIST is a list of indicators which will
+  be looked for in the property list stored in PLACE. Three values are
   returned, see manual for details."
   (do ((plist place (cddr plist)))
       ((null plist) (values nil nil nil))
       (setf (symbol-function new-symbol) (symbol-function symbol))))
   new-symbol)
 
+;;; FIXME: This declaration should be redundant.
 (declaim (special *keyword-package*))
 
 (defun keywordp (object)
 (defvar *gentemp-counter* 0)
 (declaim (type unsigned-byte *gentemp-counter*))
 
-(defun gentemp (&optional (prefix "T") (package *package*))
+(defun gentemp (&optional (prefix "T") (package (sane-package)))
   #!+sb-doc
-  "Creates a new symbol interned in package Package with the given Prefix."
+  "Creates a new symbol interned in package PACKAGE with the given PREFIX."
   (declare (type string prefix))
   (loop
     (let ((*print-base* 10)