Changeset 12884


Ignore:
Timestamp:
08/09/10 14:10:50 (13 years ago)
Author:
ehuelsmann
Message:

Clean up after migration of fields and the pool.

Location:
branches/generic-class-file/abcl/src/org/armedbear/lisp
Files:
3 edited

Legend:

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

    r12883 r12884  
    866866            (write-8-bits (aref octets i) stream)))
    867867        (write-ascii string length stream))))
    868 
    869 (defknown write-constant-pool-entry (t t) t)
    870 (defun write-constant-pool-entry (entry stream)
    871   (declare (optimize speed))
    872   (declare (type stream stream))
    873   (let ((tag (first entry)))
    874     (declare (type (integer 1 12) tag))
    875     (write-u1 tag stream)
    876     (case tag
    877       (1 ; UTF8
    878        (write-utf8 (third entry) stream))
    879       ((3 4) ; int
    880        (write-u4 (second entry) stream))
    881       ((5 6) ; long double
    882        (write-u4 (second entry) stream)
    883        (write-u4 (third entry) stream))
    884       ((9 10 11 12) ; fieldref methodref InterfaceMethodref nameAndType
    885        (write-u2 (second entry) stream)
    886        (write-u2 (third entry) stream))
    887       ((7 8) ; class string
    888        (write-u2 (second entry) stream))
    889       (t
    890        (error "write-constant-pool-entry unhandled tag ~D~%" tag)))))
    891 
    892 (defun write-constant-pool (stream)
    893   (declare (optimize speed))
    894   (write-u2 *pool-count* stream)
    895   (dolist (entry (reverse *pool*))
    896     (write-constant-pool-entry entry stream)))
    897 
    898 (defstruct (field (:constructor make-field (name descriptor)))
    899   access-flags
    900   name
    901   descriptor
    902   name-index
    903   descriptor-index)
    904868
    905869(defstruct (java-method (:include method)
     
    11311095  (write-code-attr method stream))
    11321096
    1133 (defun write-field (field stream)
    1134   (declare (optimize speed))
    1135   (write-u2 (or (field-access-flags field) #x1) stream) ; access flags
    1136   (write-u2 (field-name-index field) stream)
    1137   (write-u2 (field-descriptor-index field) stream)
    1138   (write-u2 0 stream)) ; attributes count
    1139 
    1140 (defconst +field-flag-final+       #x10) ;; final field
    1141 (defconst +field-flag-static+      #x08) ;; static field
    1142 (defconst +field-access-protected+ #x04) ;; subclass accessible
    1143 (defconst +field-access-private+   #x02) ;; class-only accessible
    1144 (defconst +field-access-public+    #x01) ;; generally accessible
    1145 (defconst +field-access-default+   #x00) ;; package accessible, used for LABELS
    11461097
    11471098(defknown declare-field (t t t) t)
    11481099(defun declare-field (name descriptor)
    1149   (let ((field (!make-field name descriptor
    1150                             :flags '(:final :static :private))))
     1100  (let ((field (make-field name descriptor
     1101                           :flags '(:final :static :private))))
    11511102    (class-add-field *class-file* field)))
    11521103
     
    70757026    ;; fields
    70767027    (dolist (field (class-file-fields class-file))
    7077       (!write-field field stream))
     7028      (write-field field stream))
    70787029    ;; methods count
    70797030    (write-u2 (1+ (length (abcl-class-file-methods class-file))) stream)
  • branches/generic-class-file/abcl/src/org/armedbear/lisp/jvm-class-file.lisp

    r12880 r12884  
    604604  (write-u2 (length (class-file-fields class)) stream)
    605605  (dolist (field (class-file-fields class))
    606     (!write-field field stream))
     606    (write-field field stream))
    607607
    608608  ;; methods
     
    714714  attributes)
    715715
    716 (defun !make-field (name type &key (flags '(:public)))
     716(defun make-field (name type &key (flags '(:public)))
    717717  "Creates a field for addition to a class file."
    718718  (%make-field :access-flags flags
     
    742742  (finalize-attributes (field-attributes field) nil class))
    743743
    744 (defun !write-field (field stream)
     744(defun write-field (field stream)
    745745  "Writes classfile representation of `field' to `stream'."
    746746  (write-u2 (field-access-flags field) stream)
  • branches/generic-class-file/abcl/src/org/armedbear/lisp/jvm.lisp

    r12882 r12884  
    113113
    114114(defvar *pool* nil)
    115 (defvar *pool-count* 1)
    116 (defvar *pool-entries* nil)
    117 (defvar *fields* ())
    118115(defvar *static-code* ())
    119116(defvar *class-file* nil)
     
    175172            (*class-file*           ,var)
    176173            (*pool*                 (abcl-class-file-constants ,var))
    177             (*fields*               (abcl-class-file-fields ,var))
    178174            (*static-code*          (abcl-class-file-static-code ,var))
    179175            (*externalized-objects* (abcl-class-file-objects ,var))
    180176            (*declared-functions*   (abcl-class-file-functions ,var)))
    181177       (progn ,@body)
    182        (setf (abcl-class-file-fields ,var)       *fields*
    183              (abcl-class-file-static-code ,var)  *static-code*
     178       (setf (abcl-class-file-static-code ,var)  *static-code*
    184179             (abcl-class-file-objects ,var)      *externalized-objects*
    185180             (abcl-class-file-functions ,var)    *declared-functions*))))
Note: See TracChangeset for help on using the changeset viewer.