# HG changeset patch # User Josef Eisl # Date 1453194358 -3600 # Node ID cde2f72cb163260b9d9bbba6a7ace584bf8ce7ec # Parent 0adc3361952c781a9307ed880f5f3569ca483221 TraceRA: don't use streams for TraceBuilderResult.incoming*Edges(). diff -r 0adc3361952c -r cde2f72cb163 graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java Mon Jan 18 10:58:42 2016 -0800 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java Tue Jan 19 10:05:58 2016 +0100 @@ -55,13 +55,28 @@ } public boolean incomingEdges(int traceNr) { - /* TODO (je): not efficient. find better solution. */ - return getTraces().get(traceNr).stream().flatMap(b -> b.getPredecessors().stream()).anyMatch(s -> getTraceForBlock(s) != traceNr); + List trace = getTraces().get(traceNr); + return incomingEdges(traceNr, trace); } public boolean incomingSideEdges(int traceNr) { + List trace = getTraces().get(traceNr); + if (trace.size() <= 1) { + return false; + } + return incomingEdges(traceNr, trace.subList(1, trace.size())); + } + + private boolean incomingEdges(int traceNr, List trace) { /* TODO (je): not efficient. find better solution. */ - return getTraces().get(traceNr).stream().skip(1).flatMap(b -> b.getPredecessors().stream()).anyMatch(s -> getTraceForBlock(s) != traceNr); + for (T block : trace) { + for (T pred : block.getPredecessors()) { + if (getTraceForBlock(pred) != traceNr) { + return true; + } + } + } + return false; } }