changeset 21243:0dee8e5f78ea

SSALinearScan: add meter for phi resolution moves.
author Josef Eisl <josef.eisl@jku.at>
date Thu, 30 Apr 2015 11:51:44 +0200
parents f85b6fd788b5
children bf5e055dbc9c
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScan.java
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScan.java	Thu Apr 30 16:59:13 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScan.java	Thu Apr 30 11:51:44 2015 +0200
@@ -42,6 +42,7 @@
 
 final class SSALinearScan extends LinearScan {
 
+    private static final DebugMetric numPhiResolutionMoves = Debug.metric("SSA LSRA[numPhiResolutionMoves]");
     private static final DebugMetric numStackToStackMoves = Debug.metric("SSA LSRA[numStackToStackMoves]");
 
     SSALinearScan(TargetDescription target, LIRGenerationResult res, SpillMoveFactory spillMoveFactory, RegisterAllocationConfig regAllocConfig) {
@@ -78,10 +79,12 @@
                 public void visit(Value phiIn, Value phiOut) {
                     Interval toInterval = splitChildAtOpId(intervalFor(phiIn), toBlockFirstInstructionId, LIRInstruction.OperandMode.DEF);
                     if (isConstant(phiOut)) {
+                        numPhiResolutionMoves.increment();
                         moveResolver.addMapping(phiOut, toInterval);
                     } else {
                         Interval fromInterval = splitChildAtOpId(intervalFor(phiOut), phiOutId, LIRInstruction.OperandMode.DEF);
                         if (fromInterval != toInterval && !fromInterval.location().equals(toInterval.location())) {
+                            numPhiResolutionMoves.increment();
                             if (!(isStackSlotValue(toInterval.location()) && isStackSlotValue(fromInterval.location()))) {
                                 moveResolver.addMapping(fromInterval, toInterval);
                             } else {