Mercurial > hg > graal-compiler
changeset 8656:369710426f74
PushNodesThroughPi: add metric for pushed nodes
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Fri, 05 Apr 2013 15:54:57 +0200 |
parents | ce271e0d0372 |
children | 63400866de15 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java |
diffstat | 4 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Fri Apr 05 15:24:22 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Fri Apr 05 15:54:57 2013 +0200 @@ -80,7 +80,8 @@ } @Override - public void push(PiNode parent) { + public boolean push(PiNode parent) { replaceFirstInput(parent, parent.object()); + return true; } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Apr 05 15:24:22 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Apr 05 15:54:57 2013 +0200 @@ -99,7 +99,7 @@ } @Override - public void push(PiNode parent) { + public boolean push(PiNode parent) { Object locId = location().locationIdentity(); if (locId instanceof ResolvedJavaField) { ResolvedJavaType fieldType = ((ResolvedJavaField) locId).getDeclaringClass(); @@ -107,8 +107,10 @@ if (fieldType.isAssignableFrom(beforePiType)) { replaceFirstInput(parent, parent.object()); + return true; } } + return false; } /**
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java Fri Apr 05 15:24:22 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/PiPushable.java Fri Apr 05 15:54:57 2013 +0200 @@ -29,5 +29,10 @@ */ public interface PiPushable { - void push(PiNode parent); + /** + * + * @param parent PiNode + * @return true if node was moved + */ + boolean push(PiNode parent); }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java Fri Apr 05 15:24:22 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushNodesThroughPi.java Fri Apr 05 15:54:57 2013 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.phases.common; +import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -29,13 +30,17 @@ public class PushNodesThroughPi extends Phase { + public static final DebugMetric PUSHED_NODES = Debug.metric("NodesPushedThroughPi"); + @Override protected void run(StructuredGraph graph) { for (PiNode pi : graph.getNodes(PiNode.class)) { for (Node n : pi.usages().snapshot()) { if (n instanceof PiPushable) { PiPushable pip = (PiPushable) n; - pip.push(pi); + if (pip.push(pi)) { + PUSHED_NODES.add(1); + } } } }