0.9.1.29:
[sbcl.git] / src / code / symbol.lisp
index 437e199..557141b 100644 (file)
 (defun makunbound (symbol)
   #!+sb-doc
   "Make SYMBOL unbound, removing any value it may currently have."
-  (set symbol
-       (%primitive sb!c:make-other-immediate-type
-                  0
-                  sb!vm:unbound-marker-widetag))
-  symbol)
+  (with-single-package-locked-error (:symbol symbol "unbinding the symbol ~A")
+    (set symbol
+        (%primitive sb!c:make-other-immediate-type
+                    0
+                    sb!vm:unbound-marker-widetag))
+    symbol))
 
 ;;; Return the built-in hash value for SYMBOL.
-
-;;; only backends for which a SYMBOL-HASH vop exists.  In the past,
-;;; when the MIPS backend supported (or nearly did) a generational
-;;; (non-conservative) garbage collector, this read (OR X86 MIPS).
-;;; Having excised the vestigial support for GENGC, this now only
-;;; applies for the x86 port, but if someone were to rework the GENGC
-;;; support, this might change again.  -- CSR, 2002-08-26
-#!+x86 
 (defun symbol-hash (symbol)
   (symbol-hash symbol))
 
-;;; Compute the hash value for SYMBOL.
-#!-x86
-(defun symbol-hash (symbol)
-  (%sxhash-simple-string (symbol-name symbol)))
-
 (defun symbol-function (symbol)
   #!+sb-doc
   "Return SYMBOL's current function definition. Settable with SETF."
@@ -71,7 +59,9 @@
 
 (defun (setf symbol-function) (new-value symbol)
   (declare (type symbol symbol) (type function new-value))
-  (setf (%coerce-name-to-fun symbol) new-value))
+  (with-single-package-locked-error 
+      (:symbol symbol "setting the symbol-function of ~A")
+    (setf (%coerce-name-to-fun symbol) new-value)))
 
 (defun symbol-plist (symbol)
   #!+sb-doc
   (do ((plist place (cddr plist)))
       ((null plist) default)
     (cond ((atom (cdr plist))
-          (error "~S is a malformed property list."
-                 place))
+          (error 'simple-type-error
+                 :format-control "malformed property list: ~S."
+                 :format-arguments (list place)
+                 :datum (cdr plist)
+                 :expected-type 'cons))
          ((eq (car plist) indicator)
           (return (cadr plist))))))
 
   (do ((plist place (cddr plist)))
       ((null plist) (values nil nil nil))
     (cond ((atom (cdr plist))
-          (error "~S is a malformed proprty list."
-                 place))
+          (error 'simple-type-error
+                 :format-control "malformed property list: ~S."
+                 :format-arguments (list place)
+                 :datum (cdr plist)
+                 :expected-type 'cons))
          ((memq (car plist) indicator-list)
           (return (values (car plist) (cadr plist) plist))))))