Ignore:
Timestamp:
07/06/10 22:34:54 (13 years ago)
Author:
ehuelsmann
Message:

More CLASS-NAME integration into pass2.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/generic-class-file/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

    r12786 r12787  
    201201(defconstant +fasl-loader-class+
    202202  "org/armedbear/lisp/FaslClassLoader")
    203 (defconstant +lisp-class-class+ "org/armedbear/lisp/LispClass")
    204203(defconstant +lisp-object-class+ "org/armedbear/lisp/LispObject")
    205204(defconstant +lisp-object+ "Lorg/armedbear/lisp/LispObject;")
    206205(defconstant +lisp-object-array+ "[Lorg/armedbear/lisp/LispObject;")
    207206(defconstant +closure-binding-array+ "[Lorg/armedbear/lisp/ClosureBinding;")
    208 (defconstant +closure-binding-class+ "org/armedbear/lisp/ClosureBinding")
    209207(defconstant +lisp-symbol-class+ "org/armedbear/lisp/Symbol")
    210208(defconstant +lisp-symbol+ "Lorg/armedbear/lisp/Symbol;")
     
    212210(defconstant +lisp-thread-class+ "org/armedbear/lisp/LispThread")
    213211(defconstant +lisp-thread+ "Lorg/armedbear/lisp/LispThread;")
    214 (defconstant +lisp-load-class+ "org/armedbear/lisp/Load")
    215212(defconstant +lisp-cons-class+ "org/armedbear/lisp/Cons")
    216213(defconstant +lisp-cons+ "Lorg/armedbear/lisp/Cons;")
     
    242239(defconstant +lisp-special-binding+ "Lorg/armedbear/lisp/SpecialBinding;")
    243240(defconstant +lisp-special-binding-class+ "org/armedbear/lisp/SpecialBinding")
    244 (defconstant +lisp-special-bindings-mark+ "Lorg/armedbear/lisp/SpecialBindingsMark;")
    245 (defconstant +lisp-special-bindings-mark-class+ "org/armedbear/lisp/SpecialBindingsMark")
    246241(defconstant +lisp-throw-class+ "org/armedbear/lisp/Throw")
    247242(defconstant +lisp-return-class+ "org/armedbear/lisp/Return")
    248243(defconstant +lisp-go-class+ "org/armedbear/lisp/Go")
    249 (defconstant +lisp-compiled-closure-class+ "org/armedbear/lisp/CompiledClosure")
    250244(defconstant +lisp-primitive-class+ "org/armedbear/lisp/Primitive")
    251245(defconstant +lisp-hash-table-class+ "org/armedbear/lisp/HashTable")
    252246(defconstant +lisp-eql-hash-table-class+ "org/armedbear/lisp/EqlHashTable")
    253 (defconstant +lisp-package-class+ "org/armedbear/lisp/Package")
    254 (defconstant +lisp-readtable-class+ "org/armedbear/lisp/Readtable")
    255 (defconstant +lisp-stream-class+ "org/armedbear/lisp/Stream")
    256 (defconstant +lisp-closure-class+ "org/armedbear/lisp/Closure")
    257247(defconstant +lisp-closure-parameter-class+ "org/armedbear/lisp/Closure$Parameter")
    258248(defconstant +lisp-closure-parameter-array+ "[Lorg/armedbear/lisp/Closure$Parameter;")
     
    786776                            (HASH-TABLE +lisp-hash-table-class+)
    787777                            (FIXNUM     +lisp-fixnum-class+)
    788                             (STREAM     +lisp-stream-class+)
     778                            (STREAM     +lisp-stream+)
    789779                            (STRING     +lisp-abstract-string-class+)
    790780                            (VECTOR     +lisp-abstract-vector-class+)))
     
    18651855                 (emit-push-nil)
    18661856                 (emit-push-t)) ;; we don't need the actual supplied-p symbol
    1867              (emit 'getstatic +lisp-closure-class+ "OPTIONAL" "I")
     1857             (emit 'getstatic +lisp-closure+ "OPTIONAL" "I")
    18681858             (emit-invokespecial-init +lisp-closure-parameter-class+
    18691859                                      (list +lisp-symbol+ +lisp-object+
     
    18981888           (emit-constructor-lambda-list args)
    18991889           (emit-invokespecial-init super (lisp-object-arg-types 2)))
    1900           ((equal super +lisp-compiled-closure-class+)
     1890          ((equal super +lisp-compiled-closure+) ;;### only needs EQ when SUPER is guaranteed to be CLASS-NAME
    19011891           (aload req-params-register)
    19021892           (aload opt-params-register)
     
    21352125      ((null (symbol-package symbol))
    21362126       (emit-push-constant-int (dump-uninterned-symbol-index symbol))
    2137        (emit-invokestatic +lisp-load-class+ "getUninternedSymbol" '("I")
     2127       (emit-invokestatic +lisp-load+ "getUninternedSymbol" '("I")
    21382128                          +lisp-object+)
    21392129       (emit 'checkcast +lisp-symbol-class+))
     
    30533043    (emit-push-constant-int 0)                            ;; srcPos
    30543044    (emit-push-constant-int (length *closure-variables*))
    3055     (emit 'anewarray +closure-binding-class+)             ;; dest
     3045    (emit 'anewarray +lisp-closure-binding+)             ;; dest
    30563046    (emit 'dup)
    30573047    (astore register)  ;; save dest value
     
    31023092                                        ; Stack: template-function
    31033093             (when *closure-variables*
    3104                (emit 'checkcast +lisp-compiled-closure-class+)
     3094               (emit 'checkcast +lisp-compiled-closure+)
    31053095               (duplicate-closure-array compiland)
    31063096               (emit-invokestatic +lisp+ "makeCompiledClosure"
     
    33923382
    33933383(defun p2-test-packagep (form)
    3394   (p2-test-instanceof-predicate form +lisp-package-class+))
     3384  (p2-test-instanceof-predicate form +lisp-package+))
    33953385
    33963386(defun p2-test-rationalp (form)
     
    39323922(defun emit-new-closure-binding (variable)
    39333923  ""
    3934   (emit 'new +closure-binding-class+)            ;; value c-b
     3924  (emit 'new +lisp-closure-binding+)            ;; value c-b
    39353925  (emit 'dup_x1)                                 ;; c-b value c-b
    39363926  (emit 'swap)                                   ;; c-b c-b value
    3937   (emit-invokespecial-init +closure-binding-class+
     3927  (emit-invokespecial-init +lisp-closure-binding+
    39383928                           (list +lisp-object+)) ;; c-b
    39393929  (aload (compiland-closure-register *current-compiland*))
     
    42364226           (emit 'aaload)
    42374227           (emit-swap representation nil)
    4238            (emit 'putfield +closure-binding-class+ "value" +lisp-object+))
     4228           (emit 'putfield +lisp-closure-binding+ "value" +lisp-object+))
    42394229          ((variable-environment variable)
    42404230           (assert (not *file-compilation*))
     
    42684258         (emit-push-constant-int (variable-closure-index variable))
    42694259         (emit 'aaload)
    4270          (emit 'getfield +closure-binding-class+ "value" +lisp-object+))
     4260         (emit 'getfield +lisp-closure-binding+ "value" +lisp-object+))
    42714261        ((variable-environment variable)
    42724262         (assert (not *file-compilation*))
     
    46544644
    46554645(defun p2-packagep (form target representation)
    4656   (p2-instanceof-predicate form target representation +lisp-package-class+))
     4646  (p2-instanceof-predicate form target representation +lisp-package+))
    46574647
    46584648(defun p2-readtablep (form target representation)
    4659   (p2-instanceof-predicate form target representation +lisp-readtable-class+))
     4649  (p2-instanceof-predicate form target representation +lisp-readtable+))
    46604650
    46614651(defun p2-simple-vector-p (form target representation)
     
    49564946      (dformat t "(compiland-closure-register parent) = ~S~%"
    49574947         (compiland-closure-register parent))
    4958       (emit 'checkcast +lisp-compiled-closure-class+)
     4948      (emit 'checkcast +lisp-compiled-closure+)
    49594949      (duplicate-closure-array parent)
    49604950      (emit-invokestatic +lisp+ "makeCompiledClosure"
     
    50865076
    50875077               (when (compiland-closure-register *current-compiland*)
    5088                  (emit 'checkcast +lisp-compiled-closure-class+)
     5078                 (emit 'checkcast +lisp-compiled-closure+)
    50895079                 (duplicate-closure-array *current-compiland*)
    50905080                 (emit-invokestatic +lisp+ "makeCompiledClosure"
     
    56245614       (compile-forms-and-maybe-emit-clear-values arg1 'stack nil)
    56255615       (emit-push-constant-int 1) ; errorp
    5626        (emit-invokestatic +lisp-class-class+ "findClass"
     5616       (emit-invokestatic +lisp-class+ "findClass"
    56275617                          (list +lisp-object+ "Z") +lisp-object+)
    56285618       (fix-boxing representation nil)
     
    56325622   (compile-forms-and-maybe-emit-clear-values arg1 'stack nil
    56335623                arg2 'stack :boolean)
    5634          (emit-invokestatic +lisp-class-class+ "findClass"
     5624         (emit-invokestatic +lisp-class+ "findClass"
    56355625                            (list +lisp-object+ "Z") +lisp-object+)
    56365626         (fix-boxing representation nil)
     
    58105800    (cond ((eq (derive-compiler-type arg) 'STREAM)
    58115801     (compile-forms-and-maybe-emit-clear-values arg 'stack nil)
    5812            (emit 'checkcast +lisp-stream-class+)
    5813            (emit-invokevirtual +lisp-stream-class+ "getElementType"
     5802           (emit 'checkcast +lisp-stream+)
     5803           (emit-invokevirtual +lisp-stream+ "getElementType"
    58145804                               nil +lisp-object+)
    58155805           (emit-move-from-stack target representation))
     
    58295819           (compile-form arg1 'stack :int)
    58305820           (compile-form arg2 'stack nil)
    5831            (emit 'checkcast +lisp-stream-class+)
     5821           (emit 'checkcast +lisp-stream+)
    58325822           (maybe-emit-clear-values arg1 arg2)
    58335823           (emit 'swap)
    5834            (emit-invokevirtual +lisp-stream-class+ "_writeByte" '("I") nil)
     5824           (emit-invokevirtual +lisp-stream+ "_writeByte" '("I") nil)
    58355825           (when target
    58365826             (emit-push-nil)
     
    58575847         (cond ((compiler-subtypep type1 'stream)
    58585848    (compile-forms-and-maybe-emit-clear-values arg1 'stack nil)
    5859                 (emit 'checkcast +lisp-stream-class+)
     5849                (emit 'checkcast +lisp-stream+)
    58605850                (emit-push-constant-int 1)
    58615851                (emit-push-nil)
    5862                 (emit-invokevirtual +lisp-stream-class+ "readLine"
     5852                (emit-invokevirtual +lisp-stream+ "readLine"
    58635853                                    (list "Z" +lisp-object+) +lisp-object+)
    58645854                (emit-move-from-stack target))
     
    58715861         (cond ((and (compiler-subtypep type1 'stream) (null arg2))
    58725862    (compile-forms-and-maybe-emit-clear-values arg1 'stack nil)
    5873                 (emit 'checkcast +lisp-stream-class+)
     5863                (emit 'checkcast +lisp-stream+)
    58745864                (emit-push-constant-int 0)
    58755865                (emit-push-nil)
    5876                 (emit-invokevirtual +lisp-stream-class+ "readLine"
     5866                (emit-invokevirtual +lisp-stream+ "readLine"
    58775867                                    (list "Z" +lisp-object+) +lisp-object+)
    58785868                (emit-move-from-stack target)
     
    74887478                            (HASH-TABLE +lisp-hash-table-class+)
    74897479                            (FIXNUM     +lisp-fixnum-class+)
    7490           (STREAM     +lisp-stream-class+)
     7480          (STREAM     +lisp-stream+)
    74917481                            (STRING     +lisp-abstract-string-class+)
    74927482                            (VECTOR     +lisp-abstract-vector-class+)))
     
    79507940(defun write-class-file (class-file stream)
    79517941  (let* ((super (abcl-class-file-superclass class-file))
    7952          (this-index (pool-class (abcl-class-file-class class-file)))
    7953          (super-index (pool-class super))
     7942         (this (abcl-class-file-class class-file))
     7943         (this-index (pool-class (!class-name this)))
     7944         (super-index (pool-class (!class-name super)))
    79547945         (constructor (make-constructor super
    79557946                                        (abcl-class-file-lambda-name class-file)
     
    81038094            ;; if we're the ultimate parent: create the closure array
    81048095            (emit-push-constant-int (length *closure-variables*))
    8105             (emit 'anewarray +closure-binding-class+))
     8096            (emit 'anewarray +lisp-closure-binding+))
    81068097        (progn
    81078098          (aload 0)
    8108           (emit 'getfield +lisp-compiled-closure-class+ "ctx"
     8099          (emit 'getfield +lisp-compiled-closure+ "ctx"
    81098100                +closure-binding-array+)
    81108101          (when local-closure-vars
     
    81308121            (emit 'dup) ; array
    81318122            (emit-push-constant-int i)
    8132             (emit 'new +closure-binding-class+)
     8123            (emit 'new +lisp-closure-binding+)
    81338124            (emit 'dup)
    81348125            (cond
     
    81488139              (t
    81498140               (assert (not "Can't happen!!"))))
    8150             (emit-invokespecial-init +closure-binding-class+
     8141            (emit-invokespecial-init +lisp-closure-binding+
    81518142                                     (list +lisp-object+))
    81528143            (emit 'aastore)))))
     
    82488239          (if (or *hairy-arglist-p*
    82498240      (and *child-p* *closure-variables*))
    8250         +lisp-compiled-closure-class+
     8241        +lisp-compiled-closure+
    82518242      +lisp-primitive-class+))
    82528243
Note: See TracChangeset for help on using the changeset viewer.