< prev index next >
src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java
Print this page
rev 12604 : 8173912: [JVMCI] fix memory overhead of JVMCI
@@ -296,11 +296,11 @@
* Gets the constant pool entry at index {@code index}.
*
* @param index constant pool index
* @return constant pool entry
*/
- private long getEntryAt(int index) {
+ long getEntryAt(int index) {
assert checkBounds(index);
int offset = index * runtime().getHostJVMCIBackend().getTarget().wordSize;
return UNSAFE.getAddress(getMetaspaceConstantPool() + config().constantPoolSize + offset);
}
@@ -603,37 +603,36 @@
@Override
public JavaField lookupField(int cpi, ResolvedJavaMethod method, int opcode) {
final int index = rawIndexToConstantPoolIndex(cpi, opcode);
final int nameAndTypeIndex = getNameAndTypeRefIndexAt(index);
- final int nameIndex = getNameRefIndexAt(nameAndTypeIndex);
- String name = lookupUtf8(nameIndex);
final int typeIndex = getSignatureRefIndexAt(nameAndTypeIndex);
String typeName = lookupUtf8(typeIndex);
JavaType type = runtime().lookupType(typeName, getHolder(), false);
final int holderIndex = getKlassRefIndexAt(index);
JavaType holder = lookupType(holderIndex, opcode);
if (holder instanceof HotSpotResolvedObjectTypeImpl) {
- long[] info = new long[2];
+ int[] info = new int[3];
HotSpotResolvedObjectTypeImpl resolvedHolder;
try {
resolvedHolder = compilerToVM().resolveFieldInPool(this, index, (HotSpotResolvedJavaMethodImpl) method, (byte) opcode, info);
} catch (Throwable t) {
/*
* If there was an exception resolving the field we give up and return an unresolved
* field.
*/
- return new HotSpotUnresolvedField(holder, name, type);
+ return new HotSpotUnresolvedField(holder, lookupUtf8(getNameRefIndexAt(nameAndTypeIndex)), type);
}
- final int flags = (int) info[0];
- final long offset = info[1];
- HotSpotResolvedJavaField result = resolvedHolder.createField(name, type, offset, flags);
+ final int flags = info[0];
+ final int offset = info[1];
+ final int fieldIndex = info[2];
+ HotSpotResolvedJavaField result = resolvedHolder.createField(type, offset, flags, fieldIndex);
return result;
} else {
- return new HotSpotUnresolvedField(holder, name, type);
+ return new HotSpotUnresolvedField(holder, lookupUtf8(getNameRefIndexAt(nameAndTypeIndex)), type);
}
}
@Override
@SuppressWarnings("fallthrough")
< prev index next >