[vmkit-commits] [vmkit] r199599 - Able to resolve the main method.

Gael Thomas gael.thomas at lip6.fr
Sun Jan 19 05:40:51 PST 2014


Author: gthomas
Date: Sun Jan 19 07:40:51 2014
New Revision: 199599

URL: http://llvm.org/viewvc/llvm-project?rev=199599&view=rev
Log:
Able to resolve the main method.

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

Modified: vmkit/branches/mcjit/lib/j3/vm/j3.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3.cc?rev=199599&r1=199598&r2=199599&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Sun Jan 19 07:40:51 2014
@@ -178,13 +178,18 @@ void J3::run() {
 
 	//options()->debugExecute = 0;
 
-	J3ObjectHandle* res = z_method(J3Cst::ACC_STATIC,
-																 z_class("sun.launcher.LauncherHelper"),
-																 names()->get("checkAndLoadMain"),
-																 names()->get("(ZILjava/lang/String;)Ljava/lang/Class;"))
-		->invokeStatic(1, 1, utfToString("HelloWorld")).valObject;
+	J3Class* main = J3ObjectType::nativeClass(z_method(J3Cst::ACC_STATIC,
+																										 z_class("sun.launcher.LauncherHelper"),
+																										 names()->get("checkAndLoadMain"),
+																										 names()->get("(ZILjava/lang/String;)Ljava/lang/Class;"))
+																						->invokeStatic(1, 1, utfToString("HelloWorld")).valObject)->asClass();
 
-	fprintf(stderr, "system class loader: sysLoader: %p - %p\n", res, res->obj());
+
+	fprintf(stderr, " main class: %s\n", main->name()->cStr());
+
+	main
+		->findMethod(J3Cst::ACC_STATIC, names()->get("main"), initialClassLoader->getSignature(0, names()->get("([Ljava/lang/String;)V")))
+		->invokeStatic((J3ObjectHandle*)0);
 }
 
 JNIEnv* J3::jniEnv() {

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=199599&r1=199598&r2=199599&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sun Jan 19 07:40:51 2014
@@ -170,7 +170,7 @@ llvm::Type* J3ObjectType::llvmType() {
 }
 
 J3Method* J3ObjectType::findMethod(uint32_t access, const vmkit::Name* name, J3Signature* signature, bool error) {
-	J3::internalError("should not happe: %s::%s\n", J3ObjectType::name()->cStr(), name->cStr());
+	J3::internalError("should not happen - findMethod: %s::%s\n", J3ObjectType::name()->cStr(), name->cStr());
 }
 
 J3ObjectType* J3ObjectType::nativeClass(J3ObjectHandle* handle) {
@@ -282,14 +282,14 @@ uintptr_t J3Layout::structSize() {
 }
 
 J3Method* J3Layout::localFindMethod(const vmkit::Name* name, J3Signature* signature) {
-	//fprintf(stderr, " --- lookup %s::%s in %s\n", name->cStr(), signature->name()->cStr(), J3Layout::name()->cStr());
+	//fprintf(stderr, " --- lookup %s%s in %s\n", name->cStr(), signature->name()->cStr(), J3Layout::name()->cStr());
 
 	for(size_t i=0; i<nbMethods(); i++) {
 		J3Method* cur = methods()[i];
 
 		//fprintf(stderr, "%s::%s%s\n", cur->cl()->name()->cStr(), cur->name()->cStr(), cur->signature()->name()->cStr());
 
-		if(cur->name() == name && cur->signature() == signature) {
+		if(cur->name() == name && cur->signature()->name() == signature->name()) {
 			return cur;
 		}
 	}





More information about the vmkit-commits mailing list