< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/LIRGenerationPhase.java
Print this page
*** 65,75 ****
@Override
protected final void run(TargetDescription target, LIRGenerationResult lirGenRes, LIRGenerationPhase.LIRGenerationContext context) {
NodeLIRBuilderTool nodeLirBuilder = context.nodeLirBuilder;
StructuredGraph graph = context.graph;
ScheduleResult schedule = context.schedule;
! for (AbstractBlockBase<?> b : lirGenRes.getLIR().getControlFlowGraph().getBlocks()) {
emitBlock(nodeLirBuilder, lirGenRes, (Block) b, graph, schedule.getBlockToNodesMap());
}
context.lirGen.beforeRegisterAllocation();
assert SSAUtil.verifySSAForm(lirGenRes.getLIR());
nodeCount.add(graph.getDebug(), graph.getNodeCount());
--- 65,79 ----
@Override
protected final void run(TargetDescription target, LIRGenerationResult lirGenRes, LIRGenerationPhase.LIRGenerationContext context) {
NodeLIRBuilderTool nodeLirBuilder = context.nodeLirBuilder;
StructuredGraph graph = context.graph;
ScheduleResult schedule = context.schedule;
! AbstractBlockBase<?>[] blocks = lirGenRes.getLIR().getControlFlowGraph().getBlocks();
! for (AbstractBlockBase<?> b : blocks) {
! matchBlock(nodeLirBuilder, (Block) b, graph, schedule);
! }
! for (AbstractBlockBase<?> b : blocks) {
emitBlock(nodeLirBuilder, lirGenRes, (Block) b, graph, schedule.getBlockToNodesMap());
}
context.lirGen.beforeRegisterAllocation();
assert SSAUtil.verifySSAForm(lirGenRes.getLIR());
nodeCount.add(graph.getDebug(), graph.getNodeCount());
*** 82,91 ****
--- 86,99 ----
LIR lir = lirGenRes.getLIR();
DebugContext debug = lir.getDebug();
instructionCounter.add(debug, lir.getLIRforBlock(b).size());
}
+ private static void matchBlock(NodeLIRBuilderTool nodeLirGen, Block b, StructuredGraph graph, ScheduleResult schedule) {
+ nodeLirGen.matchBlock(b, graph, schedule);
+ }
+
private static boolean verifyPredecessors(LIRGenerationResult lirGenRes, Block block) {
for (Block pred : block.getPredecessors()) {
if (!block.isLoopHeader() || !pred.isLoopEnd()) {
assert isProcessed(lirGenRes, pred) : "Predecessor not yet processed " + pred;
}
< prev index next >