[vmkit-commits] [vmkit] r198499 - Eagerly resolve methods in methodAt

Gael Thomas gael.thomas at lip6.fr
Sat Jan 4 07:39:28 PST 2014


Author: gthomas
Date: Sat Jan  4 09:39:28 2014
New Revision: 198499

URL: http://llvm.org/viewvc/llvm-project?rev=198499&view=rev
Log:
Eagerly resolve methods in methodAt

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

Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc?rev=198499&r1=198498&r2=198499&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Sat Jan  4 09:39:28 2014
@@ -27,25 +27,15 @@ void J3Lib::bootstrap(J3* vm) {
 #define z_signature(id) vm->initialClassLoader->getSignature(0, vm->names()->get(id))
 
 	J3Class*  threadGroupClass = vm->initialClassLoader->loadClass(vm->names()->get("java/lang/ThreadGroup"));
-	J3Method* sysThreadGroupInit = vm->initialClassLoader->method(0, 
-																																threadGroupClass, 
-																																vm->initName, 
-																																z_signature("()V"));
+	J3Method* sysThreadGroupInit = threadGroupClass->findMethod(0, vm->initName, z_signature("()V"));
 	J3ObjectHandle* sysThreadGroup = J3ObjectHandle::doNewObject(threadGroupClass);
 	sysThreadGroupInit->invokeSpecial(sysThreadGroup);
 
-
-	J3Method* appThreadGroupInit = vm->initialClassLoader->method(0, 
-																																threadGroupClass,
-																																vm->initName, 
-																																z_signature("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
+	J3Method* appThreadGroupInit = threadGroupClass->findMethod(0, vm->initName, z_signature("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
 	J3ObjectHandle* appThreadGroup = J3ObjectHandle::doNewObject(threadGroupClass);
 	appThreadGroupInit->invokeSpecial(appThreadGroup, sysThreadGroup, vm->utfToString("main"));
 
-	J3Method* threadInit = vm->initialClassLoader->method(0,
-																												vm->threadClass,
-																												vm->initName,
-																												z_signature("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
+	J3Method* threadInit = vm->threadClass->findMethod(0, vm->initName, z_signature("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
 	J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(vm->threadClass);
 
 	J3Thread::get()->assocJavaThread(mainThread);
@@ -53,10 +43,10 @@ void J3Lib::bootstrap(J3* vm) {
 
 	threadInit->invokeSpecial(mainThread, appThreadGroup, vm->utfToString("main"));
 						
-	vm->initialClassLoader->method(J3Cst::ACC_STATIC, 
-																 vm->initialClassLoader->loadClass(vm->names()->get("java/lang/System")), 
-																 vm->names()->get("initializeSystemClass"), 
-																 z_signature("()V"))->invokeStatic();
+	vm->initialClassLoader
+		->loadClass(vm->names()->get("java/lang/System"))
+		->findMethod(J3Cst::ACC_STATIC, vm->names()->get("initializeSystemClass"), z_signature("()V"))
+		->invokeStatic();
 
 	J3Thread::get()->restore(prev);
 }

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=198499&r1=198498&r2=198499&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Sat Jan  4 09:39:28 2014
@@ -99,7 +99,7 @@ void J3::run() {
 	clinitSign = initialClassLoader->getSignature(0, clinitSignName);
 
 #define z_class(clName)                      initialClassLoader->loadClass(names()->get(clName))
-#define z_method(access, cl, name, signature)     initialClassLoader->method(access, cl, name, initialClassLoader->getSignature(cl, signature))
+#define z_method(access, cl, name, signature) cl->findMethod(access, name, initialClassLoader->getSignature(cl, signature))
 #define z_field(access, cl, name, type)      cl->findField(access, names()->get(name), type)
 
 

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=198499&r1=198498&r2=198499&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sat Jan  4 09:39:28 2014
@@ -712,7 +712,7 @@ J3Method* J3Class::interfaceOrMethodAt(u
 	if(!signature)
 		ctpResolved[idx] = signature = loader()->getSignature(this, nameAt(ctpValues[ntIdx] & 0xffff));
 
-	res = loader()->method(access, cl, name, signature);
+	res = cl->findMethod(access, name, signature);
 
 	ctpResolved[idx] = res;
 





More information about the vmkit-commits mailing list