[vmkit-commits] [vmkit] r197861 - implement GetStaticMethod

Gael Thomas gael.thomas at lip6.fr
Sat Dec 21 00:41:23 PST 2013


Author: gthomas
Date: Sat Dec 21 02:41:23 2013
New Revision: 197861

URL: http://llvm.org/viewvc/llvm-project?rev=197861&view=rev
Log:
implement GetStaticMethod

Modified:
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3jni.cc

Modified: vmkit/branches/mcjit/lib/j3/vm/j3class.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3class.cc?rev=197861&r1=197860&r2=197861&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sat Dec 21 02:41:23 2013
@@ -141,6 +141,7 @@ J3ObjectType* J3ObjectType::nativeClass(
 }
 
 J3ObjectHandle* J3ObjectType::javaClass() {
+	fprintf(stderr, "javaClass: %p %p %ls\n", _javaClass, this, name()->cStr());
 	if(!_javaClass) {
 		lock();
 		if(!_javaClass) {
@@ -149,7 +150,9 @@ J3ObjectHandle* J3ObjectType::javaClass(
 			loader()->fixedPoint()->syncPush(_javaClass);
 			J3Thread::get()->restore(prev);
 			_javaClass->setLong(loader()->vm()->classVMData, (int64_t)(uintptr_t)this);
+			fprintf(stderr, "   -> native class is %p\n", nativeClass(_javaClass));
 			loader()->vm()->classInit->invokeSpecial(_javaClass);
+			fprintf(stderr, "   %p -> native class is %p\n", _javaClass, nativeClass(_javaClass));
 		}
 		unlock();
 	}

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=197861&r1=197860&r2=197861&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3jni.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3jni.cc Sat Dec 21 02:41:23 2013
@@ -27,7 +27,9 @@ jclass JNICALL FindClass(JNIEnv* env, co
 	cl->initialise();
 	res = cl->javaClass();
 	leaveJVM(); 
-	
+
+	fprintf(stderr, "find class --> %p %p\n", res, J3ObjectType::nativeClass(res));
+
 	return res;
 }
 
@@ -98,6 +100,7 @@ jmethodID JNICALL GetMethodID(JNIEnv* en
 	vmkit::Names* n = cl->loader()->vm()->names();
 	res = cl->findVirtualMethod(n->get(name), n->get(sig));
 	leaveJVM(); 
+
 	return res;
 }
 
@@ -223,7 +226,21 @@ void JNICALL SetLongField(JNIEnv* env, j
 void JNICALL SetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID, jfloat val) { enterJVM(); leaveJVM(); NYI(); }
 void JNICALL SetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID, jdouble val) { enterJVM(); leaveJVM(); NYI(); }
 
-jmethodID JNICALL GetStaticMethodID(JNIEnv* env, jclass clazz, const char* name, const char* sig) { enterJVM(); leaveJVM(); NYI(); }
+jmethodID JNICALL GetStaticMethodID(JNIEnv* env, jclass clazz, const char* name, const char* sig) { 
+	jmethodID res;
+
+	enterJVM(); 
+	
+	J3ObjectType* cl = J3ObjectType::nativeClass(clazz);
+	fprintf(stderr, "cl: %p %p\n", clazz, cl);
+	cl->initialise();
+	vmkit::Names* n = cl->loader()->vm()->names();
+	res = cl->findStaticMethod(n->get(name), n->get(sig));
+
+	leaveJVM(); 
+
+	return res;
+}
 
 jobject JNICALL CallStaticObjectMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) { enterJVM(); leaveJVM(); NYI(); }
 jobject JNICALL CallStaticObjectMethodV(JNIEnv* env, jclass clazz, jmethodID methodID, va_list args) { enterJVM(); leaveJVM(); NYI(); }





More information about the vmkit-commits mailing list