0.9.8.10:
authorGabor Melis <mega@hotpop.com>
Thu, 5 Jan 2006 11:17:58 +0000 (11:17 +0000)
committerGabor Melis <mega@hotpop.com>
Thu, 5 Jan 2006 11:17:58 +0000 (11:17 +0000)
  * bug fix: allow non-simple string symbol names (reported by Paul
    Dietz)

NEWS
src/code/symbol.lisp
src/compiler/fndb.lisp
src/compiler/generic/objdef.lisp
src/compiler/ir1opt.lisp
src/compiler/x86-64/alloc.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 6027689..a152d46 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ changes in sbcl-0.9.9 relative to sbcl-0.9.8:
     system has been added.  (thanks to Alastair Bridgewater)
   * fixed several bugs in and robustified the PPC FFI (including
     callbacks).  (thanks to Cyrus Harmon and Heiner Schwarte)
+  * bug fix: allow non-simple string symbol names (reported by Paul
+    Dietz)
   * optimization: faster implementation of EQUAL
   * fixed segfaults on x86 FreeBSD 7-current (thanks to NIIMI Satoshi)
 
index 39f89a7..f4a7888 100644 (file)
 (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
index e330137..eb06b68 100644 (file)
 (defknown get-properties (list list) (values t t list) (foldable flushable))
 (defknown symbol-name (symbol) simple-string (movable foldable flushable))
 (defknown make-symbol (string) symbol (flushable))
+(defknown %make-symbol (simple-string) symbol (flushable))
 (defknown copy-symbol (symbol &optional t) symbol (flushable))
 (defknown gensym (&optional (or string unsigned-byte)) symbol ())
 (defknown symbol-package (symbol) (or sb!xc:package null) (flushable))
   (values)
   ())
 (defknown style-warn (string &rest t) null ())
-
index 7ab3fc8..88dc800 100644 (file)
 
 (define-primitive-object (symbol :lowtag other-pointer-lowtag
                                  :widetag symbol-header-widetag
-                                 :alloc-trans make-symbol)
+                                 :alloc-trans %make-symbol)
 
   ;; Beware when changing this definition.  NIL-the-symbol is defined
   ;; using this layout, and NIL-the-end-of-list-marker is the cons
index 1102112..df05a08 100644 (file)
 
   (unless do-not-optimize
     (setf (node-reoptimize cast) nil)))
+
+(deftransform make-symbol ((string) (simple-string))
+  `(%make-symbol string))
index 457d4f7..bcc7a74 100644 (file)
      (inst lea result (make-ea :byte :base result :disp lowtag))
      (storew header result 0 lowtag))))
 
-(define-vop (make-symbol)
+(define-vop (%make-symbol)
   (:policy :fast-safe)
-  (:translate make-symbol)
+  (:translate %make-symbol)
   (:args (name :scs (descriptor-reg) :to :eval))
   (:temporary (:sc unsigned-reg :from :eval) temp)
   (:results (result :scs (descriptor-reg) :from :argument))
index 6d9f03e..3a61685 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.8.9"
+"0.9.8.10"