changeset 3080:46fe56f202a4

Sync with maxine changes.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Tue, 28 Jun 2011 14:17:06 +0200
parents fb38d0a18ba7
children 25b5ec0568e6 607c6500c22e
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64GlobalStubEmitter.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRegisterConfig.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotXirGenerator.java src/share/vm/graal/graalCodeInstaller.cpp src/share/vm/graal/graalJavaAccess.hpp
diffstat 8 files changed, 28 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- 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() {
--- 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());
--- 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
--- 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;
     }
--- 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);
     }
 
--- 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);
--- 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);
 
--- 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)                                                 \