Mercurial > hg > truffle
changeset 15498:e30d7eaa290d
[flow-sensitive] more metrics, documentation
author | Miguel Garcia <miguel.m.garcia@oracle.com> |
---|---|
date | Sun, 04 May 2014 18:36:44 +0200 |
parents | 1f28c463e452 |
children | 229537218983 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java |
diffstat | 4 files changed, 33 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Mon May 05 13:24:57 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Sun May 04 18:36:44 2014 +0200 @@ -57,10 +57,11 @@ */ public abstract class BaseReduction extends PostOrderNodeIterator<State> { - protected static final DebugMetric metricCheckCastRemoved = Debug.metric("CheckCastRemoved"); - protected static final DebugMetric metricGuardingPiNodeRemoved = Debug.metric("GuardingPiNodeRemoved"); - protected static final DebugMetric metricFixedGuardNodeRemoved = Debug.metric("FixedGuardNodeRemoved"); - protected static final DebugMetric metricMethodResolved = Debug.metric("MethodResolved"); + protected static final DebugMetric metricCheckCastRemoved = Debug.metric("FSR-CheckCastRemoved"); + protected static final DebugMetric metricGuardingPiNodeRemoved = Debug.metric("FSR-GuardingPiNodeRemoved"); + protected static final DebugMetric metricFixedGuardNodeRemoved = Debug.metric("FSR-FixedGuardNodeRemoved"); + protected static final DebugMetric metricMethodResolved = Debug.metric("FSR-MethodResolved"); + protected static final DebugMetric metricUnconditionalDeoptInserted = Debug.metric("FSR-UnconditionalDeoptInserted"); /** * <p> @@ -95,6 +96,7 @@ * a bug in FlowSensitiveReduction (the code was reachable, after all). */ public void doRewrite(LogicNode falseConstant) { + metricUnconditionalDeoptInserted.increment(); StructuredGraph graph = fixed.graph(); // have to insert a FixedNode other than a ControlSinkNode FixedGuardNode buckStopsHere = graph.add(new FixedGuardNode(falseConstant, deoptReason, DeoptimizationAction.None));
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Mon May 05 13:24:57 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Sun May 04 18:36:44 2014 +0200 @@ -65,11 +65,12 @@ */ public final class EquationalReasoner { - private static final DebugMetric metricInstanceOfRemoved = Debug.metric("InstanceOfRemoved"); - private static final DebugMetric metricNullCheckRemoved = Debug.metric("NullCheckRemoved"); - private static final DebugMetric metricObjectEqualsRemoved = Debug.metric("ObjectEqualsRemoved"); - private static final DebugMetric metricEquationalReasoning = Debug.metric("EquationalReasoning"); - private static final DebugMetric metricDowncasting = Debug.metric("Downcasting"); + private static final DebugMetric metricInstanceOfRemoved = Debug.metric("FSR-InstanceOfRemoved"); + private static final DebugMetric metricNullCheckRemoved = Debug.metric("FSR-NullCheckRemoved"); + private static final DebugMetric metricObjectEqualsRemoved = Debug.metric("FSR-ObjectEqualsRemoved"); + private static final DebugMetric metricEquationalReasoning = Debug.metric("FSR-EquationalReasoning"); + private static final DebugMetric metricDowncasting = Debug.metric("FSR-Downcasting"); + private static final DebugMetric metricNullInserted = Debug.metric("FSR-NullInserted"); private final StructuredGraph graph; private final CanonicalizerTool tool; @@ -269,6 +270,7 @@ if (FlowUtil.hasLegalObjectStamp(v)) { if (state.isNull(v)) { // it's ok to return nullConstant in deverbosify unlike in downcast + metricNullInserted.increment(); return nullConstant; } return downcast(v); @@ -596,6 +598,7 @@ PiNode untrivialNull = nonTrivialNull(scrutinee); if (untrivialNull != null) { + metricNullInserted.increment(); return untrivialNull; }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java Mon May 05 13:24:57 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java Sun May 04 18:36:44 2014 +0200 @@ -54,6 +54,14 @@ * <ul> * <li>simplification of side-effects free expressions, via * {@link com.oracle.graal.phases.common.cfs.EquationalReasoner#deverbosify(com.oracle.graal.graph.Node)} + * <ul> + * <li> + * at certain {@link com.oracle.graal.nodes.FixedNode}, see + * {@link #deverbosifyInputsInPlace(com.oracle.graal.nodes.ValueNode)}</li> + * <li> + * including for devirtualization, see + * {@link #deverbosifyInputsCopyOnWrite(com.oracle.graal.nodes.java.MethodCallTargetNode)}</li> + * </ul> * </li> * <li>simplification of control-flow: * <ul> @@ -76,6 +84,13 @@ * </ol> * </p> * + * <p> + * Metrics for this phase are displayed starting with <code>FSR-</code>prefix, their counters are + * hosted in {@link com.oracle.graal.phases.common.cfs.BaseReduction}, + * {@link com.oracle.graal.phases.common.cfs.EquationalReasoner} and + * {@link com.oracle.graal.phases.common.cfs.State}. + * </p> + * * @see com.oracle.graal.phases.common.cfs.CheckCastReduction * @see com.oracle.graal.phases.common.cfs.GuardingPiReduction * @see com.oracle.graal.phases.common.cfs.FixedGuardReduction
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java Mon May 05 13:24:57 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java Sun May 04 18:36:44 2014 +0200 @@ -50,10 +50,10 @@ */ public final class State extends MergeableState<State> implements Cloneable { - private static final DebugMetric metricTypeRegistered = Debug.metric("TypeRegistered"); - private static final DebugMetric metricNullnessRegistered = Debug.metric("NullnessRegistered"); - private static final DebugMetric metricObjectEqualsRegistered = Debug.metric("ObjectEqualsRegistered"); - private static final DebugMetric metricImpossiblePathDetected = Debug.metric("ImpossiblePathDetected"); + private static final DebugMetric metricTypeRegistered = Debug.metric("FSR-TypeRegistered"); + private static final DebugMetric metricNullnessRegistered = Debug.metric("FSR-NullnessRegistered"); + private static final DebugMetric metricObjectEqualsRegistered = Debug.metric("FSR-ObjectEqualsRegistered"); + private static final DebugMetric metricImpossiblePathDetected = Debug.metric("FSR-ImpossiblePathDetected"); /** * <p>