- Timestamp:
- 07/31/10 21:33:24 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/generic-class-file/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r12839 r12840 464 464 (stack-effect (cdr info)) 465 465 (class-name (!class-name class-name)) 466 (index (pool-method class-name method-name descriptor)) 466 (index (if (null *current-code-attribute*) 467 (pool-method class-name method-name descriptor) 468 (pool-add-method-ref *pool* class-name 469 method-name descriptor))) 467 470 (instruction (apply #'%emit 'invokestatic (u2 index)))) 468 471 (setf (instruction-stack instruction) stack-effect))) … … 487 490 (stack-effect (cdr info)) 488 491 (class-name (!class-name class-name)) 489 (index (pool-method class-name method-name descriptor)) 492 (index (if (null *current-code-attribute*) 493 (pool-method class-name method-name descriptor) 494 (pool-add-method-ref *pool* class-name 495 method-name descriptor))) 490 496 (instruction (apply #'%emit 'invokevirtual (u2 index)))) 491 497 (declare (type (signed-byte 8) stack-effect)) … … 506 512 (stack-effect (cdr info)) 507 513 (class-name (!class-name class-name)) 508 (index (pool-method class-name "<init>" descriptor)) 514 (index (if (null *current-code-attribute*) 515 (pool-method class-name "<init>" descriptor) 516 (pool-add-method-ref *pool* class-name 517 "<init>" descriptor))) 509 518 (instruction (apply #'%emit 'invokespecial (u2 index)))) 510 519 (declare (type (signed-byte 8) stack-effect)) … … 545 554 (defknown emit-getstatic (t t t) t) 546 555 (defun emit-getstatic (class-name field-name type) 547 (let ((index (pool-field (!class-name class-name) 548 field-name (!class-ref type)))) 556 (let ((index (if (null *current-code-attribute*) 557 (pool-field (!class-name class-name) 558 field-name (!class-ref type)) 559 (pool-add-field-ref *pool* class-name field-name type)))) 549 560 (apply #'%emit 'getstatic (u2 index)))) 550 561 551 562 (defknown emit-putstatic (t t t) t) 552 563 (defun emit-putstatic (class-name field-name type) 553 (let ((index (pool-field (!class-name class-name) 554 field-name (!class-ref type)))) 564 (let ((index (if (null *current-code-attribute*) 565 (pool-field (!class-name class-name) 566 field-name (!class-ref type)) 567 (pool-add-field-ref *pool* class-name field-name type)))) 555 568 (apply #'%emit 'putstatic (u2 index)))) 556 569
Note: See TracChangeset
for help on using the changeset viewer.