Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java @ 18950:3fc907b46313
[SPARC] Fix Partial Escape Analysis for SPARC in Truffle
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Mon, 26 Jan 2015 21:21:06 +0100 |
parents | 7f4cb7587f4c |
children | d526b6bffc7c |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java Mon Jan 26 21:19:36 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectTypeImpl.java Mon Jan 26 21:21:06 2015 +0100 @@ -29,6 +29,7 @@ import java.lang.annotation.*; import java.lang.reflect.*; import java.net.*; +import java.nio.*; import java.util.*; import com.oracle.graal.api.meta.*; @@ -788,12 +789,24 @@ } @Override - public ResolvedJavaField findInstanceFieldWithOffset(long offset) { + public ResolvedJavaField findInstanceFieldWithOffset(long offset, Kind expectedEntryKind) { ResolvedJavaField[] declaredFields = getInstanceFields(true); for (ResolvedJavaField field : declaredFields) { - if (((HotSpotResolvedJavaField) field).offset() == offset) { + HotSpotResolvedJavaField resolvedField = (HotSpotResolvedJavaField) field; + long resolvedFieldOffset = resolvedField.offset(); + // @formatter:off + if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN && + expectedEntryKind.isPrimitive() && + !expectedEntryKind.equals(Kind.Void) && + resolvedField.getKind().isPrimitive()) { + resolvedFieldOffset += + resolvedField.getKind().getByteCount() - + Math.min(resolvedField.getKind().getByteCount(), 4 + expectedEntryKind.getByteCount()); + } + if (resolvedFieldOffset == offset) { return field; } + // @formatter:on } return null; }