diff graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java @ 7798:60c010b8e1c1

Pull out utility method.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 18 Feb 2013 17:20:57 +0100
parents 5e3d1a68664e
children a063308816d9
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java	Mon Feb 18 15:34:58 2013 +0100
+++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java	Mon Feb 18 17:20:57 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);
+    }
 }