src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/TraceBuilderResult.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/TraceBuilderResult.java
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/TraceBuilderResult.java
Print this page
*** 25,35 ****
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
! import org.graalvm.compiler.debug.Debug;
import org.graalvm.compiler.debug.Indent;
public final class TraceBuilderResult {
public abstract static class TrivialTracePredicate {
--- 25,35 ----
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import org.graalvm.compiler.core.common.cfg.AbstractBlockBase;
! import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.debug.Indent;
public final class TraceBuilderResult {
public abstract static class TrivialTracePredicate {
*** 37,49 ****
}
private final ArrayList<Trace> traces;
private final Trace[] blockToTrace;
! static TraceBuilderResult create(AbstractBlockBase<?>[] blocks, ArrayList<Trace> traces, Trace[] blockToTrace, TrivialTracePredicate pred) {
connect(traces, blockToTrace);
! ArrayList<Trace> newTraces = reorderTraces(traces, pred);
TraceBuilderResult traceBuilderResult = new TraceBuilderResult(newTraces, blockToTrace);
traceBuilderResult.numberTraces();
assert verify(traceBuilderResult, blocks.length);
return traceBuilderResult;
}
--- 37,49 ----
}
private final ArrayList<Trace> traces;
private final Trace[] blockToTrace;
! static TraceBuilderResult create(DebugContext debug, AbstractBlockBase<?>[] blocks, ArrayList<Trace> traces, Trace[] blockToTrace, TrivialTracePredicate pred) {
connect(traces, blockToTrace);
! ArrayList<Trace> newTraces = reorderTraces(debug, traces, pred);
TraceBuilderResult traceBuilderResult = new TraceBuilderResult(newTraces, blockToTrace);
traceBuilderResult.numberTraces();
assert verify(traceBuilderResult, blocks.length);
return traceBuilderResult;
}
*** 155,179 ****
}
}
}
@SuppressWarnings("try")
! private static ArrayList<Trace> reorderTraces(ArrayList<Trace> oldTraces, TrivialTracePredicate pred) {
if (pred == null) {
return oldTraces;
}
! try (Indent indent = Debug.logAndIndent("ReorderTrace")) {
ArrayList<Trace> newTraces = new ArrayList<>(oldTraces.size());
for (int oldTraceIdx = 0; oldTraceIdx < oldTraces.size(); oldTraceIdx++) {
Trace currentTrace = oldTraces.get(oldTraceIdx);
if (!alreadyProcessed(newTraces, currentTrace)) {
assert currentTrace.getId() == oldTraceIdx : "Index mismatch";
// add current trace
addTrace(newTraces, currentTrace);
for (Trace succTrace : currentTrace.getSuccessors()) {
if (pred.isTrivialTrace(succTrace) && !alreadyProcessed(newTraces, succTrace)) {
! Debug.log("Moving trivial trace from %d to %d", succTrace.getId(), newTraces.size());
// add trivial successor trace
addTrace(newTraces, succTrace);
}
}
}
--- 155,179 ----
}
}
}
@SuppressWarnings("try")
! private static ArrayList<Trace> reorderTraces(DebugContext debug, ArrayList<Trace> oldTraces, TrivialTracePredicate pred) {
if (pred == null) {
return oldTraces;
}
! try (Indent indent = debug.logAndIndent("ReorderTrace")) {
ArrayList<Trace> newTraces = new ArrayList<>(oldTraces.size());
for (int oldTraceIdx = 0; oldTraceIdx < oldTraces.size(); oldTraceIdx++) {
Trace currentTrace = oldTraces.get(oldTraceIdx);
if (!alreadyProcessed(newTraces, currentTrace)) {
assert currentTrace.getId() == oldTraceIdx : "Index mismatch";
// add current trace
addTrace(newTraces, currentTrace);
for (Trace succTrace : currentTrace.getSuccessors()) {
if (pred.isTrivialTrace(succTrace) && !alreadyProcessed(newTraces, succTrace)) {
! debug.log("Moving trivial trace from %d to %d", succTrace.getId(), newTraces.size());
// add trivial successor trace
addTrace(newTraces, succTrace);
}
}
}
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/TraceBuilderResult.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File