From 549eeea7287c08bd00e0c2792ad0a22f63992c2c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Mon, 5 May 2014 08:28:29 -0400 Subject: [PATCH] ffi/java: callbacks are relative to mainmodule MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- src/common_ffi/java.nit | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/common_ffi/java.nit b/src/common_ffi/java.nit index 222cd15..f91eac8 100644 --- a/src/common_ffi/java.nit +++ b/src/common_ffi/java.nit @@ -182,7 +182,7 @@ class JavaLanguage redef fun compile_callback(callback, mmodule, mainmodule, ccu) do ffi_ccu = ccu - callback.compile_callback_to_java(mmodule, ccu) + callback.compile_callback_to_java(mmodule, mainmodule, ccu) end end @@ -381,7 +381,7 @@ end redef class NitniCallback # Compile C and Java code to implement this callback - fun compile_callback_to_java(mmodule: MModule, ccu: CCompilationUnit) do end + fun compile_callback_to_java(mmodule: MModule, mainmodule: MModule, ccu: CCompilationUnit) do end # Returns the list of C functions to link with extern Java methods, as required # to enable this callback from Java code. @@ -393,7 +393,7 @@ redef class NitniCallback end redef class MExplicitCall - redef fun compile_callback_to_java(mmodule, ccu) + redef fun compile_callback_to_java(mmodule, mainmodule, ccu) do var mproperty = mproperty assert mproperty isa MMethod @@ -401,11 +401,11 @@ redef class MExplicitCall # In C, indirection implementing the Java extern methods var csignature = mproperty.build_c_implementation_signature(recv_mtype, mmodule, "___indirect", long_signature, from_java_call_context) var cf = new CFunction("JNIEXPORT {csignature}") - cf.exprs.add "\t{mproperty.build_ccall(recv_mtype, mmodule, null, long_signature, from_java_call_context, null)}\n" + cf.exprs.add "\t{mproperty.build_ccall(recv_mtype, mainmodule, null, long_signature, from_java_call_context, null)}\n" ccu.add_local_function cf # In Java, declare the extern method as a private static local method - var java_signature = mproperty.build_csignature(recv_mtype, mmodule, null, short_signature, java_call_context) + var java_signature = mproperty.build_csignature(recv_mtype, mainmodule, null, short_signature, java_call_context) mmodule.java_file.class_content.add "private native static {java_signature};\n" end -- 1.7.9.5