Changeset 13013


Ignore:
Timestamp:
11/08/10 22:34:18 (12 years ago)
Author:
ehuelsmann
Message:

Reduce the impact of the fasl-loader "_0" class's maximum size of 64kB:
this change reduces the size of pprint_0.cls from 23001 to 19380 bytes,
a saving of 18.64%, which is probably much more when counting the size
of the execute() method alone.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/compile-file.lisp

    r12981 r13013  
    680680  (let* ((basename (base-classname))
    681681   (expr `(lambda (fasl-loader fn-index)
    682       (identity fasl-loader) ;;to avoid unused arg
     682                  (declare (type (integer 0 256000) fn-index))
     683                  (identity fasl-loader) ;;to avoid unused arg
     684                  (jvm::with-inline-code ()
     685                    (jvm::emit 'jvm::aload 1)
     686                    (jvm::emit-invokevirtual jvm::+lisp-object+ "javaInstance"
     687                                             nil jvm::+java-object+)
     688                    (jvm::emit-checkcast +fasl-classloader+)
     689                    (jvm::emit 'jvm::iload 2))
    683690      (ncase fn-index 0 ,(1- *class-number*)
    684691        ,@(loop
     
    688695                                                basename i))
    689696                                (class-name (jvm::make-class-name class)))
    690          `(,(1- i)
    691             (jvm::with-inline-code ()
    692         (jvm::emit 'jvm::aload 1)
    693         (jvm::emit-invokevirtual jvm::+lisp-object+ "javaInstance"
    694                nil jvm::+java-object+)
    695         (jvm::emit-checkcast +fasl-classloader+)
    696         (jvm::emit 'jvm::dup)
    697         (jvm::emit-push-constant-int ,(1- i))
    698         (jvm::emit-new ,class-name)
    699         (jvm::emit 'jvm::dup)
    700         (jvm::emit-invokespecial-init ,class-name '())
    701         (jvm::emit-invokevirtual +fasl-classloader+
     697                           `(,(1- i)
     698                              (jvm::with-inline-code ()
     699                                (jvm::emit-new ,class-name)
     700                                (jvm::emit 'jvm::dup)
     701                                (jvm::emit-invokespecial-init ,class-name '())
     702                                (jvm::emit-invokevirtual +fasl-classloader+
    702703                                                         "putFunction"
    703               (list :int jvm::+lisp-object+) jvm::+lisp-object+)
     704                                                        (list :int jvm::+lisp-object+) jvm::+lisp-object+)
    704705        (jvm::emit 'jvm::pop))
    705706            t))))))
Note: See TracChangeset for help on using the changeset viewer.