Revert symbol dumping
[jscl.git] / ecmalisp.lisp
index 2da30af..d01860c 100644 (file)
   (defmacro while (condition &body body)
     `(block nil (%while ,condition ,@body)))
 
-  (defun internp (name)
-    (in name *package*))
-
-  (defun intern (name)
-    (if (internp name)
-        (oget *package* name)
-        (oset *package* name (make-symbol name))))
-
   (defun find-symbol (name)
     (oget *package* name))
 
+  (defun intern (name)
+    (let ((s (find-symbol name)))
+      (if s s (oset *package* name (make-symbol name)))))
+
   (defvar *gensym-counter* 0)
   (defun gensym (&optional (prefix "G"))
     (setq *gensym-counter* (+ *gensym-counter* 1))
     ((symbolp sexp)
      (or (cdr (assoc sexp *literal-symbols*))
         (let ((v (genlit))
-              (s (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}")))
+              (s #+common-lisp (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}")
+                 #+ecmalisp (ls-compile `(intern ,(symbol-name sexp)))))
           (push (cons sexp v) *literal-symbols*)
           (toplevel-compilation (concat "var " v " = " s))
           v)))