comparison jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java @ 23989:115d4e0d7b87

removed HotSpotResolvedJavaFieldImpl.name field
author Doug Simon <doug.simon@oracle.com>
date Thu, 26 Jan 2017 13:02:37 +0100
parents 33421fb951da
children 4913d70f630b
comparison
equal deleted inserted replaced
23988:09541f94f3e6 23989:115d4e0d7b87
522 int result = UNSAFE.getInt(getMetaspaceKlass() + config.klassVtableLengthOffset) / (config.vtableEntrySize / config.heapWordSize); 522 int result = UNSAFE.getInt(getMetaspaceKlass() + config.klassVtableLengthOffset) / (config.vtableEntrySize / config.heapWordSize);
523 assert result >= config.baseVtableLength() : UNSAFE.getInt(getMetaspaceKlass() + config.klassVtableLengthOffset) + " " + config.vtableEntrySize; 523 assert result >= config.baseVtableLength() : UNSAFE.getInt(getMetaspaceKlass() + config.klassVtableLengthOffset) + " " + config.vtableEntrySize;
524 return result; 524 return result;
525 } 525 }
526 526
527 synchronized HotSpotResolvedJavaField createField(String fieldName, JavaType type, long offset, int rawFlags) { 527 synchronized HotSpotResolvedJavaField createField(JavaType type, long offset, int rawFlags, int index) {
528 return new HotSpotResolvedJavaFieldImpl(this, fieldName, type, offset, rawFlags); 528 return new HotSpotResolvedJavaFieldImpl(this, type, offset, rawFlags, index);
529 } 529 }
530 530
531 @Override 531 @Override
532 public AssumptionResult<ResolvedJavaMethod> findUniqueConcreteMethod(ResolvedJavaMethod method) { 532 public AssumptionResult<ResolvedJavaMethod> findUniqueConcreteMethod(ResolvedJavaMethod method) {
533 HotSpotResolvedJavaMethod hmethod = (HotSpotResolvedJavaMethod) method; 533 HotSpotResolvedJavaMethod hmethod = (HotSpotResolvedJavaMethod) method;
589 589
590 private int getAccessFlags() { 590 private int getAccessFlags() {
591 return readFieldSlot(config().fieldInfoAccessFlagsOffset); 591 return readFieldSlot(config().fieldInfoAccessFlagsOffset);
592 } 592 }
593 593
594 private int getNameIndex() {
595 return readFieldSlot(config().fieldInfoNameIndexOffset);
596 }
597
598 private int getSignatureIndex() { 594 private int getSignatureIndex() {
599 return readFieldSlot(config().fieldInfoSignatureIndexOffset); 595 return readFieldSlot(config().fieldInfoSignatureIndexOffset);
600 } 596 }
601 597
602 public int getOffset() { 598 public int getOffset() {
612 * on top an array of Java shorts. 608 * on top an array of Java shorts.
613 */ 609 */
614 private int readFieldSlot(int index) { 610 private int readFieldSlot(int index) {
615 int offset = Short.BYTES * index; 611 int offset = Short.BYTES * index;
616 return UNSAFE.getChar(metaspaceData + offset); 612 return UNSAFE.getChar(metaspaceData + offset);
617 }
618
619 /**
620 * Returns the name of this field as a {@link String}. If the field is an internal field the
621 * name index is pointing into the vmSymbols table.
622 */
623 public String getName() {
624 final int nameIndex = getNameIndex();
625 return isInternal() ? config().symbolAt(nameIndex) : getConstantPool().lookupUtf8(nameIndex);
626 } 613 }
627 614
628 /** 615 /**
629 * Returns the signature of this field as {@link String}. If the field is an internal field 616 * Returns the signature of this field as {@link String}. If the field is an internal field
630 * the signature index is pointing into the vmSymbols table. 617 * the signature index is pointing into the vmSymbols table.
689 return getFields(true, NO_FIELDS); 676 return getFields(true, NO_FIELDS);
690 } 677 }
691 } 678 }
692 679
693 /** 680 /**
694 * Returns the actual field count of this class's internal {@code InstanceKlass::_fields} array 681 * Gets the instance or static fields of this class.
695 * by walking the array and discounting the generic signature slots at the end of the array.
696 * 682 *
697 * <p> 683 * @param retrieveStaticFields specifies whether to return instance or static fields
698 * See {@code FieldStreamBase::init_generic_signature_start_slot} 684 * @param prepend an array to be prepended to the returned result
699 */ 685 */
700 private HotSpotResolvedJavaField[] getFields(boolean retrieveStaticFields, HotSpotResolvedJavaField[] prepend) { 686 private HotSpotResolvedJavaField[] getFields(boolean retrieveStaticFields, HotSpotResolvedJavaField[] prepend) {
701 HotSpotVMConfig config = config(); 687 HotSpotVMConfig config = config();
702 final long metaspaceFields = UNSAFE.getAddress(getMetaspaceKlass() + config.instanceKlassFieldsOffset); 688 final long metaspaceFields = UNSAFE.getAddress(getMetaspaceKlass() + config.instanceKlassFieldsOffset);
703 int metaspaceFieldsLength = UNSAFE.getInt(metaspaceFields + config.arrayU1LengthOffset); 689 int metaspaceFieldsLength = UNSAFE.getInt(metaspaceFields + config.arrayU1LengthOffset);
729 int resultIndex = prependLength; 715 int resultIndex = prependLength;
730 for (int i = 0; i < index; ++i) { 716 for (int i = 0; i < index; ++i) {
731 FieldInfo field = new FieldInfo(i); 717 FieldInfo field = new FieldInfo(i);
732 if (field.isStatic() == retrieveStaticFields) { 718 if (field.isStatic() == retrieveStaticFields) {
733 int offset = field.getOffset(); 719 int offset = field.getOffset();
734 HotSpotResolvedJavaField resolvedJavaField = createField(field.getName(), field.getType(), offset, field.getAccessFlags()); 720 HotSpotResolvedJavaField resolvedJavaField = createField(field.getType(), offset, field.getAccessFlags(), i);
735 721
736 // Make sure the result is sorted by offset. 722 // Make sure the result is sorted by offset.
737 int j; 723 int j;
738 for (j = resultIndex - 1; j >= prependLength && result[j].offset() > offset; j--) { 724 for (j = resultIndex - 1; j >= prependLength && result[j].offset() > offset; j--) {
739 result[j + 1] = result[j]; 725 result[j + 1] = result[j];