Changeset 12879
- Timestamp:
- 08/08/10 21:24:03 (13 years ago)
- Location:
- branches/generic-class-file/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/generic-class-file/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r12876 r12879 1276 1276 1277 1277 (defknown declare-field (t t t) t) 1278 (defun declare-field (name descriptor access-flags) 1279 (let ((field (make-field name (internal-field-ref descriptor)))) 1280 ;; final static <access-flags> 1281 (setf (field-access-flags field) 1282 (logior +field-flag-final+ +field-flag-static+ access-flags)) 1283 (setf (field-name-index field) (pool-name (field-name field))) 1284 (setf (field-descriptor-index field) (pool-name (field-descriptor field))) 1285 (push field *fields*))) 1278 (defun declare-field (name descriptor) 1279 (if *current-code-attribute* 1280 (let ((field (!make-field name descriptor '(:final :static :private)))) 1281 (class-add-field *class-file* field)) 1282 (let ((field (make-field name (internal-field-ref descriptor)))) 1283 ;; final static <access-flags> 1284 (setf (field-access-flags field) 1285 (logior +field-flag-final+ +field-flag-static+ 1286 +field-access-private+)) 1287 (setf (field-name-index field) (pool-name (field-name field))) 1288 (setf (field-descriptor-index field) 1289 (pool-name (field-descriptor field))) 1290 (push field *fields*)))) 1286 1291 1287 1292 (defknown sanitize (symbol) string) … … 1468 1473 ;; We need to set up the serialized value 1469 1474 (let ((field-name (symbol-name (gensym prefix)))) 1470 (declare-field field-name field-type +field-access-private+)1475 (declare-field field-name field-type) 1471 1476 (push (cons object field-name) *externalized-objects*) 1472 1477 … … 1505 1510 (when s 1506 1511 (setf f (concatenate 'string f "_" s)))) 1507 (declare-field f +lisp-object+ +field-access-private+)1512 (declare-field f +lisp-object+) 1508 1513 (multiple-value-bind 1509 1514 (name class) … … 1558 1563 (*code* *static-code*)) 1559 1564 ;; fixme *declare-inline* 1560 (declare-field g +lisp-object+ +field-access-private+)1565 (declare-field g +lisp-object+) 1561 1566 (emit-new class-name) 1562 1567 (emit 'dup) … … 1583 1588 ;; strings may contain evaluated bits which may depend on 1584 1589 ;; previous statements 1585 (declare-field g +lisp-object+ +field-access-private+)1590 (declare-field g +lisp-object+) 1586 1591 (emit 'ldc (pool-string s)) 1587 1592 (emit-invokestatic +lisp+ "readObjectFromString" … … 1603 1608 ;; lisp code in the string (think #.() syntax), of which the outcome 1604 1609 ;; may depend on something which was declared inline 1605 (declare-field g +lisp-object+ +field-access-private+)1610 (declare-field g +lisp-object+) 1606 1611 (emit 'ldc (pool-string s)) 1607 1612 (emit-invokestatic +lisp+ "readObjectFromString" … … 1627 1632 (remember g obj) 1628 1633 (let* ((*code* *static-code*)) 1629 (declare-field g +lisp-object+ +field-access-private+)1634 (declare-field g +lisp-object+) 1630 1635 (emit 'ldc (pool-string g)) 1631 1636 (emit-invokestatic +lisp+ "recall" -
branches/generic-class-file/abcl/src/org/armedbear/lisp/jvm.lisp
r12865 r12879 83 83 (defvar *fields* ()) 84 84 (defvar *static-code* ()) 85 (defvar *class-file* nil) 85 86 86 87 (defvar *externalized-objects* nil)
Note: See TracChangeset
for help on using the changeset viewer.