Mercurial > hg > truffle
changeset 15276:c2f715edadec
fix code to improve unsafe array location identity
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Tue, 22 Apr 2014 17:25:24 -0700 |
parents | 0c9406f9338f |
children | 87ce885d0b83 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java |
diffstat | 1 files changed, 9 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Tue Apr 22 16:41:46 2014 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Tue Apr 22 17:25:24 2014 -0700 @@ -79,15 +79,15 @@ } } } - // Temporarily disable this as it appears to break truffle. - // ResolvedJavaType receiverType = StampTool.typeOrNull(object()); - // if (receiverType != null && receiverType.isArray()) { - // LocationIdentity identity = - // NamedLocationIdentity.getArrayLocation(receiverType.getComponentType().getKind()); - // // Try to build a better location node - // ValueNode location = offset(); - // return cloneAsArrayAccess(location, identity); - // } + if (this.getLocationIdentity() == LocationIdentity.ANY_LOCATION) { + ResolvedJavaType receiverType = StampTool.typeOrNull(object()); + // Try to build a better location identity. + if (receiverType != null && receiverType.isArray()) { + LocationIdentity identity = NamedLocationIdentity.getArrayLocation(receiverType.getComponentType().getKind()); + assert !graph().isAfterFloatingReadPhase() : "cannot add more precise memory location after floating read phase"; + return cloneAsArrayAccess(offset(), identity); + } + } return this; }