Mercurial > hg > graal-jvmci-8
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]; |