[vmkit-commits] [vmkit] r92161 - /vmkit/trunk/lib/J3/VMCore/Jni.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Dec 25 07:13:25 PST 2009
Author: geoffray
Date: Fri Dec 25 09:13:24 2009
New Revision: 92161
URL: http://llvm.org/viewvc/llvm-project?rev=92161&view=rev
Log:
Implement CallVoidMethodA.
Modified:
vmkit/trunk/lib/J3/VMCore/Jni.cpp
Modified: vmkit/trunk/lib/J3/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Jni.cpp?rev=92161&r1=92160&r2=92161&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Jni.cpp Fri Dec 25 09:13:24 2009
@@ -982,10 +982,31 @@
}
-void CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID,
+void CallVoidMethodA(JNIEnv *env, jobject _obj, jmethodID methodID,
const jvalue *args) {
- fprintf(stderr, "Implement me\n");
- abort();
+ BEGIN_JNI_EXCEPTION
+
+ verifyNull(_obj);
+
+ // Local object references.
+ JavaObject* obj = *(JavaObject**)_obj;
+ llvm_gcroot(obj, 0);
+
+ JavaMethod* meth = (JavaMethod*)methodID;
+ Jnjvm* vm = JavaThread::get()->getJVM();
+ UserClass* cl = getClassFromVirtualMethod(vm, meth, obj->getClass());
+
+ Signdef* sign = meth->getSignature();
+ uintptr_t buf = (uintptr_t)alloca(sign->nbArguments * sizeof(uint64));
+ BufToBuf(args, buf, sign);
+
+ meth->invokeIntVirtualBuf(vm, cl, obj, (void*)buf);
+
+ RETURN_VOID_FROM_JNI;
+
+ END_JNI_EXCEPTION
+
+ RETURN_VOID_FROM_JNI;
}
More information about the vmkit-commits
mailing list