Mercurial > hg > truffle
changeset 14787:6ce74db1c9fb
Use List<T> instead of Iterable<T> in AbstractBlock to (temporary) allow editing.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Wed, 12 Mar 2014 13:38:12 +0100 |
parents | a6595f1b55b0 |
children | f0da23ee8315 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ControlFlowOptimizer.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/AbstractBlock.java |
diffstat | 3 files changed, 12 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Wed Mar 12 12:09:07 2014 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Wed Mar 12 13:38:12 2014 +0100 @@ -280,7 +280,7 @@ try (Scope s = Debug.scope("ControlFlowOptimizations")) { EdgeMoveOptimizer.optimize(lir); - ControlFlowOptimizer.optimize(lir); + ControlFlowOptimizer.optimize(lir, codeEmittingOrder); if (lirGen.canEliminateRedundantMoves()) { RedundantMoveElimination.optimize(lir, frameMap); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ControlFlowOptimizer.java Wed Mar 12 12:09:07 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ControlFlowOptimizer.java Wed Mar 12 13:38:12 2014 +0100 @@ -37,9 +37,8 @@ /** * Performs control flow optimizations on the given LIR graph. */ - public static void optimize(LIR lir) { - List<? extends AbstractBlock<?>> blocks = lir.codeEmittingOrder(); - ControlFlowOptimizer.deleteEmptyBlocks(lir, blocks); + public static <T extends AbstractBlock<T>> void optimize(LIR lir, List<T> codeEmittingOrder) { + ControlFlowOptimizer.deleteEmptyBlocks(lir, codeEmittingOrder); } private ControlFlowOptimizer() { @@ -80,15 +79,15 @@ } } - private static void deleteEmptyBlocks(LIR lir, List<? extends AbstractBlock<?>> blocks) { + private static <T extends AbstractBlock<T>> void deleteEmptyBlocks(LIR lir, List<T> blocks) { assert verifyBlocks(lir, blocks); - Iterator<? extends AbstractBlock<?>> iterator = blocks.iterator(); + Iterator<T> iterator = blocks.iterator(); while (iterator.hasNext()) { - AbstractBlock<?> block = iterator.next(); + T block = iterator.next(); if (canDeleteBlock(lir, block)) { // adjust successor and predecessor lists - AbstractBlock<?> other = block.getSuccessors().iterator().next(); - for (AbstractBlock<?> pred : block.getPredecessors()) { + T other = block.getSuccessors().iterator().next(); + for (AbstractBlock<T> pred : block.getPredecessors()) { Collections.replaceAll(pred.getSuccessors(), block, other); } for (int i = 0; i < other.getPredecessorCount(); i++) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/AbstractBlock.java Wed Mar 12 12:09:07 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/AbstractBlock.java Wed Mar 12 13:38:12 2014 +0100 @@ -22,6 +22,8 @@ */ package com.oracle.graal.nodes.cfg; +import java.util.*; + import com.oracle.graal.nodes.*; public interface AbstractBlock<T extends AbstractBlock<?>> { @@ -40,11 +42,11 @@ boolean isExceptionEntry(); - Iterable<T> getPredecessors(); + List<T> getPredecessors(); int getPredecessorCount(); - Iterable<T> getSuccessors(); + List<T> getSuccessors(); int getSuccessorCount();