Mercurial > hg > graal-compiler
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java @ 21678:7355942cb270
Improve lowering of the type check node.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 03 Jun 2015 01:10:18 +0200 |
parents | 48c1ebd24120 |
children | e7024ad04e07 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Tue Jun 02 23:20:46 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Wed Jun 03 01:10:18 2015 +0200 @@ -33,6 +33,7 @@ import com.oracle.jvmci.meta.ResolvedJavaType; import com.oracle.jvmci.meta.ForeignCallDescriptor; import com.oracle.jvmci.meta.Kind; + import static com.oracle.jvmci.meta.LocationIdentity.*; import static com.oracle.graal.compiler.common.GraalOptions.*; import static com.oracle.graal.hotspot.meta.HotSpotForeignCallsProviderImpl.*; @@ -129,7 +130,7 @@ } } else if (n instanceof TypeCheckNode) { if (graph.getGuardsStage().areDeoptsFixed()) { - instanceofSnippets.lower((TypeCheckNode) n, tool); + lowerTypeCheckNode((TypeCheckNode) n, tool, graph); } } else if (n instanceof InstanceOfDynamicNode) { if (graph.getGuardsStage().areDeoptsFixed()) { @@ -211,6 +212,13 @@ } } + private void lowerTypeCheckNode(TypeCheckNode n, LoweringTool tool, StructuredGraph graph) { + ValueNode hub = createReadHub(graph, n.getValue(), null); + ValueNode clazz = graph.unique(ConstantNode.forConstant(KlassPointerStamp.klass(), n.type().getObjectHub(), tool.getMetaAccess())); + LogicNode objectEquals = graph.unique(PointerEqualsNode.create(hub, clazz)); + n.replaceAndDelete(objectEquals); + } + private void lowerKlassLayoutHelperNode(KlassLayoutHelperNode n, LoweringTool tool) { if (tool.getLoweringStage() == LoweringTool.StandardLoweringStage.HIGH_TIER) { return;