Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- vm/jni-interface.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/vm/jni-interface.c b/vm/jni-interface.c index 2b6dc28..7614200 100644 --- a/vm/jni-interface.c +++ b/vm/jni-interface.c @@ -30,6 +30,7 @@ #include "jit/exception.h" +#include "vm/call.h" #include "vm/class.h" #include "vm/classloader.h" #include "vm/die.h" @@ -216,6 +217,63 @@ static void vm_jni_fatal_error(struct vm_jni_env *env, const char *msg) die("%s", msg); } +static void vm_jni_call_static_void_method(struct vm_jni_env *env, jclass clazz, + jmethodID methodID, ...) +{ + va_list args; + + va_start(args, methodID); + vm_call_method_v(methodID, args); + va_end(args); +} + +static void +vm_jni_call_static_void_method_v(struct vm_jni_env *env, jclass clazz, + jmethodID methodID, va_list args) +{ + vm_call_method_v(methodID, args); +} + +static jobject vm_jni_call_static_object_method(struct vm_jni_env *env, + jclass clazz, jmethodID methodID, ...) +{ + jobject result; + va_list args; + + va_start(args, methodID); + result = (jobject) vm_call_method_v(methodID, args); + va_end(args); + + return result; +} + +static jobject +vm_jni_call_static_object_method_v(struct vm_jni_env *env, jclass clazz, + jmethodID methodID, va_list args) +{ + return (jobject) vm_call_method_v(methodID, args); +} + +static jbyte vm_jni_call_static_byte_method(struct vm_jni_env *env, + jclass clazz, jmethodID methodID, ...) +{ + jbyte result; + va_list args; + + va_start(args, methodID); + result = (jbyte) vm_call_method_v(methodID, args); + va_end(args); + + return result; +} + +static jbyte +vm_jni_call_static_byte_method_v(struct vm_jni_env *env, jclass clazz, + jmethodID methodID, va_list args) +{ + return (jbyte) vm_call_method_v(methodID, args); +} + /* * The JNI native interface table. * See: http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/functions.html @@ -380,18 +438,18 @@ void *vm_jni_native_interface[] = { NULL, /* SetFloatField */ NULL, /* SetDoubleField */ vm_jni_get_static_method_id, - NULL, /* CallStaticObjectMethod */ + vm_jni_call_static_object_method, /* 115 */ - NULL, /* CallStaticObjectMethodV */ + vm_jni_call_static_object_method_v, NULL, /* CallStaticObjectMethodA */ NULL, /* CallStaticBooleanMethod */ NULL, /* CallStaticBooleanMethodV */ NULL, /* CallStaticBooleanMethodA */ /* 120 */ - NULL, /* CallStaticByteMethod */ - NULL, /* CallStaticByteMethodV */ + vm_jni_call_static_byte_method, + vm_jni_call_static_byte_method_v, NULL, /* CallStaticByteMethodA */ NULL, /* CallStaticCharMethod */ NULL, /* CallStaticCharMethodV */ @@ -419,8 +477,8 @@ void *vm_jni_native_interface[] = { /* 140 */ NULL, /* CallStaticDoubleMethodA */ - NULL, /* CallStaticVoidMethod */ - NULL, /* CallStaticVoidMethodV */ + vm_jni_call_static_void_method, + vm_jni_call_static_void_method_v, NULL, /* CallStaticVoidMethodA */ NULL, /* GetStaticFieldID */ -- 1.6.0.6 ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel