# HG changeset patch # User Josef Eisl # Date 1423243067 -3600 # Node ID fb461d6fb50cacc50bcba6408bfa68e4a2252f55 # Parent 0cd7d78a29c55147a0c824422e51db56e6c92e96 BaselineCompiler: use GraalCompiler.emitLowLevel(). diff -r 0cd7d78a29c5 -r fb461d6fb50c graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java --- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Fri Feb 06 17:53:14 2015 +0100 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Fri Feb 06 18:17:47 2015 +0100 @@ -28,10 +28,10 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.compiler.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.alloc.*; import com.oracle.graal.compiler.common.calc.*; -import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.compiler.gen.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.debug.*; @@ -41,10 +41,8 @@ import com.oracle.graal.java.BciBlockMapping.LocalLiveness; import com.oracle.graal.lir.*; import com.oracle.graal.lir.StandardOp.BlockEndOp; -import com.oracle.graal.lir.alloc.lsra.*; import com.oracle.graal.lir.framemap.*; import com.oracle.graal.lir.gen.*; -import com.oracle.graal.lir.stackslotalloc.*; import com.oracle.graal.phases.*; public class BaselineBytecodeParser extends AbstractBytecodeParser implements BytecodeParserTool { @@ -80,11 +78,7 @@ this.setCurrentFrameState(frameState); } - public LIRGenerationResult getLIRGenerationResult() { - return lirGenRes; - } - - protected void build() { + protected LIRGenerationResult build() { if (PrintProfilingInformation.getValue()) { TTY.println("Profiling info for " + method.format("%H.%n(%p)")); TTY.println(MetaUtil.indent(profilingInfo.toString(method, CodeUtil.NEW_LINE), " ")); @@ -123,8 +117,8 @@ BaselineControlFlowGraph cfg = BaselineControlFlowGraph.compute(blockMap); // create the LIR - List> linearScanOrder = ComputeBlockOrder.computeLinearScanOrder(blockMap.getBlocks().length, blockMap.startBlock); - List> codeEmittingOrder = ComputeBlockOrder.computeCodeEmittingOrder(blockMap.getBlocks().length, blockMap.startBlock); + List linearScanOrder = ComputeBlockOrder.computeLinearScanOrder(blockMap.getBlocks().length, blockMap.startBlock); + List codeEmittingOrder = ComputeBlockOrder.computeCodeEmittingOrder(blockMap.getBlocks().length, blockMap.startBlock); LIR lir = new LIR(cfg, linearScanOrder, codeEmittingOrder); RegisterConfig registerConfig = null; @@ -150,21 +144,10 @@ throw Debug.handle(e); } - try (Scope s = Debug.scope("Allocator")) { - if (backend.shouldAllocateRegisters()) { - LinearScan.allocate(target, lirGenRes); - } - } - try (Scope s1 = Debug.scope("BuildFrameMap")) { - // build frame map - lirGenRes.buildFrameMap(new SimpleStackSlotAllocator()); - Debug.dump(lir, "After FrameMap building"); - } - try (Scope s1 = Debug.scope("MarkLocations")) { - if (backend.shouldAllocateRegisters()) { - // currently we mark locations only if we do register allocation - LocationMarker.markLocations(lirGenRes); - } + try (Scope s = Debug.scope("LowLevelTier", this)) { + return GraalCompiler.emitLowLevel(backend, target, lir, codeEmittingOrder, linearScanOrder, lirGenRes, gen); + } catch (Throwable e) { + throw Debug.handle(e); } } catch (Throwable e) { diff -r 0cd7d78a29c5 -r fb461d6fb50c graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineCompiler.java --- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineCompiler.java Fri Feb 06 17:53:14 2015 +0100 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineCompiler.java Fri Feb 06 18:17:47 2015 +0100 @@ -26,19 +26,18 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; -import com.oracle.graal.bytecode.*; import com.oracle.graal.compiler.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.debug.*; import com.oracle.graal.java.*; import com.oracle.graal.lir.asm.*; +import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.phases.*; /** * The {@code GraphBuilder} class parses the bytecode of a method and builds the IR graph. */ -@SuppressWarnings("all") public class BaselineCompiler { public BaselineCompiler(GraphBuilderConfiguration graphBuilderConfig, MetaAccessProvider metaAccess) { @@ -50,8 +49,8 @@ private final GraphBuilderConfiguration graphBuilderConfig; - public CompilationResult generate(ResolvedJavaMethod method, int entryBCI, Backend backend, CompilationResult compilationResult, ResolvedJavaMethod installedCodeOwner, - CompilationResultBuilderFactory factory, OptimisticOptimizations optimisticOpts, Replacements replacements) { + public CompilationResult generate(ResolvedJavaMethod method, @SuppressWarnings("unused") int entryBCI, Backend backend, CompilationResult compilationResult, ResolvedJavaMethod installedCodeOwner, + CompilationResultBuilderFactory factory, OptimisticOptimizations optimisticOpts, @SuppressWarnings("unused") Replacements replacements) { assert method.getCode() != null : "method must contain bytecodes: " + method; TTY.Filter filter = new TTY.Filter(PrintFilter.getValue(), method); @@ -60,15 +59,16 @@ BaselineBytecodeParser parser = new BaselineBytecodeParser(metaAccess, method, graphBuilderConfig, optimisticOpts, frameState, backend); // build blocks and LIR instructions + final LIRGenerationResult res; try { - parser.build(); + res = parser.build(); } finally { filter.remove(); } // emitCode Assumptions assumptions = new Assumptions(OptAssumptions.getValue()); - GraalCompiler.emitCode(backend, assumptions, parser.getLIRGenerationResult(), compilationResult, installedCodeOwner, factory); + GraalCompiler.emitCode(backend, assumptions, res, compilationResult, installedCodeOwner, factory); return compilationResult; }