Mercurial > hg > truffle
changeset 14020:39f5ea16e13a
don't directly access the arraylength of Constant objects
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Tue, 25 Feb 2014 21:40:34 -0800 |
parents | 9d864856336a |
children | 740367295912 96946b41aae7 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java |
diffstat | 2 files changed, 3 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Tue Feb 25 13:13:40 2014 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Tue Feb 25 21:40:34 2014 -0800 @@ -22,7 +22,6 @@ */ package com.oracle.graal.nodes; -import java.lang.reflect.*; import java.util.*; import com.oracle.graal.api.meta.*; @@ -37,7 +36,7 @@ * The {@code ConstantNode} represents a {@link Constant constant}. */ @NodeInfo(shortName = "Const", nameTemplate = "Const({p#rawvalue})") -public final class ConstantNode extends FloatingNode implements LIRLowerable, ArrayLengthProvider { +public final class ConstantNode extends FloatingNode implements LIRLowerable { private static final DebugMetric ConstantNodes = Debug.metric("ConstantNodes"); @@ -356,14 +355,4 @@ return super.toString(verbosity); } } - - public ValueNode length() { - if (value.getKind().isObject()) { - Object object = value.asObject(); - if (object != null && object.getClass().isArray()) { - return forIntegerKind(Kind.Int, Array.getLength(object), graph()); - } - } - return null; - } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue Feb 25 13:13:40 2014 -0800 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Tue Feb 25 21:40:34 2014 -0800 @@ -76,7 +76,8 @@ } if (tool.canonicalizeReads()) { if (metaAccess != null && object != null && object.isConstant()) { - if (location.getLocationIdentity() == LocationIdentity.FINAL_LOCATION && location instanceof ConstantLocationNode) { + if ((location.getLocationIdentity() == LocationIdentity.FINAL_LOCATION || location.getLocationIdentity() == LocationIdentity.ARRAY_LENGTH_LOCATION) & + location instanceof ConstantLocationNode) { long displacement = ((ConstantLocationNode) location).getDisplacement(); Kind kind = location.getValueKind(); if (object.kind() == Kind.Object) {