[vmkit-commits] [vmkit] r198317 - Allow a J3Method to belong to a J3ArrayClass

Gael Thomas gael.thomas at lip6.fr
Thu Jan 2 08:57:12 PST 2014


Author: gthomas
Date: Thu Jan  2 10:57:12 2014
New Revision: 198317

URL: http://llvm.org/viewvc/llvm-project?rev=198317&view=rev
Log:
Allow a J3Method to belong to a J3ArrayClass

Modified:
    vmkit/branches/mcjit/include/j3/j3.h
    vmkit/branches/mcjit/include/j3/j3classloader.h
    vmkit/branches/mcjit/include/j3/j3constants.h
    vmkit/branches/mcjit/include/j3/j3mangler.h
    vmkit/branches/mcjit/include/j3/j3method.h
    vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
    vmkit/branches/mcjit/lib/j3/vm/j3.cc
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc
    vmkit/branches/mcjit/lib/j3/vm/j3constants.cc
    vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc
    vmkit/branches/mcjit/lib/j3/vm/j3options.cc

Modified: vmkit/branches/mcjit/include/j3/j3.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3.h?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3.h (original)
+++ vmkit/branches/mcjit/include/j3/j3.h Thu Jan  2 10:57:12 2014
@@ -130,11 +130,11 @@ namespace j3 {
 
 		static void    classNotFoundException(const vmkit::Name* name) __attribute__((noreturn));
 		static void    noClassDefFoundError(const vmkit::Name* name) __attribute__((noreturn));
-		static void    classFormatError(J3Class* cl, const char* reason, ...) __attribute__((noreturn));
+		static void    classFormatError(J3ObjectType* cl, const char* reason, ...) __attribute__((noreturn));
 		static void    noSuchMethodError(const char* msg, 
-																		 J3Class* clName, const vmkit::Name* name, const vmkit::Name* sign) __attribute__((noreturn));
+																		 J3ObjectType* clName, const vmkit::Name* name, const vmkit::Name* sign) __attribute__((noreturn));
 		static void    noSuchFieldError(const char* msg, 
-																		J3Class* clName, const vmkit::Name* name, J3Type* type) __attribute__((noreturn));
+																		J3ObjectType* clName, const vmkit::Name* name, J3Type* type) __attribute__((noreturn));
 		static void    linkageError(J3Method* method) __attribute__((noreturn));
 
 		static void    nullPointerException() __attribute__((noreturn));

Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Thu Jan  2 10:57:12 2014
@@ -21,6 +21,7 @@ namespace j3 {
 	class J3Method;
 	class J3Type;
 	class J3;
+	class J3ObjectType;
 	class J3Class;
 
 	class J3ClassLoader : public vmkit::CompilationUnit {
@@ -59,8 +60,8 @@ namespace j3 {
 		pthread_mutex_t                      _mutexMethods;
 		MethodRefMap                         methods;      /* all te known method */
 
-		void                          wrongType(J3Class* from, const vmkit::Name* type);
-		J3Type*                       getTypeInternal(J3Class* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
+		void                          wrongType(J3ObjectType* from, const vmkit::Name* type);
+		J3Type*                       getTypeInternal(J3ObjectType* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
 
 	protected:
 		std::vector<void*, vmkit::StdAllocator<void*> > nativeLibraries;
@@ -76,17 +77,15 @@ namespace j3 {
 
 		J3*                           vm() const { return (J3*)vmkit::CompilationUnit::vm(); };
 
-		J3Method*                     method(uint16_t access, J3Class* cl, 
+		J3Method*                     method(uint16_t access, J3ObjectType* cl, 
 																				 const vmkit::Name* name, const vmkit::Name* sign);
-		J3Method*                     method(uint16_t access, const vmkit::Name* clName, 
-																				 const vmkit::Name* name, const vmkit::Name* sign); 
 
 		J3Class*                      defineClass(const vmkit::Name* name, J3ClassBytes* bytes);
 		J3Class*                      findLoadedClass(const vmkit::Name* name);
 		virtual J3Class*              loadClass(const vmkit::Name* name);
 
 		J3Type*                       getType(J3Class* from, const vmkit::Name* type);       /* find a type */
-		J3MethodType*                 getMethodType(J3Class* from, const vmkit::Name* sign); /* get a method type */
+		J3MethodType*                 getMethodType(J3ObjectType* from, const vmkit::Name* sign); /* get a method type */
 
 		void*                         lookupNativeFunctionPointer(J3Method* method, const char* symb);
 	};

Modified: vmkit/branches/mcjit/include/j3/j3constants.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3constants.h?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3constants.h (original)
+++ vmkit/branches/mcjit/include/j3/j3constants.h Thu Jan  2 10:57:12 2014
@@ -107,7 +107,7 @@ namespace j3 {
 			return ((value - 1) & (-bound)) + bound;
 		}
 
-		static const vmkit::Name* rewrite(J3* vm, const vmkit::Name* clName, const vmkit::Name* orig);
+		static const vmkit::Name* rewrite(J3ObjectType* cl, const vmkit::Name* orig);
 
 #define defOpcode(ID, val, effect)											\
 		static const uint8_t BC_##ID = val;

Modified: vmkit/branches/mcjit/include/j3/j3mangler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3mangler.h?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3mangler.h (original)
+++ vmkit/branches/mcjit/include/j3/j3mangler.h Thu Jan  2 10:57:12 2014
@@ -8,24 +8,24 @@ namespace vmkit {
 }
 
 namespace j3 {
-	class J3Class;
+	class J3ObjectType;
 	class J3Method;
 
 	class J3Mangler {
 		static const uint32_t max = 65536;
 
-		J3Class* from;
-		char     buf[max];
-		char*    cur;
-		char*    next;
+		J3ObjectType* from;
+		char          buf[max];
+		char*         cur;
+		char*         next;
 
-		void     check(uint32_t n);
+		void          check(uint32_t n);
 
 	public:
 		static const char*    j3Id;
 		static const char*    javaId;
 
-		J3Mangler(J3Class* from);
+		J3Mangler(J3ObjectType* from);
 
 		char*    cStr() { return buf; }
 		uint32_t length() { return cur - buf; }

Modified: vmkit/branches/mcjit/include/j3/j3method.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3method.h?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3method.h (original)
+++ vmkit/branches/mcjit/include/j3/j3method.h Thu Jan  2 10:57:12 2014
@@ -19,6 +19,7 @@ namespace j3 {
 	class J3LLVMSignature;
 	class J3Type;
 	class J3Attributes;
+	class J3ObjectType;
 	class J3Class;
 	class J3Method;
 	class J3Value;
@@ -57,7 +58,7 @@ namespace j3 {
 	public:
 		J3MethodCode                 _selfCode;
 		uint16_t                     _access;
-		J3Class*                     _cl;
+		J3ObjectType*                _cl;
 		const vmkit::Name*           _name;
 		const vmkit::Name*           _sign;
 		J3MethodType*                _methodType;
@@ -75,9 +76,9 @@ namespace j3 {
 		J3Value            internalInvoke(bool statically, J3ObjectHandle* handle, va_list va);
 		J3Value            internalInvoke(bool statically, J3ObjectHandle* handle, J3Value* args);
 		J3Value            internalInvoke(bool statically, J3Value* args);
-		void               buildLLVMNames(J3Class* from);
+		void               buildLLVMNames(J3ObjectType* from);
 	public:
-		J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign);
+		J3Method(uint16_t access, J3ObjectType* cl, const vmkit::Name* name, const vmkit::Name* sign);
 
 		uint32_t            slot() { return _slot; }
 
@@ -107,10 +108,10 @@ namespace j3 {
 
 		J3Attributes*       attributes() const { return _attributes; }
 		uint16_t            access() const { return _access; }
-		J3Class*            cl()     const { return _cl; }
+		J3ObjectType*       cl()     const { return _cl; }
 		const vmkit::Name*  name()   const { return _name; }
 		const vmkit::Name*  sign()   const { return _sign; }
-		J3MethodType*       methodType(J3Class* from=0);
+		J3MethodType*       methodType(J3ObjectType* from=0);
 
 		void                registerNative(void* ptr);
 

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=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Thu Jan  2 10:57:12 2014
@@ -23,35 +23,35 @@ static const char* rtjar = OPENJDK_HOME"
 
 void J3Lib::bootstrap(J3* vm) {
 	J3ObjectHandle* prev = J3Thread::get()->tell();
-	J3Class* threadGroupClass = vm->initialClassLoader->loadClass(vm->names()->get("java/lang/ThreadGroup"));
-	J3Method*       sysThreadGroupInit = vm->initialClassLoader->method(0, 
-																																			threadGroupClass, 
-																																			vm->initName, 
-																																			vm->names()->get("()V"));
-	J3ObjectHandle* sysThreadGroup = J3ObjectHandle::doNewObject(sysThreadGroupInit->cl());
+	J3Class*  threadGroupClass = vm->initialClassLoader->loadClass(vm->names()->get("java/lang/ThreadGroup"));
+	J3Method* sysThreadGroupInit = vm->initialClassLoader->method(0, 
+																																threadGroupClass, 
+																																vm->initName, 
+																																vm->names()->get("()V"));
+	J3ObjectHandle* sysThreadGroup = J3ObjectHandle::doNewObject(threadGroupClass);
 	sysThreadGroupInit->invokeSpecial(sysThreadGroup);
 
 
-	J3Method*       appThreadGroupInit = vm->initialClassLoader->method(0, 
-																																			threadGroupClass,
-																																			vm->initName, 
-																																			vm->names()->get("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
-	J3ObjectHandle* appThreadGroup = J3ObjectHandle::doNewObject(appThreadGroupInit->cl());
+	J3Method* appThreadGroupInit = vm->initialClassLoader->method(0, 
+																																threadGroupClass,
+																																vm->initName, 
+																																vm->names()->get("(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,
-																															vm->names()->get("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
-	J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(threadInit->cl());
+	J3Method* threadInit = vm->initialClassLoader->method(0,
+																												vm->threadClass,
+																												vm->initName,
+																												vm->names()->get("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
+	J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(vm->threadClass);
 
 	J3Thread::get()->assocJavaThread(mainThread);
-	mainThread->setInteger(threadInit->cl()->findVirtualField(vm->names()->get("priority"), vm->typeInteger), 5);
+	mainThread->setInteger(vm->threadClass->findVirtualField(vm->names()->get("priority"), vm->typeInteger), 5);
 
 	threadInit->invokeSpecial(mainThread, appThreadGroup, vm->utfToString("main"));
 						
 	vm->initialClassLoader->method(J3Cst::ACC_STATIC, 
-																 vm->names()->get("java/lang/System"), 
+																 vm->initialClassLoader->loadClass(vm->names()->get("java/lang/System")), 
 																 vm->names()->get("initializeSystemClass"), 
 																 vm->names()->get("()V"))->invokeStatic();
 

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=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Thu Jan  2 10:57:12 2014
@@ -204,15 +204,15 @@ void J3::noClassDefFoundError(const vmki
 	internalError("NoClassDefFoundError: %s", name);
 }
 
-void J3::noSuchMethodError(const char* msg, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign) {
+void J3::noSuchMethodError(const char* msg, J3ObjectType* cl, const vmkit::Name* name, const vmkit::Name* sign) {
 	internalError("%s: %s::%s %s", msg, cl->name()->cStr(), name->cStr(), sign->cStr());
 }
 
-void J3::noSuchFieldError(const char* msg, J3Class* cl, const vmkit::Name* name, J3Type* type) {
+void J3::noSuchFieldError(const char* msg, J3ObjectType* cl, const vmkit::Name* name, J3Type* type) {
 	internalError("%s: %s::%s %s", msg, cl->name()->cStr(), name->cStr(), type->name()->cStr());
 }
 
-void J3::classFormatError(J3Class* cl, const char* reason, ...) {
+void J3::classFormatError(J3ObjectType* cl, const char* reason, ...) {
 	char buf[65536];
 	va_list va;
 	va_start(va, reason);

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=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Thu Jan  2 10:57:12 2014
@@ -730,7 +730,7 @@ J3Method* J3Class::interfaceOrMethodAt(u
 	}
 
 	uint16_t ntIdx = ctpValues[idx] & 0xffff;
-	J3Class* cl = classAt(ctpValues[idx] >> 16)->asClass();
+	J3ObjectType* cl = classAt(ctpValues[idx] >> 16);
 
 	check(ntIdx, J3Cst::CONSTANT_NameAndType);
 	const vmkit::Name* name = nameAt(ctpValues[ntIdx] >> 16);

Modified: vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Thu Jan  2 10:57:12 2014
@@ -87,11 +87,11 @@ J3Class* J3ClassLoader::loadClass(const
 	J3::internalError("implement me: loadClass from a Java class loader");
 }
 
-void J3ClassLoader::wrongType(J3Class* from, const vmkit::Name* type) {
+void J3ClassLoader::wrongType(J3ObjectType* from, const vmkit::Name* type) {
 	J3::classFormatError(from, "wrong type: %s", type->cStr());
 }
 
-J3Type* J3ClassLoader::getTypeInternal(J3Class* from, const vmkit::Name* typeName, uint32_t start, uint32_t* pend) {
+J3Type* J3ClassLoader::getTypeInternal(J3ObjectType* from, const vmkit::Name* typeName, uint32_t start, uint32_t* pend) {
 	J3Type*        res  = 0;
 	const char*    type = typeName->cStr();
 	uint32_t       len  = typeName->length();
@@ -168,7 +168,7 @@ J3Type* J3ClassLoader::getType(J3Class*
 	return res;
 }
 
-J3MethodType* J3ClassLoader::getMethodType(J3Class* from, const vmkit::Name* sign) {
+J3MethodType* J3ClassLoader::getMethodType(J3ObjectType* from, const vmkit::Name* sign) {
 	pthread_mutex_lock(&_mutexMethodTypes);
 	J3MethodType* res = methodTypes[sign];
 	pthread_mutex_unlock(&_mutexMethodTypes);
@@ -200,7 +200,7 @@ J3MethodType* J3ClassLoader::getMethodTy
 	return res;
 }
 
-J3Method* J3ClassLoader::method(uint16_t access, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign) {
+J3Method* J3ClassLoader::method(uint16_t access, J3ObjectType* cl, const vmkit::Name* name, const vmkit::Name* sign) {
 	J3Method method(access, cl, name, sign), *res;
 
 	pthread_mutex_lock(&_mutexMethods);
@@ -217,10 +217,6 @@ J3Method* J3ClassLoader::method(uint16_t
 	return res;
 }
 
-J3Method* J3ClassLoader::method(uint16_t access, const vmkit::Name* clName, const vmkit::Name* name, const vmkit::Name* sign) {
-	return method(access, loadClass(clName), name, sign);
-}
-
 bool J3ClassLoader::J3InterfaceMethodLess::operator()(j3::J3Method const* lhs, j3::J3Method const* rhs) const {
 	return lhs->name() < rhs->name()
 		|| (lhs->name() == rhs->name()

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Thu Jan  2 10:57:12 2014
@@ -34,7 +34,7 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 	allocator = _allocator;
 
 	method = m;
-	cl = method->cl();
+	cl = method->cl()->asClass();
 	methodType = method->methodType();
 	loader = cl->loader();
 	vm = loader->vm();

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegenvar.cc Thu Jan  2 10:57:12 2014
@@ -1,5 +1,6 @@
 #include "j3/j3codegenvar.h"
 #include "j3/j3codegen.h"
+#include "j3/j3class.h"
 #include "j3/j3.h"
 #include "j3/j3classloader.h"
 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3constants.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3constants.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3constants.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3constants.cc Thu Jan  2 10:57:12 2014
@@ -10,17 +10,26 @@ using namespace j3;
 
 char    J3Cst::nativePrefix[] = "Java_";
 
-const vmkit::Name* J3Cst::rewrite(J3* vm, const vmkit::Name* clName, const vmkit::Name* orig) {
+const vmkit::Name* J3Cst::rewrite(J3ObjectType* cl, const vmkit::Name* orig) {
+	const vmkit::Name* clName = cl->name();
 	char res[clName->length() + orig->length() + 3];
+	uint32_t d;
 
 	res[0] = ID_Left;
-	res[1] = ID_Classname;
-	memcpy(res+2, clName->cStr(), sizeof(char)*clName->length());
-	res[2 + clName->length()] = ID_End;
-	memcpy(res+3+clName->length(), orig->cStr()+1, sizeof(char)*(orig->length()-1));
-	res[2 + clName->length() + orig->length()] = 0;
+	if(cl->isClass()) {
+		res[1] = ID_Classname;
+		memcpy(res+2, clName->cStr(), sizeof(char)*clName->length());
+		res[2 + clName->length()] = ID_End;
+		d = 2;
+	} else {
+		memcpy(res+1, clName->cStr(), sizeof(char)*clName->length());
+		d = 0;
+	}
 
-	return vm->names()->get(res);
+	memcpy(res+1+d+clName->length(), orig->cStr()+1, sizeof(char)*(orig->length()-1));
+	res[d + clName->length() + orig->length()] = 0;
+
+	return cl->loader()->vm()->names()->get(res);
 }
 
 #define defOpcode(ID, val, effect)											\

Modified: vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc Thu Jan  2 10:57:12 2014
@@ -11,7 +11,7 @@ const char*    J3Mangler::j3Id = "j3_";
 const char*    J3Mangler::javaId = "Java_";
 
 
-J3Mangler::J3Mangler(J3Class* _from) {
+J3Mangler::J3Mangler(J3ObjectType* _from) {
 	from = _from;
 	cur  = buf;
 }

Modified: vmkit/branches/mcjit/lib/j3/vm/j3method.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3method.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Thu Jan  2 10:57:12 2014
@@ -29,7 +29,7 @@ J3MethodType::J3MethodType(J3Type** args
 			
 }
 
-J3Method::J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign) :
+J3Method::J3Method(uint16_t access, J3ObjectType* cl, const vmkit::Name* name, const vmkit::Name* sign) :
 	_selfCode(this) {
 	_access = access;
 	_cl = cl;
@@ -225,13 +225,13 @@ J3Value J3Method::invokeVirtual(J3Object
 	return res;
 }
 
-J3MethodType* J3Method::methodType(J3Class* from) {
+J3MethodType* J3Method::methodType(J3ObjectType* from) {
 	if(!_methodType) {
 		const vmkit::Name* realSign = sign();
 		J3ClassLoader*     loader = cl()->loader();
 
 		if(!J3Cst::isStatic(access()))
-			realSign = J3Cst::rewrite(loader->vm(), cl()->name(), sign());
+			realSign = J3Cst::rewrite(cl(), sign());
 
 		_methodType = loader->getMethodType(from ? from : cl(), realSign);
 	}
@@ -239,7 +239,7 @@ J3MethodType* J3Method::methodType(J3Cla
 	return _methodType;
 }
 
-void J3Method::buildLLVMNames(J3Class* from) {
+void J3Method::buildLLVMNames(J3ObjectType* from) {
 	const char* prefix = "stub_";
 	uint32_t plen = 5;
 	J3Mangler mangler(from);
@@ -304,8 +304,8 @@ J3ObjectHandle* J3Method::javaMethod() {
 			else
 				exceptions = J3ObjectHandle::doNewArray(vm->classClass->getArray(), 0);
 
-			J3ObjectHandle* annotations = cl()->extractAttribute(attributes()->lookup(vm->annotationsAttribute));
-			J3ObjectHandle* paramAnnotations = cl()->extractAttribute(attributes()->lookup(vm->paramAnnotationsAttribute));
+			J3ObjectHandle* annotations = cl()->asClass()->extractAttribute(attributes()->lookup(vm->annotationsAttribute));
+			J3ObjectHandle* paramAnnotations = cl()->asClass()->extractAttribute(attributes()->lookup(vm->paramAnnotationsAttribute));
 
 			if(name() == cl()->loader()->vm()->initName) {
 				_javaMethod = cl()->loader()->globalReferences()->add(J3ObjectHandle::doNewObject(vm->constructorClass));

Modified: vmkit/branches/mcjit/lib/j3/vm/j3options.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3options.cc?rev=198317&r1=198316&r2=198317&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3options.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3options.cc Thu Jan  2 10:57:12 2014
@@ -15,11 +15,11 @@ J3Options::J3Options() {
 
 	debugEnterIndent = 1;
 
-	debugExecute = 0;
+	debugExecute = 2;
 	debugLoad = 0;
 	debugResolve = 0;
 	debugIniting = 0;
-	debugTranslate = 0;
+	debugTranslate = 2;
 	debugLinking = 0;
 
 	genDebugExecute = debugExecute ? 1 : 0;





More information about the vmkit-commits mailing list