comparison agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java @ 3944:35c656d0b685

7090654: nightly failures after 7086585 Reviewed-by: kvn
author never
date Wed, 14 Sep 2011 13:57:32 -0700
parents f6f3bb0ee072
children cb315dc80374
comparison
equal deleted inserted replaced
3943:393f4b789fd0 3944:35c656d0b685
511 } 511 }
512 512
513 void iterateStaticFieldsInternal(OopVisitor visitor) { 513 void iterateStaticFieldsInternal(OopVisitor visitor) {
514 TypeArray fields = getFields(); 514 TypeArray fields = getFields();
515 int length = getJavaFieldsCount(); 515 int length = getJavaFieldsCount();
516 for (int index = 0; index < length; index += FIELD_SLOTS) { 516 for (int index = 0; index < length; index++) {
517 short accessFlags = fields.getShortAt(index + ACCESS_FLAGS_OFFSET); 517 short accessFlags = getFieldAccessFlags(index);
518 short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); 518 FieldType type = new FieldType(getFieldSignature(index));
519 FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex));
520 AccessFlags access = new AccessFlags(accessFlags); 519 AccessFlags access = new AccessFlags(accessFlags);
521 if (access.isStatic()) { 520 if (access.isStatic()) {
522 visitField(visitor, type, index); 521 visitField(visitor, type, index);
523 } 522 }
524 } 523 }
543 ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj); 542 ((InstanceKlass) getSuper()).iterateNonStaticFields(visitor, obj);
544 } 543 }
545 TypeArray fields = getFields(); 544 TypeArray fields = getFields();
546 545
547 int length = getJavaFieldsCount(); 546 int length = getJavaFieldsCount();
548 for (int index = 0; index < length; index += FIELD_SLOTS) { 547 for (int index = 0; index < length; index++) {
549 short accessFlags = fields.getShortAt(index + ACCESS_FLAGS_OFFSET); 548 short accessFlags = getFieldAccessFlags(index);
550 short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); 549 FieldType type = new FieldType(getFieldSignature(index));
551
552 FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex));
553 AccessFlags access = new AccessFlags(accessFlags); 550 AccessFlags access = new AccessFlags(accessFlags);
554 if (!access.isStatic()) { 551 if (!access.isStatic()) {
555 visitField(visitor, type, index); 552 visitField(visitor, type, index);
556 } 553 }
557 } 554 }
560 /** Field access by name. */ 557 /** Field access by name. */
561 public Field findLocalField(Symbol name, Symbol sig) { 558 public Field findLocalField(Symbol name, Symbol sig) {
562 TypeArray fields = getFields(); 559 TypeArray fields = getFields();
563 int length = (int) fields.getLength(); 560 int length = (int) fields.getLength();
564 ConstantPool cp = getConstants(); 561 ConstantPool cp = getConstants();
565 for (int i = 0; i < length; i += FIELD_SLOTS) { 562 for (int i = 0; i < length; i++) {
566 int nameIndex = fields.getShortAt(i + NAME_INDEX_OFFSET); 563 Symbol f_name = getFieldName(i);
567 int sigIndex = fields.getShortAt(i + SIGNATURE_INDEX_OFFSET); 564 Symbol f_sig = getFieldSignature(i);
568 Symbol f_name = cp.getSymbolAt(nameIndex);
569 Symbol f_sig = cp.getSymbolAt(sigIndex);
570 if (name.equals(f_name) && sig.equals(f_sig)) { 565 if (name.equals(f_name) && sig.equals(f_sig)) {
571 return newField(i); 566 return newField(i);
572 } 567 }
573 } 568 }
574 569
639 return findField(name, sig); 634 return findField(name, sig);
640 } 635 }
641 636
642 /** Get field by its index in the fields array. Only designed for 637 /** Get field by its index in the fields array. Only designed for
643 use in a debugging system. */ 638 use in a debugging system. */
644 public Field getFieldByIndex(int fieldArrayIndex) { 639 public Field getFieldByIndex(int fieldIndex) {
645 return newField(fieldArrayIndex); 640 return newField(fieldIndex);
646 } 641 }
647 642
648 643
649 /** Return a List of SA Fields for the fields declared in this class. 644 /** Return a List of SA Fields for the fields declared in this class.
650 Inherited fields are not included. 645 Inherited fields are not included.
655 // not including inherited fields. 650 // not including inherited fields.
656 TypeArray fields = getFields(); 651 TypeArray fields = getFields();
657 652
658 int length = getJavaFieldsCount(); 653 int length = getJavaFieldsCount();
659 List immediateFields = new ArrayList(length); 654 List immediateFields = new ArrayList(length);
660 for (int index = 0; index < length; index += FIELD_SLOTS) { 655 for (int index = 0; index < length; index++) {
661 immediateFields.add(getFieldByIndex(index)); 656 immediateFields.add(getFieldByIndex(index));
662 } 657 }
663 658
664 return immediateFields; 659 return immediateFields;
665 } 660 }
843 } 838 }
844 839
845 // Creates new field from index in fields TypeArray 840 // Creates new field from index in fields TypeArray
846 private Field newField(int index) { 841 private Field newField(int index) {
847 TypeArray fields = getFields(); 842 TypeArray fields = getFields();
848 short signatureIndex = fields.getShortAt(index + SIGNATURE_INDEX_OFFSET); 843 FieldType type = new FieldType(getFieldSignature(index));
849 FieldType type = new FieldType(getConstants().getSymbolAt(signatureIndex));
850 if (type.isOop()) { 844 if (type.isOop()) {
851 if (VM.getVM().isCompressedOopsEnabled()) { 845 if (VM.getVM().isCompressedOopsEnabled()) {
852 return new NarrowOopField(this, index); 846 return new NarrowOopField(this, index);
853 } else { 847 } else {
854 return new OopField(this, index); 848 return new OopField(this, index);