Mercurial > hg > truffle
changeset 21695:e7024ad04e07
Move lowering of TypeCheckNode to VM-independent lowering provider.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 03 Jun 2015 13:24:28 +0200 |
parents | ed731ad12a10 |
children | ca140f8c35be |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java |
diffstat | 2 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Wed Jun 03 13:08:13 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Wed Jun 03 13:24:28 2015 +0200 @@ -109,7 +109,6 @@ @Override public void lower(Node n, LoweringTool tool) { StructuredGraph graph = (StructuredGraph) n.graph(); - if (n instanceof Invoke) { lowerInvoke((Invoke) n, tool, graph); } else if (n instanceof LoadMethodNode) { @@ -128,10 +127,6 @@ if (graph.getGuardsStage().areDeoptsFixed()) { instanceofSnippets.lower((InstanceOfNode) n, tool); } - } else if (n instanceof TypeCheckNode) { - if (graph.getGuardsStage().areDeoptsFixed()) { - lowerTypeCheckNode((TypeCheckNode) n, tool, graph); - } } else if (n instanceof InstanceOfDynamicNode) { if (graph.getGuardsStage().areDeoptsFixed()) { instanceofSnippets.lower((InstanceOfDynamicNode) n, tool); @@ -212,13 +207,6 @@ } } - 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;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Wed Jun 03 13:08:13 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Wed Jun 03 13:24:28 2015 +0200 @@ -73,6 +73,7 @@ @Override public void lower(Node n, LoweringTool tool) { + StructuredGraph graph = (StructuredGraph) n.graph(); if (n instanceof LoadFieldNode) { lowerLoadFieldNode((LoadFieldNode) n, tool); } else if (n instanceof StoreFieldNode) { @@ -103,6 +104,10 @@ boxingSnippets.lower((BoxNode) n, tool); } else if (n instanceof UnboxNode) { boxingSnippets.lower((UnboxNode) n, tool); + } else if (n instanceof TypeCheckNode) { + if (graph.getGuardsStage().areDeoptsFixed()) { + lowerTypeCheckNode((TypeCheckNode) n, tool, graph); + } } else if (n instanceof VerifyHeapNode) { lowerVerifyHeap((VerifyHeapNode) n); } else { @@ -110,6 +115,13 @@ } } + private void lowerTypeCheckNode(TypeCheckNode n, LoweringTool tool, StructuredGraph graph) { + ValueNode hub = createReadHub(graph, n.getValue(), null); + ValueNode clazz = graph.unique(ConstantNode.forConstant(tool.getStampProvider().createHubStamp((ObjectStamp) n.getValue().stamp()), n.type().getObjectHub(), tool.getMetaAccess())); + LogicNode objectEquals = graph.unique(PointerEqualsNode.create(hub, clazz)); + n.replaceAndDelete(objectEquals); + } + protected void lowerVerifyHeap(VerifyHeapNode n) { GraphUtil.removeFixedWithUnusedInputs(n); }