[armedbear-devel] [armedbear-cvs] r12226 - trunk/abcl/src/org/armedbear/lisp

Erik Huelsmann ehuels at gmail.com
Tue Oct 27 09:11:12 UTC 2009


> Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
> ==============================================================================
> --- trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp       (original)
> +++ trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp       Sun Oct 25 18:35:52 2009
> @@ -1948,6 +1948,8 @@
>     (when (plusp (length output))
>       output)))
>
> +(defvar *declare-inline* nil)
> +
>  (defmacro declare-with-hashtable (declared-item hashtable hashtable-var
>                                  item-var &body body)
>   `(let* ((,hashtable-var ,hashtable)
> @@ -1970,19 +1972,19 @@
>                      (declare-object symbol +lisp-symbol+
>                                       +lisp-symbol-class+))))
>         (t
> -         (let ((*code* *static-code*)
> -               (s (sanitize symbol)))
> -           (setf g (symbol-name (gensym "SYM")))
> -           (when s
> -             (setf g (concatenate 'string g "_" s)))
> -           (declare-field g +lisp-symbol+ +field-access-private+)
> -           (emit 'ldc (pool-string (symbol-name symbol)))
> -           (emit 'ldc (pool-string (package-name (symbol-package symbol))))
> -           (emit-invokestatic +lisp-class+ "internInPackage"
> -                              (list +java-string+ +java-string+) +lisp-symbol+)
> -           (emit 'putstatic *this-class* g +lisp-symbol+)
> -           (setf *static-code* *code*)
> -           (setf (gethash symbol ht) g))))))
> +          (let ((*code* *static-code*)
> +                (s (sanitize symbol)))
> +            (setf g (symbol-name (gensym "SYM")))
> +            (when s
> +              (setf g (concatenate 'string g "_" s)))
> +            (declare-field g +lisp-symbol+ +field-access-private+)
> +            (emit 'ldc (pool-string (symbol-name symbol)))
> +            (emit 'ldc (pool-string (package-name (symbol-package symbol))))
> +            (emit-invokestatic +lisp-class+ "internInPackage"
> +                               (list +java-string+ +java-string+) +lisp-symbol+)
> +            (emit 'putstatic *this-class* g +lisp-symbol+)
> +            (setf *static-code* *code*)
> +            (setf (gethash symbol ht) g))))))

There's a thinko in the above hunk: it only re-indents, that was
intentional. However, it assumes the package to intern into exist.
When *declare-inline* is non-NIL, there's a fair chance the package
hasn't been created at *static-code* time though. This means the
symbol creation will need to happen in-line too.

I'll fix this later today.


Bye,

Erik.


More information about the armedbear-devel mailing list