# HG changeset patch # User Thomas Wuerthinger # Date 1394015082 -3600 # Node ID 5dec26f3d4a496a589318965f737a4be8c61c287 # Parent fe8d6e12c75e90043546fdff3f843cb1b16e0cc3 Use LIR instead of LIRGenerator as parameter in emitCode. diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Wed Mar 05 11:24:42 2014 +0100 @@ -295,7 +295,7 @@ public static void emitCode(Backend backend, long[] leafGraphIds, Assumptions assumptions, LIRGenerator lirGen, CompilationResult compilationResult, ResolvedJavaMethod installedCodeOwner, CompilationResultBuilderFactory factory) { CompilationResultBuilder crb = backend.newCompilationResultBuilder(lirGen, compilationResult, factory); - backend.emitCode(crb, lirGen, installedCodeOwner); + backend.emitCode(crb, lirGen.lir, installedCodeOwner); crb.finish(); if (!assumptions.isEmpty()) { compilationResult.setAssumptions(assumptions); diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Wed Mar 05 11:24:42 2014 +0100 @@ -86,5 +86,5 @@ * {@linkplain InstalledCode#getMethod() associated} with once installed. This * argument can be null. */ - public abstract void emitCode(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod installedCodeOwner); + public abstract void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner); } diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Wed Mar 05 11:24:42 2014 +0100 @@ -224,7 +224,7 @@ } @Override - public void emitCode(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod installedCodeOwner) { + public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner) { AMD64MacroAssembler asm = (AMD64MacroAssembler) crb.asm; FrameMap frameMap = crb.frameMap; RegisterConfig regConfig = frameMap.registerConfig; @@ -235,10 +235,10 @@ emitCodePrefix(installedCodeOwner, crb, asm, regConfig, config, verifiedEntry); // Emit code for the LIR - emitCodeBody(installedCodeOwner, crb, lirGen); + emitCodeBody(installedCodeOwner, crb, lir); // Emit the suffix - emitCodeSuffix(installedCodeOwner, crb, lirGen, asm, frameMap); + emitCodeSuffix(installedCodeOwner, crb, asm, frameMap); } /** @@ -281,14 +281,14 @@ * * @param installedCodeOwner see {@link Backend#emitCode} */ - public void emitCodeBody(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, LIRGenerator lirGen) { - crb.emit(lirGen.lir); + public void emitCodeBody(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, LIR lir) { + crb.emit(lir); } /** * @param installedCodeOwner see {@link Backend#emitCode} */ - public void emitCodeSuffix(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, LIRGenerator lirGen, AMD64MacroAssembler asm, FrameMap frameMap) { + public void emitCodeSuffix(ResolvedJavaMethod installedCodeOwner, CompilationResultBuilder crb, AMD64MacroAssembler asm, FrameMap frameMap) { HotSpotProviders providers = getProviders(); HotSpotFrameContext frameContext = (HotSpotFrameContext) crb.frameContext; if (!frameContext.isStub) { @@ -303,7 +303,7 @@ if (frameContext.omitFrame) { // Cannot access slots in caller's frame if my frame is omitted - assert !frameMap.accessesCallerFrame() : lirGen.getGraph(); + assert !frameMap.accessesCallerFrame(); } } } diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java Wed Mar 05 11:24:42 2014 +0100 @@ -225,8 +225,8 @@ } @Override - public void emitCode(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod method) { - assert method != null : lirGen.getGraph() + " is not associated with a method"; + public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod method) { + assert method != null : lir + " is not associated with a method"; // Emit the prologue. Assembler asm = crb.asm; asm.emitString0("version 0:95: $full : $large;"); @@ -384,7 +384,7 @@ } } // Prologue done, Emit code for the LIR. - crb.emit(lirGen.lir); + crb.emit(lir); // Now that code is emitted go back and figure out what the upper Bound stack size was. long maxStackSize = ((HSAILAssembler) crb.asm).upperBoundStackSize(); String spillsegStringFinal; diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java Wed Mar 05 11:24:42 2014 +0100 @@ -37,7 +37,6 @@ import com.oracle.graal.asm.*; import com.oracle.graal.asm.ptx.*; import com.oracle.graal.compiler.gen.*; -import com.oracle.graal.compiler.ptx.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.graph.*; @@ -377,12 +376,12 @@ return new PTXHotSpotLIRGenerator(graph, getProviders(), getRuntime().getConfig(), frameMap, cc, lir); } - private static void emitKernelEntry(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod codeCacheOwner) { + private static void emitKernelEntry(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod codeCacheOwner) { // Emit PTX kernel entry text based on PTXParameterOp // instructions in the start block. Remove the instructions // once kernel entry text and directives are emitted to // facilitate seemless PTX code generation subsequently. - assert codeCacheOwner != null : lirGen.getGraph() + " is not associated with a method"; + assert codeCacheOwner != null : lir + " is not associated with a method"; final String name = codeCacheOwner.getName(); Assembler asm = crb.asm; @@ -393,14 +392,14 @@ asm.emitString(""); // Get the start block - Block startBlock = lirGen.lir.cfg.getStartBlock(); + Block startBlock = lir.cfg.getStartBlock(); // Keep a list of ParameterOp instructions to delete from the // list of instructions in the block. ArrayList deleteOps = new ArrayList<>(); // Emit .param arguments to kernel entry based on ParameterOp // instruction. - for (LIRInstruction op : lirGen.lir.lir(startBlock)) { + for (LIRInstruction op : lir.lir(startBlock)) { if (op instanceof PTXParameterOp) { op.emitCode(crb); deleteOps.add(op); @@ -409,7 +408,7 @@ // Delete ParameterOp instructions. for (LIRInstruction op : deleteOps) { - lirGen.lir.lir(startBlock).remove(op); + lir.lir(startBlock).remove(op); } // Start emiting body of the PTX kernel. @@ -418,14 +417,14 @@ } // Emit .reg space declarations - private static void emitRegisterDecl(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod codeCacheOwner) { + private static void emitRegisterDecl(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod codeCacheOwner) { - assert codeCacheOwner != null : lirGen.getGraph() + " is not associated with a method"; + assert codeCacheOwner != null : lir + " is not associated with a method"; RegisterAnalysis registerAnalysis = new RegisterAnalysis(); - for (Block b : lirGen.lir.codeEmittingOrder()) { - for (LIRInstruction op : lirGen.lir.lir(b)) { + for (Block b : lir.codeEmittingOrder()) { + for (LIRInstruction op : lir.lir(b)) { if (op instanceof LabelOp) { // Don't consider this as a definition } else { @@ -440,23 +439,23 @@ registerAnalysis.emitDeclarations(asm); // emit predicate register declaration - int maxPredRegNum = ((PTXLIRGenerator) lirGen).getNextPredRegNumber(); + int maxPredRegNum = lir.numVariables(); if (maxPredRegNum > 0) { asm.emitString(".reg .pred %p<" + maxPredRegNum + ">;"); } } @Override - public void emitCode(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod codeCacheOwner) { - assert codeCacheOwner != null : lirGen.getGraph() + " is not associated with a method"; + public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod codeCacheOwner) { + assert codeCacheOwner != null : lir + " is not associated with a method"; Assembler asm = crb.asm; // Emit the prologue - emitKernelEntry(crb, lirGen, codeCacheOwner); + emitKernelEntry(crb, lir, codeCacheOwner); // Emit register declarations try { - emitRegisterDecl(crb, lirGen, codeCacheOwner); + emitRegisterDecl(crb, lir, codeCacheOwner); } catch (GraalInternalError e) { e.printStackTrace(); // TODO : Better error handling needs to be done once @@ -466,7 +465,7 @@ } // Emit code for the LIR try { - crb.emit(lirGen.lir); + crb.emit(lir); } catch (GraalInternalError e) { e.printStackTrace(); // TODO : Better error handling needs to be done once diff -r fe8d6e12c75e -r 5dec26f3d4a4 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Wed Mar 05 10:32:19 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Wed Mar 05 11:24:42 2014 +0100 @@ -179,7 +179,7 @@ } @Override - public void emitCode(CompilationResultBuilder crb, LIRGenerator lirGen, ResolvedJavaMethod installedCodeOwner) { + public void emitCode(CompilationResultBuilder crb, LIR lir, ResolvedJavaMethod installedCodeOwner) { SPARCMacroAssembler masm = (SPARCMacroAssembler) crb.asm; FrameMap frameMap = crb.frameMap; RegisterConfig regConfig = frameMap.registerConfig; @@ -208,7 +208,7 @@ crb.recordMark(Marks.MARK_VERIFIED_ENTRY); // Emit code for the LIR - crb.emit(lirGen.lir); + crb.emit(lir); HotSpotFrameContext frameContext = (HotSpotFrameContext) crb.frameContext; HotSpotForeignCallsProvider foreignCalls = getProviders().getForeignCalls();