Signed-off-by: Tomek Grabiec <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel