[vmkit-commits] [vmkit] r145398 - /vmkit/trunk/lib/j3/VMCore/Jni.cpp
Will Dietz
wdietz2 at illinois.edu
Tue Nov 29 06:43:28 PST 2011
Author: wdietz2
Date: Tue Nov 29 08:43:28 2011
New Revision: 145398
URL: http://llvm.org/viewvc/llvm-project?rev=145398&view=rev
Log:
Impl JNI CallLongMethod
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=145398&r1=145397&r2=145398&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jni.cpp Tue Nov 29 08:43:28 2011
@@ -908,9 +908,28 @@
jlong CallLongMethod(JNIEnv *env, jobject _obj, jmethodID methodID, ...) {
- NYI();
- abort();
- return 0;
+ BEGIN_JNI_EXCEPTION
+
+ verifyNull(_obj);
+
+ va_list ap;
+ va_start(ap, methodID);
+
+ // 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, JavaObject::getClass(obj));
+
+ jlong res = meth->invokeLongVirtualAP(vm, cl, obj, ap);
+ va_end(ap);
+
+ RETURN_FROM_JNI(res);
+
+ END_JNI_EXCEPTION
+ RETURN_FROM_JNI(0);
}
More information about the vmkit-commits
mailing list