# HG changeset patch # User Josef Eisl # Date 1413993068 -7200 # Node ID 448be95baef8f8c6784de07fff834f92ba123df1 # Parent 1c4a1a46e891ecb7f8bc59479abc5c657eff4cb2 Add Backend.newFrameMapBuilder(). diff -r 1c4a1a46e891 -r 448be95baef8 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 Wed Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Wed Oct 22 17:51:08 2014 +0200 @@ -134,7 +134,7 @@ LIR lir = new LIR(cfg, linearScanOrder, codeEmittingOrder); RegisterConfig registerConfig = null; - FrameMapBuilder frameMapBuilder = new FrameMapBuilderImpl(backend, registerConfig); + FrameMapBuilder frameMapBuilder = backend.newFrameMapBuilder(registerConfig); TargetDescription target = backend.getTarget(); CallingConvention cc = CodeUtil.getCallingConvention(backend.getProviders().getCodeCache(), CallingConvention.Type.JavaCallee, method, false); this.lirGenRes = backend.newLIRGenerationResult(lir, frameMapBuilder, method, null); diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Wed Oct 22 17:51:08 2014 +0200 @@ -36,7 +36,6 @@ import com.oracle.graal.api.meta.ProfilingInfo.TriState; import com.oracle.graal.compiler.alloc.*; import com.oracle.graal.compiler.common.cfg.*; -import com.oracle.graal.compiler.gen.*; import com.oracle.graal.compiler.target.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; @@ -243,7 +242,7 @@ throw Debug.handle(e); } try (Scope ds = Debug.scope("BackEnd", lir)) { - FrameMapBuilder frameMapBuilder = new FrameMapBuilderImpl(backend, registerConfig); + FrameMapBuilder frameMapBuilder = backend.newFrameMapBuilder(registerConfig); LIRGenerationResult lirGenRes = backend.newLIRGenerationResult(lir, frameMapBuilder, graph.method(), stub); LIRGeneratorTool lirGen = backend.newLIRGenerator(cc, lirGenRes); NodeLIRBuilderTool nodeLirGen = backend.newNodeLIRBuilder(graph, lirGen); diff -r 1c4a1a46e891 -r 448be95baef8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/FrameMapBuilderImpl.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/FrameMapBuilderImpl.java Wed Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/FrameMapBuilderImpl.java Wed Oct 22 17:51:08 2014 +0200 @@ -32,9 +32,12 @@ public class FrameMapBuilderImpl implements FrameMapBuilder { private final FrameMap frameMap; + private final RegisterConfig registerConfig; public FrameMapBuilderImpl(Backend backend, RegisterConfig registerConfig) { - this.frameMap = backend.newFrameMap(registerConfig); + CodeCacheProvider codeCache = backend.getCodeCache(); + this.registerConfig = registerConfig == null ? codeCache.getRegisterConfig() : registerConfig; + this.frameMap = backend.newFrameMap(this); } public StackSlot allocateSpillSlot(LIRKind kind) { @@ -46,7 +49,7 @@ } public RegisterConfig getRegisterConfig() { - return frameMap.getRegisterConfig(); + return registerConfig; } public void freeSpillSlot(StackSlot slot) { diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/target/Backend.java Wed Oct 22 17:51:08 2014 +0200 @@ -71,7 +71,9 @@ * The given registerConfig is optional, in case null is passed the default RegisterConfig from * the CodeCacheProvider will be used. */ - public abstract FrameMap newFrameMap(RegisterConfig registerConfig); + public abstract FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig); + + public abstract FrameMap newFrameMap(FrameMapBuilder frameMapBuilder); public abstract LIRGeneratorTool newLIRGenerator(CallingConvention cc, LIRGenerationResult lirGenRes); diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Wed Oct 22 17:51:08 2014 +0200 @@ -66,8 +66,13 @@ } @Override - public FrameMap newFrameMap(RegisterConfig registerConfig) { - return new AMD64FrameMap(getCodeCache(), registerConfig); + public FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig) { + return new FrameMapBuilderImpl(this, registerConfig); + } + + @Override + public FrameMap newFrameMap(FrameMapBuilder frameMapBuilder) { + return new AMD64FrameMap(getCodeCache(), frameMapBuilder.getRegisterConfig()); } @Override diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java Wed Oct 22 17:51:08 2014 +0200 @@ -52,6 +52,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.cfg.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.compiler.gen.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.gpu.*; @@ -383,12 +384,17 @@ private static native boolean executeKernel0(HotSpotInstalledCode kernel, int jobSize, Object[] args, int numTlabs, int allocBytesPerWorkitem, int[] oopMapArray) throws InvalidInstalledCodeException; + @Override + public FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig) { + return new FrameMapBuilderImpl(this, registerConfig); + } + /** * Use the HSAIL register set when the compilation target is HSAIL. */ @Override - public FrameMap newFrameMap(RegisterConfig registerConfig) { - return new HSAILFrameMap(getCodeCache(), registerConfig); + public FrameMap newFrameMap(FrameMapBuilder frameMapBuilder) { + return new HSAILFrameMap(getCodeCache(), frameMapBuilder.getRegisterConfig()); } @Override diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotBackend.java Wed Oct 22 17:51:08 2014 +0200 @@ -38,6 +38,7 @@ import com.oracle.graal.asm.ptx.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.cfg.*; +import com.oracle.graal.compiler.gen.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.gpu.*; @@ -49,8 +50,8 @@ import com.oracle.graal.lir.StandardOp.LabelOp; import com.oracle.graal.lir.asm.*; import com.oracle.graal.lir.gen.*; +import com.oracle.graal.lir.ptx.PTXControlFlow.PTXPredicatedLIRInstruction; import com.oracle.graal.lir.ptx.*; -import com.oracle.graal.lir.ptx.PTXControlFlow.PTXPredicatedLIRInstruction; import com.oracle.graal.lir.ptx.PTXMemOp.LoadReturnAddrOp; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -156,8 +157,13 @@ private static native long getLaunchKernelAddress(); @Override - public FrameMap newFrameMap(RegisterConfig registerConfig) { - return new PTXFrameMap(getCodeCache(), registerConfig); + public FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig) { + return new FrameMapBuilderImpl(this, registerConfig); + } + + @Override + public FrameMap newFrameMap(FrameMapBuilder frameMapBuilder) { + return new PTXFrameMap(getCodeCache(), frameMapBuilder.getRegisterConfig()); } /** diff -r 1c4a1a46e891 -r 448be95baef8 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 Oct 22 17:28:05 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Wed Oct 22 17:51:08 2014 +0200 @@ -44,6 +44,7 @@ import com.oracle.graal.asm.sparc.SPARCMacroAssembler.RestoreWindow; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Setx; import com.oracle.graal.compiler.common.cfg.*; +import com.oracle.graal.compiler.gen.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.HotSpotCodeCacheProvider.MarkId; import com.oracle.graal.hotspot.meta.*; @@ -72,8 +73,13 @@ } @Override - public FrameMap newFrameMap(RegisterConfig registerConfig) { - return new SPARCFrameMap(getProviders().getCodeCache(), registerConfig); + public FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig) { + return new FrameMapBuilderImpl(this, registerConfig); + } + + @Override + public FrameMap newFrameMap(FrameMapBuilder frameMapBuilder) { + return new SPARCFrameMap(getCodeCache(), frameMapBuilder.getRegisterConfig()); } @Override