# HG changeset patch # User Thomas Wuerthinger # Date 1309263426 -7200 # Node ID 46fe56f202a4db5b9dc2a7c2096d66259c4987e9 # Parent fb38d0a18ba75d2ba53cd5df24cf14e8beb59c57 Sync with maxine changes. diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java Tue Jun 28 14:17:06 2011 +0200 @@ -33,7 +33,6 @@ import com.sun.cri.ci.*; import com.sun.cri.ci.CiCallingConvention.*; import com.sun.cri.ri.*; -import com.sun.cri.util.*; /** * This class is used to build the stack frame layout for a compiled method. @@ -130,7 +129,7 @@ incomingArguments = new CiCallingConvention(new CiValue[0], 0); } else { CiKind receiver = !isStatic(method.accessFlags()) ? method.holder().kind() : null; - incomingArguments = getCallingConvention(CRIUtil.signatureToKinds(method.signature(), receiver), JavaCallee); + incomingArguments = getCallingConvention(CiUtil.signatureToKinds(method.signature(), receiver), JavaCallee); } } @@ -142,7 +141,7 @@ * @return a {@link CiCallingConvention} instance describing the location of parameters and the return value */ public CiCallingConvention getCallingConvention(CiKind[] signature, Type type) { - CiCallingConvention cc = compilation.registerConfig.getCallingConvention(type, signature, compilation.target); + CiCallingConvention cc = compilation.registerConfig.getCallingConvention(type, signature, compilation.target, false); if (type == RuntimeCall) { assert cc.stackSize == 0 : "runtime call should not have stack arguments"; } else if (type.out) { @@ -189,7 +188,7 @@ this.spillSlotCount = spillSlotCount; int frameSize = offsetToStackBlocksEnd(); - frameSize += compilation.registerConfig.getCalleeSaveArea().size; + frameSize += compilation.registerConfig.getCalleeSaveLayout().size; this.frameSize = compilation.target.alignFrameSize(frameSize); } @@ -364,7 +363,7 @@ } public int offsetToCalleeSaveAreaStart() { - return offsetToCalleeSaveAreaEnd() - compilation.registerConfig.getCalleeSaveArea().size; + return offsetToCalleeSaveAreaEnd() - compilation.registerConfig.getCalleeSaveLayout().size; } public int offsetToCalleeSaveAreaEnd() { diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64GlobalStubEmitter.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64GlobalStubEmitter.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64GlobalStubEmitter.java Tue Jun 28 14:17:06 2011 +0200 @@ -98,7 +98,7 @@ emitStandardForward(null, runtimeCall); String name = "stub-" + runtimeCall; CiTargetMethod targetMethod = tasm.finishTargetMethod(name, runtime, registerRestoreEpilogueOffset, true); - Object stubObject = runtime.registerGlobalStub(targetMethod, name); + Object stubObject = runtime.registerCompilerStub(targetMethod, name); return new GlobalStub(null, runtimeCall.resultKind, stubObject, argsSize, argOffsets, resultOffset); } @@ -128,7 +128,7 @@ String name = "stub-" + stub; CiTargetMethod targetMethod = tasm.finishTargetMethod(name, runtime, registerRestoreEpilogueOffset, true); - Object stubObject = runtime.registerGlobalStub(targetMethod, name); + Object stubObject = runtime.registerCompilerStub(targetMethod, name); return new GlobalStub(stub, stub.resultKind, stubObject, argsSize, argOffsets, resultOffset); } @@ -238,7 +238,7 @@ assembler.emitXirInstructions(null, template.fastPath, labels, operands, null); epilogue(); CiTargetMethod targetMethod = tasm.finishTargetMethod(template.name, runtime, registerRestoreEpilogueOffset, true); - Object stubObject = runtime.registerGlobalStub(targetMethod, template.name); + Object stubObject = runtime.registerCompilerStub(targetMethod, template.name); return new GlobalStub(null, template.resultOperand.kind, stubObject, argsSize, argOffsets, resultOffset); } @@ -377,7 +377,7 @@ } private void completeSavePrologue() { - CiCalleeSaveArea csa = compiler.globalStubRegisterConfig.getCalleeSaveArea(); + CiCalleeSaveLayout csa = compiler.globalStubRegisterConfig.getCalleeSaveLayout(); this.saveSize = csa.size; int entryCodeOffset = runtime.codeOffset(); if (entryCodeOffset != 0) { @@ -396,7 +396,7 @@ registerRestoreEpilogueOffset = asm.codeBuffer.position(); if (savedAllRegisters) { - CiCalleeSaveArea csa = compiler.globalStubRegisterConfig.getCalleeSaveArea(); + CiCalleeSaveLayout csa = compiler.globalStubRegisterConfig.getCalleeSaveLayout(); int frameToCSA = 0; asm.restore(csa, frameToCSA); } else { @@ -419,7 +419,7 @@ private void forwardRuntimeCall(CiRuntimeCall call) { // Load arguments - CiCallingConvention cc = compiler.globalStubRegisterConfig.getCallingConvention(RuntimeCall, call.arguments, target); + CiCallingConvention cc = compiler.globalStubRegisterConfig.getCallingConvention(RuntimeCall, call.arguments, target, false); for (int i = 0; i < cc.locations.length; ++i) { CiValue location = cc.locations[i]; loadArgument(i, location.asRegister()); diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java Tue Jun 28 14:17:06 2011 +0200 @@ -1965,7 +1965,7 @@ masm.movl(new CiAddress(CiKind.Int, AMD64.rsp.asValue(), i * intSize), 0xC1C1C1C1); } } - CiCalleeSaveArea csa = compilation.registerConfig.getCalleeSaveArea(); + CiCalleeSaveLayout csa = compilation.registerConfig.getCalleeSaveLayout(); if (csa.size != 0) { int frameToCSA = frameMap.offsetToCalleeSaveAreaStart(); assert frameToCSA >= 0; @@ -1976,7 +1976,7 @@ case PopFrame: { int frameSize = initialFrameSizeInBytes(); - CiCalleeSaveArea csa = compilation.registerConfig.getCalleeSaveArea(); + CiCalleeSaveLayout csa = compilation.registerConfig.getCalleeSaveLayout(); if (csa.size != 0) { registerRestoreEpilogueOffset = masm.codeBuffer.position(); // saved all registers, restore all registers diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRegisterConfig.java --- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRegisterConfig.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRegisterConfig.java Tue Jun 28 14:17:06 2011 +0200 @@ -72,7 +72,7 @@ xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15 }; - private final CiCalleeSaveArea registerSaveArea; + private final CiCalleeSaveLayout registerSaveArea; public HotSpotRegisterConfig(HotSpotVMConfig config, boolean globalStubConfig) { @@ -83,9 +83,9 @@ } if (globalStubConfig) { - registerSaveArea = new CiCalleeSaveArea(-1, 8, rsaRegs); + registerSaveArea = new CiCalleeSaveLayout(0, -1, 8, rsaRegs); } else { - registerSaveArea = CiCalleeSaveArea.EMPTY; + registerSaveArea = new CiCalleeSaveLayout(0, 0, 0, new CiRegister[0]); } attributesMap = RiRegisterAttributes.createMap(this, AMD64.allRegisters); @@ -104,18 +104,18 @@ } @Override - public CiCallingConvention getCallingConvention(Type type, CiKind[] parameters, CiTarget target) { + public CiCallingConvention getCallingConvention(Type type, CiKind[] parameters, CiTarget target, boolean stackOnly) { if (type == Type.NativeCall) { throw new UnsupportedOperationException(); } - return callingConvention(parameters, type, target); + return callingConvention(parameters, type, target, stackOnly); } public CiRegister[] getCallingConventionRegisters(Type type, RegisterFlag flag) { return allParameterRegisters; } - private CiCallingConvention callingConvention(CiKind[] types, Type type, CiTarget target) { + private CiCallingConvention callingConvention(CiKind[] types, Type type, CiTarget target, boolean stackOnly) { CiValue[] locations = new CiValue[types.length]; int currentGeneral = 0; @@ -134,14 +134,14 @@ case Long: case Word: case Object: - if (currentGeneral < generalParameterRegisters.length) { + if (!stackOnly && currentGeneral < generalParameterRegisters.length) { CiRegister register = generalParameterRegisters[currentGeneral++]; locations[i] = register.asValue(kind); } break; case Float: case Double: - if (currentXMM < xmmParameterRegisters.length) { + if (!stackOnly && currentXMM < xmmParameterRegisters.length) { CiRegister register = xmmParameterRegisters[currentXMM++]; locations[i] = register.asValue(kind); } @@ -193,7 +193,7 @@ return rsp; } - public CiCalleeSaveArea getCalleeSaveArea() { + public CiCalleeSaveLayout getCalleeSaveLayout() { return registerSaveArea; } @@ -202,7 +202,7 @@ String res = String.format( "Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n" + - "CalleeSave: " + getCalleeSaveArea() + "%n" + + "CalleeSave: " + getCalleeSaveLayout() + "%n" + "Scratch: " + getScratchRegister() + "%n"); return res; } diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java --- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Tue Jun 28 14:17:06 2011 +0200 @@ -82,8 +82,8 @@ return "{" + call.runtimeCall.name() + "}"; } else if (call.symbol != null) { return "{" + call.symbol + "}"; - } else if (call.globalStubID != null) { - return "{" + call.globalStubID + "}"; + } else if (call.stubID != null) { + return "{" + call.stubID + "}"; } else { return "{" + call.method + "}"; } @@ -178,7 +178,7 @@ } @Override - public Object registerGlobalStub(CiTargetMethod targetMethod, String name) { + public Object registerCompilerStub(CiTargetMethod targetMethod, String name) { return HotSpotTargetMethod.installStub(compiler, targetMethod, name); } diff -r fb38d0a18ba7 -r 46fe56f202a4 graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java --- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java Tue Jun 28 13:53:28 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java Tue Jun 28 14:17:06 2011 +0200 @@ -96,7 +96,7 @@ XirOperand temp = asm.createRegisterTemp("temp (r10)", CiKind.Word, AMD64.r10); XirOperand cache = asm.createRegisterTemp("cache (rax)", CiKind.Word, AMD64.rax); - CiCallingConvention conventions = registerConfig.getCallingConvention(JavaCallee, new CiKind[] {CiKind.Object}, target); + CiCallingConvention conventions = registerConfig.getCallingConvention(JavaCallee, new CiKind[] {CiKind.Object}, target, false); XirOperand receiver = asm.createRegisterTemp("receiver", CiKind.Word, conventions.locations[0].asRegister()); asm.pload(CiKind.Word, temp, receiver, asm.i(config.hubOffset), false); diff -r fb38d0a18ba7 -r 46fe56f202a4 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Tue Jun 28 13:53:28 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Tue Jun 28 14:17:06 2011 +0200 @@ -525,7 +525,7 @@ oop runtime_call = CiTargetMethod_Call::runtimeCall(site); oop hotspot_method = CiTargetMethod_Call::method(site); oop symbol = CiTargetMethod_Call::symbol(site); - oop global_stub = CiTargetMethod_Call::globalStubID(site); + oop global_stub = CiTargetMethod_Call::stubID(site); oop debug_info = CiTargetMethod_Call::debugInfo(site); diff -r fb38d0a18ba7 -r 46fe56f202a4 src/share/vm/graal/graalJavaAccess.hpp --- a/src/share/vm/graal/graalJavaAccess.hpp Tue Jun 28 13:53:28 2011 +0200 +++ b/src/share/vm/graal/graalJavaAccess.hpp Tue Jun 28 14:17:06 2011 +0200 @@ -117,7 +117,7 @@ oop_field(CiTargetMethod_Call, runtimeCall, "Lcom/sun/cri/ci/CiRuntimeCall;") \ oop_field(CiTargetMethod_Call, method, "Lcom/sun/cri/ri/RiMethod;") \ oop_field(CiTargetMethod_Call, symbol, "Ljava/lang/String;") \ - oop_field(CiTargetMethod_Call, globalStubID, "Ljava/lang/Object;") \ + oop_field(CiTargetMethod_Call, stubID, "Ljava/lang/Object;") \ oop_field(CiTargetMethod_Call, debugInfo, "Lcom/sun/cri/ci/CiDebugInfo;") \ end_class \ start_class(CiTargetMethod_DataPatch) \