Changeset 11898
- Timestamp:
- 05/18/09 21:21:02 (14 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r11896 r11898 2198 2198 2199 2199 The field type of the object is specified by OBJ-REF." 2200 (let ((field-name (gethash1 (list obj obj-ref) *declared-objects*))) 2201 (if field-name 2202 field-name 2203 (let ((key (symbol-name (gensym "OBJ")))) 2204 (remember key obj) 2205 (let* ((g1 (declare-string key)) 2206 (g2 (symbol-name (gensym "O2BJ"))) 2207 (*code* *static-code*)) 2208 (declare-field g2 obj-ref) 2209 (emit 'getstatic *this-class* g1 +lisp-simple-string+) 2210 (emit-invokestatic +lisp-class+ "recall" 2211 (list +lisp-simple-string+) +lisp-object+) 2212 (when (and obj-class (string/= obj-class +lisp-object-class+)) 2213 (emit 'checkcast obj-class)) 2214 (emit 'putstatic *this-class* g2 obj-ref) 2215 (setf *static-code* *code*) 2216 (setf (gethash (list obj obj-ref) *declared-objects*) g2)))))) 2200 (let ((key (symbol-name (gensym "OBJ")))) 2201 (remember key obj) 2202 (let* ((g1 (declare-string key)) 2203 (g2 (symbol-name (gensym "O2BJ")))) 2204 (let* ((*code* *static-code*)) 2205 (declare-field g2 obj-ref) 2206 (emit 'getstatic *this-class* g1 +lisp-simple-string+) 2207 (emit-invokestatic +lisp-class+ "recall" 2208 (list +lisp-simple-string+) +lisp-object+) 2209 (when (and obj-class (string/= obj-class +lisp-object-class+)) 2210 (emit 'checkcast obj-class)) 2211 (emit 'putstatic *this-class* g2 obj-ref) 2212 (setf *static-code* *code*) 2213 g2)))) 2217 2214 2218 2215 (defun declare-lambda (obj) -
trunk/abcl/src/org/armedbear/lisp/jvm.lisp
r11896 r11898 88 88 (defvar *declared-floats* nil) 89 89 (defvar *declared-doubles* nil) 90 (defvar *declared-objects* nil)91 90 92 91 (defstruct (class-file (:constructor %make-class-file)) … … 107 106 (integers (make-hash-table :test 'eql)) 108 107 (floats (make-hash-table :test 'eql)) 109 (doubles (make-hash-table :test 'eql)) 110 (objects (make-hash-table :test 'equal))) 108 (doubles (make-hash-table :test 'eql))) 111 109 112 110 (defun class-name-from-filespec (filespec) … … 140 138 (*declared-integers* (class-file-integers ,var)) 141 139 (*declared-floats* (class-file-floats ,var)) 142 (*declared-doubles* (class-file-doubles ,var)) 143 (*declared-objects* (class-file-objects ,var))) 140 (*declared-doubles* (class-file-doubles ,var))) 144 141 (progn ,@body) 145 142 (setf (class-file-pool ,var) *pool* … … 153 150 (class-file-integers ,var) *declared-integers* 154 151 (class-file-floats ,var) *declared-floats* 155 (class-file-doubles ,var) *declared-doubles* 156 (class-file-objects ,var) *declared-objects*)))) 152 (class-file-doubles ,var) *declared-doubles*)))) 157 153 158 154 (defstruct compiland
Note: See TracChangeset
for help on using the changeset viewer.