changeset 7803:89d316f8f33e

Merge
author Christian Humer <christian.humer@gmail.com>
date Mon, 18 Feb 2013 18:58:39 +0100
parents c0c5286d88df (current diff) 60c010b8e1c1 (diff)
children 447f9ba1962b 4969921f57b7
files
diffstat 2 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java	Mon Feb 18 18:55:21 2013 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java	Mon Feb 18 18:58:39 2013 +0100
@@ -310,4 +310,19 @@
         }
         return sb;
     }
+
+    /**
+     * Create a calling convention from a {@link ResolvedJavaMethod}.
+     */
+    public static CallingConvention getCallingConvention(CodeCacheProvider codeCache, CallingConvention.Type type, ResolvedJavaMethod method, boolean stackOnly) {
+        Signature sig = method.getSignature();
+        JavaType retType = sig.getReturnType(null);
+        JavaType[] argTypes = new JavaType[sig.getParameterCount(false)];
+        for (int i = 0; i < argTypes.length; i++) {
+            argTypes[i] = sig.getParameterType(i, null);
+        }
+
+        RegisterConfig registerConfig = codeCache.lookupRegisterConfig(method);
+        return registerConfig.getCallingConvention(type, retType, argTypes, codeCache.getTarget(), stackOnly);
+    }
 }
--- a/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java	Mon Feb 18 18:55:21 2013 +0100
+++ b/graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java	Mon Feb 18 18:58:39 2013 +0100
@@ -48,17 +48,9 @@
     protected InstalledCode assembleMethod(Method m, CodeGenTest test) {
         ResolvedJavaMethod method = codeCache.lookupJavaMethod(m);
         RegisterConfig registerConfig = codeCache.lookupRegisterConfig(method);
+        CallingConvention cc = CodeUtil.getCallingConvention(codeCache, CallingConvention.Type.JavaCallee, method, false);
 
         CompilationResult compResult = new CompilationResult();
-
-        Signature sig = method.getSignature();
-        JavaType retType = sig.getReturnType(null);
-        JavaType[] argTypes = new JavaType[sig.getParameterCount(false)];
-        for (int i = 0; i < argTypes.length; i++) {
-            argTypes[i] = sig.getParameterType(i, null);
-        }
-        CallingConvention cc = registerConfig.getCallingConvention(CallingConvention.Type.JavaCallee, retType, argTypes, codeCache.getTarget(), false);
-
         Buffer codeBuffer = test.generateCode(compResult, codeCache.getTarget(), registerConfig, cc);
         compResult.setTargetCode(codeBuffer.close(true), codeBuffer.position());
 
@@ -73,6 +65,6 @@
 
     protected void assertReturn(String methodName, CodeGenTest test, Object expected, Object... args) {
         Object actual = runTest(methodName, test, args);
-        Assert.assertEquals("unexpected return value: " + actual, actual, expected);
+        Assert.assertEquals("unexpected return value", expected, actual);
     }
 }