# HG changeset patch # User Doug Simon # Date 1427803943 -7200 # Node ID 178814b064a7d29689411148da125869b349fc30 # Parent 1505cfecbeed2b2dbd6650c7a998822d8124a17a moved use of GraphUtil.originalValue API into InvocationPlugins to avoid its overhead during canonicalization diff -r 1505cfecbeed -r 178814b064a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Tue Mar 31 14:11:07 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphBuilderPlugins.java Tue Mar 31 14:12:23 2015 +0200 @@ -47,6 +47,7 @@ import com.oracle.graal.nodes.HeapAccess.BarrierType; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; +import com.oracle.graal.nodes.util.*; import com.oracle.graal.options.*; import com.oracle.graal.replacements.*; import com.oracle.graal.word.*; @@ -124,7 +125,7 @@ r.register1(query.name(), Receiver.class, new InvocationPlugin() { public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { ValueNode javaClass = receiver.get(); - ValueNode folded = ClassQueryNode.tryFold(javaClass, query, b.getMetaAccess(), b.getConstantReflection()); + ValueNode folded = ClassQueryNode.tryFold(GraphUtil.originalValue(javaClass), query, b.getMetaAccess(), b.getConstantReflection()); if (folded != null) { b.addPush(query.returnKind, folded); } else { @@ -137,7 +138,7 @@ r.register2("cast", Receiver.class, Object.class, new InvocationPlugin() { public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode object) { ValueNode javaClass = receiver.get(); - ValueNode folded = ClassCastNode.tryFold(javaClass, object, b.getConstantReflection(), b.getAssumptions()); + ValueNode folded = ClassCastNode.tryFold(GraphUtil.originalValue(javaClass), object, b.getConstantReflection(), b.getAssumptions()); if (folded != null) { b.addPush(Kind.Object, folded); } else { @@ -151,7 +152,7 @@ private static void registerCallSitePlugins(InvocationPlugins plugins) { InvocationPlugin plugin = new InvocationPlugin() { public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { - ValueNode callSite = receiver.get(); + ValueNode callSite = GraphUtil.originalValue(receiver.get()); ValueNode folded = CallSiteTargetNode.tryFold(callSite, b.getMetaAccess(), b.getAssumptions()); if (folded != null) { b.addPush(Kind.Object, folded); diff -r 1505cfecbeed -r 178814b064a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Tue Mar 31 14:11:07 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Tue Mar 31 14:12:23 2015 +0200 @@ -29,7 +29,6 @@ import com.oracle.graal.nodes.CallTargetNode.InvokeKind; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; -import com.oracle.graal.nodes.util.*; import com.oracle.graal.replacements.nodes.*; /** @@ -67,9 +66,8 @@ } public static ValueNode tryFold(ValueNode javaClass, ValueNode object, ConstantReflectionProvider constantReflection, Assumptions assumptions) { - ValueNode value = GraphUtil.originalValue(javaClass); - if (value.isConstant()) { - ResolvedJavaType type = constantReflection.asJavaType(value.asConstant()); + if (javaClass != null && javaClass.isConstant()) { + ResolvedJavaType type = constantReflection.asJavaType(javaClass.asConstant()); if (type != null && !type.isPrimitive()) { return CheckCastNode.create(type, object, null, false, assumptions); } diff -r 1505cfecbeed -r 178814b064a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassQueryNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassQueryNode.java Tue Mar 31 14:11:07 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassQueryNode.java Tue Mar 31 14:12:23 2015 +0200 @@ -30,7 +30,6 @@ import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.CallTargetNode.InvokeKind; import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.util.*; import com.oracle.graal.replacements.nodes.*; /** @@ -79,13 +78,12 @@ } public static ValueNode tryFold(ValueNode javaClass, Query query, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection) { - ValueNode value = GraphUtil.originalValue(javaClass); - if (value != null && value.isConstant()) { + if (javaClass != null && javaClass.isConstant()) { if (query.returnKind == Kind.Object) { if (GraalOptions.ImmutableCode.getValue()) { return null; } - HotSpotObjectConstant c = (HotSpotObjectConstant) value.asConstant(); + HotSpotObjectConstant c = (HotSpotObjectConstant) javaClass.asConstant(); JavaConstant answer; switch (query) { case getClassLoader0: @@ -105,7 +103,7 @@ return ConstantNode.forConstant(answer, metaAccess); } } else { - ResolvedJavaType type = constantReflection.asJavaType(value.asConstant()); + ResolvedJavaType type = constantReflection.asJavaType(javaClass.asConstant()); if (type != null) { switch (query) { case isArray: diff -r 1505cfecbeed -r 178814b064a7 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Tue Mar 31 14:11:07 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Tue Mar 31 14:12:23 2015 +0200 @@ -30,7 +30,6 @@ import com.oracle.graal.nodes.CallTargetNode.InvokeKind; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.nodes.util.*; import com.oracle.graal.replacements.nodes.*; @NodeInfo @@ -46,9 +45,8 @@ return arguments.get(0); } - public static ConstantNode tryFold(ValueNode initialCallSite, MetaAccessProvider metaAccess, Assumptions assumptions) { - ValueNode callSite = GraphUtil.originalValue(initialCallSite); - if (callSite.isConstant() && !callSite.isNullConstant()) { + public static ConstantNode tryFold(ValueNode callSite, MetaAccessProvider metaAccess, Assumptions assumptions) { + if (callSite != null && callSite.isConstant() && !callSite.isNullConstant()) { HotSpotObjectConstant c = (HotSpotObjectConstant) callSite.asConstant(); JavaConstant target = c.getCallSiteTarget(assumptions); if (target != null) {