Relax compiler literal caching
authorDavid Vázquez <davazp@gmail.com>
Fri, 10 May 2013 15:23:58 +0000 (16:23 +0100)
committerDavid Vázquez <davazp@gmail.com>
Fri, 10 May 2013 15:23:58 +0000 (16:23 +0100)
Equal is too general. Diferrent literals are considered the same and
if you modify destructively one of them, then other were modified too.

src/compiler.lisp

index be10266..3fe2823 100644 (file)
     ((floatp sexp) (float-to-string sexp))
     ((characterp sexp) (code "\"" (escape-string (string sexp)) "\""))
     (t
-     (or (cdr (assoc sexp *literal-table* :test #'equal))
+     (or (cdr (assoc sexp *literal-table* :test #'eql))
          (let ((dumped (typecase sexp
                          (symbol (dump-symbol sexp))
                          (string (dump-string sexp))