# HG changeset patch # User Christian Humer # Date 1361210319 -3600 # Node ID 89d316f8f33e850265097ddf42f314ca368dddeb # Parent c0c5286d88df25ac62da48e4c7ee14e38b62359f# Parent 60c010b8e1c1cf3d41a64ba1b7696b1302f16577 Merge diff -r c0c5286d88df -r 89d316f8f33e graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/CodeUtil.java --- 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); + } } diff -r c0c5286d88df -r 89d316f8f33e graal/com.oracle.graal.asm.test/src/com/oracle/graal/asm/test/AssemblerTest.java --- 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); } }