[vmkit-commits] [vmkit] r198506 - Implement jni->newObject*
Gael Thomas
gael.thomas at lip6.fr
Sat Jan 4 09:44:35 PST 2014
Author: gthomas
Date: Sat Jan 4 11:44:35 2014
New Revision: 198506
URL: http://llvm.org/viewvc/llvm-project?rev=198506&view=rev
Log:
Implement jni->newObject*
Modified:
vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
vmkit/branches/mcjit/lib/j3/vm/j3jni.cc
Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc?rev=198506&r1=198505&r2=198506&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc Sat Jan 4 11:44:35 2014
@@ -534,9 +534,10 @@ jobject JNICALL JVM_InvokeMethod(JNIEnv*
* java.lang.reflect.Constructor
*/
jobject JNICALL JVM_NewInstanceFromConstructor(JNIEnv* env, jobject c, jobjectArray args0) {
+ jobject res;
enterJVM();
J3Method* cons = J3Method::nativeMethod(c);
- jobject res = J3ObjectHandle::doNewObject(cons->cl());
+ res = J3ObjectHandle::doNewObject(cons->cl());
if(cons->signature()->nbIns())
J3::internalError("implement me: JVM_NewInstanceFromConstructor with arguments");
cons->invokeSpecial(res);
Modified: vmkit/branches/mcjit/lib/j3/vm/j3jni.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3jni.cc?rev=198506&r1=198505&r2=198506&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3jni.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3jni.cc Sat Jan 4 11:44:35 2014
@@ -98,9 +98,34 @@ jint JNICALL EnsureLocalCapacity(JNIEnv*
}
jobject JNICALL AllocObject(JNIEnv* env, jclass clazz) { enterJVM(); leaveJVM(); NYI(); }
-jobject JNICALL NewObject(JNIEnv* env, jclass clazz, jmethodID methodID, ...) { enterJVM(); leaveJVM(); NYI(); }
-jobject JNICALL NewObjectV(JNIEnv* env, jclass clazz, jmethodID methodID, va_list args) { enterJVM(); leaveJVM(); NYI(); }
-jobject JNICALL NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID, const jvalue* args) { enterJVM(); leaveJVM(); NYI(); }
+jobject JNICALL NewObject(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
+ jobject res;
+ enterJVM();
+ va_list va;
+ va_start(va, methodID);
+ res = env->NewObjectV(clazz, methodID, va);
+ va_end(va);
+ leaveJVM();
+ return res;
+}
+
+jobject JNICALL NewObjectV(JNIEnv* env, jclass clazz, jmethodID methodID, va_list args) {
+ jobject res;
+ enterJVM();
+ res = J3ObjectHandle::doNewObject(methodID->cl());
+ methodID->invokeSpecial(res, args);
+ leaveJVM();
+ return res;
+}
+
+jobject JNICALL NewObjectA(JNIEnv* env, jclass clazz, jmethodID methodID, const jvalue* args) {
+ jobject res;
+ enterJVM();
+ res = J3ObjectHandle::doNewObject(methodID->cl());
+ methodID->invokeSpecial(res, args);
+ leaveJVM();
+ return res;
+}
jclass JNICALL GetObjectClass(JNIEnv* env, jobject obj) {
jclass res;
More information about the vmkit-commits
mailing list