[armedbear-cvs] r13536 - trunk/abcl/src/org/armedbear/lisp

ehuelsmann at common-lisp.net ehuelsmann at common-lisp.net
Tue Aug 23 21:34:33 UTC 2011


Author: ehuelsmann
Date: Tue Aug 23 14:34:33 2011
New Revision: 13536

Log:
Move more static field initialization to the static class initializer
<clinit>() code.

Additionally, place some remarks where I expect issues once I start
compiling forward references the same way as backward references.

Modified:
   trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

Modified: trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp	Tue Aug 23 13:35:32 2011	(r13535)
+++ trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp	Tue Aug 23 14:34:33 2011	(r13536)
@@ -1392,7 +1392,7 @@
                       (local-function-compiland local-function))))
         (field-name (local-function-field local-function)))
     (with-code-to-method
-        (*class-file* (abcl-class-file-constructor *class-file*))
+        (*class-file* (abcl-class-file-static-initializer *class-file*))
       ;; fixme *declare-inline*
       (declare-field field-name +lisp-object+)
       (emit-new class-name)
@@ -1416,7 +1416,7 @@
     (with-code-to-method
         (*class-file*
          (if *declare-inline* *method*
-             (abcl-class-file-constructor *class-file*)))
+             (abcl-class-file-static-initializer *class-file*)))
       ;; strings may contain evaluated bits which may depend on
       ;; previous statements
       (declare-field g +lisp-object+)
@@ -1432,7 +1432,7 @@
      (with-code-to-method
          (*class-file*
           (if *declare-inline* *method*
-              (abcl-class-file-constructor *class-file*)))
+              (abcl-class-file-static-initializer *class-file*)))
        ;; The readObjectFromString call may require evaluation of
        ;; lisp code in the string (think #.() syntax), of which the outcome
        ;; may depend on something which was declared inline
@@ -1455,7 +1455,7 @@
     ;; fixme *declare-inline*?
     (remember g obj)
     (with-code-to-method
-        (*class-file* (abcl-class-file-constructor *class-file*))
+        (*class-file* (abcl-class-file-static-initializer *class-file*))
       (declare-field g +lisp-object+)
       (emit 'ldc (pool-string g))
       (emit-invokestatic +lisp+ "recall"
@@ -4149,6 +4149,11 @@
           (emit-load-local-function local-function)
           (emit-move-from-stack target))
          ((inline-ok name)
+          ;; ### FASLATONCE: when compiling fasl functions after the
+          ;; full fasl has been processed, forward referenced functions
+          ;; may not be available during the load process
+          ;; This case is particularly triggered with circular referencing
+          ;; functions, both marked as 'notinline'
           (emit-getstatic *this-class*
                 (declare-function name) +lisp-object+)
           (emit-move-from-stack target))
@@ -4166,6 +4171,11 @@
           (emit-load-local-function local-function))
          ((and (member name *functions-defined-in-current-file* :test #'equal)
                (not (notinline-p name)))
+          ;; ### FASLATONCE: when compiling fasl functions after the
+          ;; full fasl has been processed, forward referenced functions
+          ;; may not be available during the load process
+          ;; This case is particularly triggered with circular referencing
+          ;; functions, both marked as 'notinline'
           (emit-getstatic *this-class*
                 (declare-setf-function name) +lisp-object+)
           (emit-move-from-stack target))




More information about the armedbear-cvs mailing list