[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