X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fsymbol.lisp;h=10fd74204e57a0fcd4de9280b59ffdb0721f303a;hb=5d04a95274c9ddaebbcd6ddffc5d646e2c25598c;hp=39f89a781ed258c9d8c857297a887a187112e6f4;hpb=92c8db80e039f60623e53a0b9355cf0a9ec49f3d;p=sbcl.git diff --git a/src/code/symbol.lisp b/src/code/symbol.lisp index 39f89a7..10fd742 100644 --- a/src/code/symbol.lisp +++ b/src/code/symbol.lisp @@ -32,20 +32,23 @@ #!+sb-doc "Set SYMBOL's value cell to NEW-VALUE." (declare (type symbol symbol)) - (about-to-modify-symbol-value symbol) + (about-to-modify-symbol-value symbol "set SYMBOL-VALUE of ~S") (%set-symbol-value symbol new-value)) (defun %set-symbol-value (symbol new-value) (%set-symbol-value symbol new-value)) +(declaim (inline %makunbound)) +(defun %makunbound (symbol) + (%set-symbol-value symbol (%primitive sb!c:make-other-immediate-type + 0 sb!vm:unbound-marker-widetag))) + (defun makunbound (symbol) #!+sb-doc "Make SYMBOL unbound, removing any value it may currently have." (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)) + (about-to-modify-symbol-value symbol "make ~S unbound") + (%makunbound symbol) symbol)) ;;; Return the built-in hash value for SYMBOL. @@ -88,7 +91,10 @@ (defun make-symbol (string) #!+sb-doc "Make and return a new symbol with the STRING as its print name." - (make-symbol string)) + (declare (type string string)) + (%make-symbol (if (simple-string-p string) + string + (subseq string 0)))) (defun get (symbol indicator &optional (default nil)) #!+sb-doc