Mercurial > hg > truffle
changeset 14587:8a6612e8e1e1
use lazy names in BasePhase
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 18 Mar 2014 17:15:35 +0100 |
parents | d2fe05d5cc96 |
children | 3ef845ec7771 |
files | graal/com.oracle.graal.phases/src/com/oracle/graal/phases/BasePhase.java |
diffstat | 1 files changed, 37 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/BasePhase.java Tue Mar 18 17:15:06 2014 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/BasePhase.java Tue Mar 18 17:15:35 2014 +0100 @@ -36,7 +36,35 @@ */ public abstract class BasePhase<C> { - private final String name; + /** + * Phase name lazily computed from the phase class. + */ + class Name extends LazyName { + + @Override + public String createString() { + String s = BasePhase.this.getClass().getSimpleName(); + return s.substring(0, s.length() - "Phase".length()); + } + } + + /** + * Lazily computed debug value name composed of a prefix and a phase's name. + */ + class DebugValueName extends LazyName { + final String prefix; + + public DebugValueName(String prefix) { + this.prefix = prefix; + } + + @Override + public String createString() { + return prefix + name; + } + } + + private final CharSequence name; private final DebugTimer phaseTimer; private final DebugMetric phaseMetric; @@ -49,25 +77,20 @@ } protected BasePhase() { - String nm = this.getClass().getSimpleName(); - if (nm.endsWith("Phase")) { - name = nm.substring(0, nm.length() - "Phase".length()); - } else { - name = nm; - } - assert checkName(name); - phaseTimer = Debug.timer("PhaseTime_" + name); - phaseMetric = Debug.metric("PhaseCount_" + name); + name = new Name(); + assert checkName(name.toString()); + phaseTimer = Debug.timer(new DebugValueName("PhaseTime_")); + phaseMetric = Debug.metric(new DebugValueName("PhaseCount_")); } protected BasePhase(String name) { assert checkName(name); this.name = name; - phaseTimer = Debug.timer("PhaseTime_" + name); - phaseMetric = Debug.metric("PhaseCount_" + name); + phaseTimer = Debug.timer(new DebugValueName("PhaseTime_")); + phaseMetric = Debug.metric(new DebugValueName("PhaseCount_")); } - protected String getDetailedName() { + protected CharSequence getDetailedName() { return getName(); } @@ -88,7 +111,7 @@ } } - public final String getName() { + public final CharSequence getName() { return name; }