X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fsymbol.lisp;h=76d7ab3eea0338b9f0fd58cc62f9847f1ca7a853;hb=d656401927393487e28e1b765f868822370c1be3;hp=e584925f5d8bb3d99033a05df23da0b3880fdab8;hpb=d1c237164f9bd00879843cba7a79c05449cf50f7;p=sbcl.git diff --git a/src/code/symbol.lisp b/src/code/symbol.lisp index e584925..76d7ab3 100644 --- a/src/code/symbol.lisp +++ b/src/code/symbol.lisp @@ -35,8 +35,10 @@ (about-to-modify-symbol-value symbol) (%set-symbol-value symbol new-value)) -(defun %set-symbol-value (symbol new-value) - (%set-symbol-value symbol new-value)) +;;; can't do this yet, the appropriate vop only gets defined in +;;; compiler/target/cell, 400 lines hence +;;;(defun %set-symbol-value (symbol new-value) +;;; (%set-symbol-value symbol new-value)) (defun makunbound (symbol) #!+sb-doc @@ -48,23 +50,30 @@ symbol) ;;; Return the built-in hash value for SYMBOL. -#!+(or x86 mips) ;; only backends for which a symbol-hash vop exists + +;;; 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. -#!-(or x86 mips) +#!-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." - (raw-definition symbol)) + (%coerce-name-to-fun symbol)) -(defun fset (symbol new-value) +(defun (setf symbol-function) (new-value symbol) (declare (type symbol symbol) (type function new-value)) - (setf (raw-definition symbol) new-value)) + (setf (%coerce-name-to-fun symbol) new-value)) (defun symbol-plist (symbol) #!+sb-doc @@ -149,8 +158,11 @@ (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)))))) @@ -171,8 +183,11 @@ (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))))))