--- old/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java 2016-06-21 23:03:52.000000000 +0200 +++ new/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl.java 2016-06-21 23:03:52.000000000 +0200 @@ -591,7 +591,8 @@ // Get Klass::_fields final long metaspaceFields = UNSAFE.getAddress(getMetaspaceKlass() + config.instanceKlassFieldsOffset); assert config.fieldInfoFieldSlots == 6 : "revisit the field parsing code"; - metaspaceData = metaspaceFields + config.arrayU2DataOffset + config.fieldInfoFieldSlots * Short.BYTES * index; + int offset = config.fieldInfoFieldSlots * Short.BYTES * index; + metaspaceData = metaspaceFields + config.arrayU2DataOffset + offset; } private int getAccessFlags() { @@ -619,7 +620,8 @@ * on top an array of Java shorts. */ private int readFieldSlot(int index) { - return UNSAFE.getChar(metaspaceData + Short.BYTES * index); + int offset = Short.BYTES * index; + return UNSAFE.getChar(metaspaceData + offset); } /** @@ -628,7 +630,7 @@ */ public String getName() { final int nameIndex = getNameIndex(); - return isInternal() ? HotSpotVmSymbols.symbolAt(nameIndex) : getConstantPool().lookupUtf8(nameIndex); + return isInternal() ? config().symbolAt(nameIndex) : getConstantPool().lookupUtf8(nameIndex); } /** @@ -637,7 +639,7 @@ */ public String getSignature() { final int signatureIndex = getSignatureIndex(); - return isInternal() ? HotSpotVmSymbols.symbolAt(signatureIndex) : getConstantPool().lookupUtf8(signatureIndex); + return isInternal() ? config().symbolAt(signatureIndex) : getConstantPool().lookupUtf8(signatureIndex); } public JavaType getType() { @@ -658,6 +660,7 @@ } } + @SuppressFBWarnings(value = "SE_COMPARATOR_SHOULD_BE_SERIALIZABLE", justification = "comparator is only used transiently") private static class OffsetComparator implements java.util.Comparator { @Override public int compare(HotSpotResolvedJavaField o1, HotSpotResolvedJavaField o2) {