[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