Mercurial > hg > graal-compiler
changeset 23319:cde2f72cb163
TraceRA: don't use streams for TraceBuilderResult.incoming*Edges().
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Tue, 19 Jan 2016 10:05:58 +0100 |
parents | 0adc3361952c |
children | 8be28ce060cc |
files | graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java |
diffstat | 1 files changed, 18 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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<T> trace = getTraces().get(traceNr); + return incomingEdges(traceNr, trace); } public boolean incomingSideEdges(int traceNr) { + List<T> trace = getTraces().get(traceNr); + if (trace.size() <= 1) { + return false; + } + return incomingEdges(traceNr, trace.subList(1, trace.size())); + } + + private boolean incomingEdges(int traceNr, List<T> 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; } }