[vmkit-commits] [vmkit] r198408 - Move the vmkit::Name* identifying a method signature from a J3Method into a J3Signature. Rename J3MethodType into J3Signature.

Gael Thomas gael.thomas at lip6.fr
Fri Jan 3 04:04:33 PST 2014


Author: gthomas
Date: Fri Jan  3 06:04:33 2014
New Revision: 198408

URL: http://llvm.org/viewvc/llvm-project?rev=198408&view=rev
Log:
Move the vmkit::Name* identifying a method signature from a J3Method into a J3Signature. Rename J3MethodType into J3Signature.


Modified:
    vmkit/branches/mcjit/include/j3/j3.h
    vmkit/branches/mcjit/include/j3/j3class.h
    vmkit/branches/mcjit/include/j3/j3classloader.h
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/include/j3/j3constants.h
    vmkit/branches/mcjit/include/j3/j3method.h
    vmkit/branches/mcjit/include/j3/j3signature.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/j3codegenexception.cc
    vmkit/branches/mcjit/lib/j3/vm/j3jni.cc
    vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc
    vmkit/branches/mcjit/lib/j3/vm/j3method.cc
    vmkit/branches/mcjit/lib/j3/vm/j3object.cc
    vmkit/branches/mcjit/lib/j3/vm/j3signature.cc
    vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc

Modified: vmkit/branches/mcjit/include/j3/j3.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3.h (original)
+++ vmkit/branches/mcjit/include/j3/j3.h Fri Jan  3 06:04:33 2014
@@ -25,6 +25,7 @@ namespace j3 {
 	class J3Primitive;
 	class J3Lib;
 	class J3Method;
+	class J3Signature;
 
 	class J3 : public vmkit::VMKit {
 		typedef std::map<J3ObjectHandle*, J3ObjectHandle*, vmkit::T_ptr_less_t<J3ObjectHandle*>, 
@@ -55,6 +56,7 @@ namespace j3 {
 	  const vmkit::Name* name;
 	  onJavaConstantNames(defJavaConstantName)
 #undef defJavaConstantName
+		J3Signature*       clinitSign;
 
 #define defPrimitive(name, ctype, llvmtype, scale)	\
 		J3Primitive* type##name;
@@ -132,7 +134,7 @@ namespace j3 {
 		static void    noClassDefFoundError(const vmkit::Name* name) __attribute__((noreturn));
 		static void    classFormatError(J3ObjectType* cl, const char* reason, ...) __attribute__((noreturn));
 		static void    noSuchMethodError(const char* msg, 
-																		 J3ObjectType* clName, const vmkit::Name* name, const vmkit::Name* sign) __attribute__((noreturn));
+																		 J3ObjectType* clName, const vmkit::Name* name, J3Signature* sign) __attribute__((noreturn));
 		static void    noSuchFieldError(const char* msg, 
 																		J3ObjectType* clName, const vmkit::Name* name, J3Type* type) __attribute__((noreturn));
 		static void    linkageError(J3Method* method) __attribute__((noreturn));

Modified: vmkit/branches/mcjit/include/j3/j3class.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3class.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3class.h (original)
+++ vmkit/branches/mcjit/include/j3/j3class.h Fri Jan  3 06:04:33 2014
@@ -31,6 +31,7 @@ namespace j3 {
 	class J3Field;
 	class J3Attributes;
 	class J3Attribute;
+	class J3Signature;
 
 	class J3InterfaceSlotDescriptor {
 	public:
@@ -124,8 +125,8 @@ namespace j3 {
 		J3InterfaceSlotDescriptor* slotDescriptorAt(uint32_t index) { return &_interfaceSlotDescriptors[index]; }
 		void                       prepareInterfaceTable();
 
-		virtual J3Method*          findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
-		virtual J3Method*          findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
+		virtual J3Method*          findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
+		virtual J3Method*          findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
 
 		bool                       isObjectType() { return 1; }
 
@@ -163,7 +164,7 @@ namespace j3 {
 		size_t            nbPublicMethods() { return _nbPublicMethods; }
 		J3Method**        methods() { return _methods; }
 
-		J3Method*         findMethod(const vmkit::Name* name, const vmkit::Name* sign);
+		J3Method*         findMethod(const vmkit::Name* name, J3Signature* sign);
 		J3Field*          findField(const vmkit::Name* name, const J3Type* type);
 
 		virtual J3ObjectHandle* extractAttribute(J3Attribute* attr) = 0;
@@ -255,8 +256,8 @@ namespace j3 {
 
 		bool                isClass() { return 1; }
 
-		J3Method*           findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
-		J3Method*           findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
+		J3Method*           findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
+		J3Method*           findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
 
 		J3Field*            findVirtualField(const vmkit::Name* name, J3Type* type, bool error=1);
 		J3Field*            findStaticField(const vmkit::Name* name, J3Type* type, bool error=1);
@@ -277,8 +278,8 @@ namespace j3 {
 		J3Type*             component() { return _component; }
 		bool                isArrayClass() { return 1; }
 
-		J3Method*           findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
-		J3Method*           findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error=1);
+		J3Method*           findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
+		J3Method*           findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error=1);
 	};
 
 	class J3Primitive : public J3Type {

Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Fri Jan  3 06:04:33 2014
@@ -17,7 +17,7 @@ namespace vmkit {
 namespace j3 {
 	class J3ZipArchive;
 	class J3ClassBytes;
-	class J3MethodType;
+	class J3Signature;
 	class J3Method;
 	class J3Type;
 	class J3;
@@ -58,7 +58,7 @@ namespace j3 {
 		MethodRefMap                         methods;      /* all te known method */
 
 		pthread_mutex_t                      _mutexMethodTypes;
-		vmkit::NameMap<J3MethodType*>::map   methodTypes;
+		vmkit::NameMap<J3Signature*>::map   methodTypes;
 
 	protected:
 		std::vector<void*, vmkit::StdAllocator<void*> > nativeLibraries;
@@ -66,10 +66,10 @@ namespace j3 {
 	public:
 		J3ClassLoader(J3* vm, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
 
-		J3Type*                       getTypeInternal(J3Class* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
-		J3Type*                       getType(J3Class* from, const vmkit::Name* type);       /* find a type */
-		J3MethodType*                 getMethodType(J3Class* from, const vmkit::Name* sign); /* get a method type */
-		void                          wrongType(J3Class* from, const vmkit::Name* type);
+		J3Type*                       getTypeInternal(J3ObjectType* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
+		J3Type*                       getType(J3ObjectType* from, const vmkit::Name* type);       /* find a type */
+		J3Signature*                  getSignature(J3ObjectType* from, const vmkit::Name* sign); /* get a method type */
+		void                          wrongType(J3ObjectType* from, const vmkit::Name* type);
 
 		uint32_t                      interfaceIndex(J3Method* sign);
 
@@ -80,7 +80,7 @@ namespace j3 {
 		J3*                           vm() const { return (J3*)vmkit::CompilationUnit::vm(); };
 
 		J3Method*                     method(uint16_t access, J3ObjectType* cl, 
-																				 const vmkit::Name* name, const vmkit::Name* sign);
+																				 const vmkit::Name* name, J3Signature* sign);
 
 		J3Class*                      defineClass(const vmkit::Name* name, J3ClassBytes* bytes);
 		J3Class*                      findLoadedClass(const vmkit::Name* name);

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Fri Jan  3 06:04:33 2014
@@ -22,9 +22,10 @@ namespace j3 {
 	class J3ClassLoader;
 	class J3Field;
 	class J3Method;
-	class J3MethodType;
+	class J3Signature;
 	class J3Reader;
 	class J3ObjectType;
+	class J3Signature;
 
 	class J3OpInfo {
 	public:
@@ -50,7 +51,7 @@ namespace j3 {
 		J3Class*               cl;
 		J3ClassLoader*         loader;
 		J3Method*              method;
-		J3MethodType*          methodType;
+		J3Signature*           signature;
 		J3Reader*              codeReader;
 
 		llvm::BasicBlock*      bbCheckCastFailed;

Modified: vmkit/branches/mcjit/include/j3/j3constants.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3constants.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3constants.h (original)
+++ vmkit/branches/mcjit/include/j3/j3constants.h Fri Jan  3 06:04:33 2014
@@ -25,7 +25,7 @@ namespace j3 {
 
 #define onJavaConstantNames(_)																					\
 		_(clinitName,                 "<clinit>")														\
-		_(clinitSign,                 "()V")																\
+		_(clinitSignName,             "()V")																\
 		_(initName,                   "<init>")															\
 																																				\
 		_(codeAttribute,              "Code")																\

Modified: vmkit/branches/mcjit/include/j3/j3method.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3method.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3method.h (original)
+++ vmkit/branches/mcjit/include/j3/j3method.h Fri Jan  3 06:04:33 2014
@@ -24,7 +24,7 @@ namespace j3 {
 	class J3Method;
 	class J3Value;
 	class J3ObjectHandle;
-	class J3MethodType;
+	class J3Signature;
 
 	class J3MethodCode : public vmkit::Symbol {
 	public:
@@ -41,8 +41,7 @@ namespace j3 {
 		uint16_t                     _access;
 		J3Class*                     _cl;
 		const vmkit::Name*           _name;
-		const vmkit::Name*           _sign;
-		J3MethodType*                _methodType;
+		J3Signature*                 _signature;
 		J3Attributes*                _attributes;
 		uint32_t                     _index;
 		uint32_t                     _slot;
@@ -59,7 +58,7 @@ namespace j3 {
 		J3Value            internalInvoke(bool statically, J3Value* args);
 		void               buildLLVMNames(J3Class* from);
 	public:
-		J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign);
+		J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, J3Signature* signature);
 
 		uint32_t            slot() { return _slot; }
 
@@ -91,8 +90,7 @@ namespace j3 {
 		uint16_t            access() const { return _access; }
 		J3Class*            cl()     const { return _cl; }
 		const vmkit::Name*  name()   const { return _name; }
-		const vmkit::Name*  sign()   const { return _sign; }
-		J3MethodType*       methodType(J3Class* from=0);
+		J3Signature*        signature() const { return _signature; }
 
 		void                registerNative(void* ptr);
 

Modified: vmkit/branches/mcjit/include/j3/j3signature.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3signature.h?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3signature.h (original)
+++ vmkit/branches/mcjit/include/j3/j3signature.h Fri Jan  3 06:04:33 2014
@@ -3,18 +3,25 @@
 
 #include "vmkit/allocator.h"
 
+namespace vmkit {
+	class Name;
+}
+
 namespace llvm {
 	class FunctionType;
 	class Module;
 }
 
 namespace j3 {
+	class J3ClassLoader;
 	class J3LLVMSignature;
 	class J3Type;
 	class J3Value;
 	class J3CodeGen;
 
-	class J3MethodType : public vmkit::PermanentObject {
+	class J3Signature : public vmkit::PermanentObject {
+		J3ClassLoader*               _loader;
+		const vmkit::Name*           _name;
 		J3LLVMSignature*             _staticLLVMSignature;
 		J3LLVMSignature*             _virtualLLVMSignature;
 		J3Type*                      _out;
@@ -22,8 +29,10 @@ namespace j3 {
 		J3Type*                      _ins[1];
 
 	public:
-		J3MethodType(J3Type** args, size_t nbArgs);
+		J3Signature(J3ClassLoader* loader, const vmkit::Name* name, J3Type** args, size_t nbArgs);
 
+		const vmkit::Name*  name() { return _name; }
+		J3ClassLoader*      loader() { return _loader; }
 		void                setLLVMSignature(uint32_t access, J3LLVMSignature* llvmSignature);
 		J3LLVMSignature*    llvmSignature(uint32_t access);
 		J3Type*             out() { return _out; }
@@ -31,8 +40,9 @@ namespace j3 {
 		J3Type*             ins(uint32_t idx) { return _ins[idx]; }
 
 		void* operator new(size_t unused, vmkit::BumpAllocator* allocator, size_t n) {
-			return vmkit::PermanentObject::operator new(sizeof(J3MethodType) + (n - 1) * sizeof(J3Type*), allocator);
+			return vmkit::PermanentObject::operator new(sizeof(J3Signature) + (n - 1) * sizeof(J3Type*), allocator);
 		}
+
 	};
 
 	class J3LLVMSignature : vmkit::PermanentObject {

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Fri Jan  3 06:04:33 2014
@@ -23,11 +23,14 @@ static const char* rtjar = OPENJDK_HOME"
 
 void J3Lib::bootstrap(J3* vm) {
 	J3ObjectHandle* prev = J3Thread::get()->tell();
+
+#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, 
-																																vm->names()->get("()V"));
+																																z_signature("()V"));
 	J3ObjectHandle* sysThreadGroup = J3ObjectHandle::doNewObject(threadGroupClass);
 	sysThreadGroupInit->invokeSpecial(sysThreadGroup);
 
@@ -35,14 +38,14 @@ void J3Lib::bootstrap(J3* vm) {
 	J3Method* appThreadGroupInit = vm->initialClassLoader->method(0, 
 																																threadGroupClass,
 																																vm->initName, 
-																																vm->names()->get("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
+																																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,
-																												vm->names()->get("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
+																												z_signature("(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
 	J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(vm->threadClass);
 
 	J3Thread::get()->assocJavaThread(mainThread);
@@ -53,7 +56,7 @@ void J3Lib::bootstrap(J3* vm) {
 	vm->initialClassLoader->method(J3Cst::ACC_STATIC, 
 																 vm->initialClassLoader->loadClass(vm->names()->get("java/lang/System")), 
 																 vm->names()->get("initializeSystemClass"), 
-																 vm->names()->get("()V"))->invokeStatic();
+																 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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Fri Jan  3 06:04:33 2014
@@ -32,11 +32,6 @@ J3::J3(vmkit::BumpAllocator* allocator)
 	monitorManager(allocator),
 	llvmSignatures(llvmFunctionTypeLess, allocator) {
 
-#define defJavaConstantName(name, id) \
-	name = names()->get(id);
-	onJavaConstantNames(defJavaConstantName)
-#undef defJavaConstantName
-
 	pthread_mutex_init(&stringsMutex, 0);
 	interfaceTrampoline = J3Trampoline::buildInterfaceTrampoline(allocator);
 }
@@ -82,6 +77,11 @@ void J3::start(int argc, char** argv) {
 }
 
 void J3::run() {
+#define defJavaConstantName(name, id) \
+	name = names()->get(id);
+	onJavaConstantNames(defJavaConstantName)
+#undef defJavaConstantName
+
 	introspect();
 
 	vmkit::BumpAllocator* loaderAllocator = vmkit::BumpAllocator::create();
@@ -96,8 +96,10 @@ void J3::run() {
 	onJavaTypes(defPrimitive)
 #undef defPrimitive
 
+	clinitSign = initialClassLoader->getSignature(0, clinitSignName);
+
 #define z_class(clName)                      initialClassLoader->loadClass(names()->get(clName))
-#define z_method(access, cl, name, sign)     initialClassLoader->method(access, cl, name, sign)
+#define z_method(access, cl, name, sign)     initialClassLoader->method(access, cl, name, initialClassLoader->getSignature(cl, sign))
 #define z_field(access, cl, name, type)      J3Cst::isStatic(access)	\
 			? cl->findStaticField(names()->get(name), type)									\
 			: cl->findVirtualField(names()->get(name), type);
@@ -205,8 +207,8 @@ void J3::noClassDefFoundError(const vmki
 	internalError("NoClassDefFoundError: %s", name);
 }
 
-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::noSuchMethodError(const char* msg, J3ObjectType* cl, const vmkit::Name* name, J3Signature* sign) {
+	internalError("%s: %s::%s %s", msg, cl->name()->cStr(), name->cStr(), sign->name()->cStr());
 }
 
 void J3::noSuchFieldError(const char* msg, J3ObjectType* cl, const vmkit::Name* name, J3Type* type) {
@@ -223,7 +225,10 @@ void J3::classFormatError(J3ObjectType*
 }
 
 void J3::linkageError(J3Method* method) {
-	internalError("unable to find native method '%s::%s%s'", method->cl()->name()->cStr(), method->name()->cStr(), method->sign()->cStr());
+	internalError("unable to find native method '%s::%s%s'", 
+								method->cl()->name()->cStr(), 
+								method->name()->cStr(), 
+								method->signature()->name()->cStr());
 }
 
 void J3::arrayStoreException() {
@@ -255,7 +260,7 @@ void J3::printStackTrace() {
 
 		if(sf) {
 			J3Method* m = ((J3MethodCode*)sf->unit()->getSymbol(sf->functionName()))->self;
-			fprintf(stderr, "    in %s %s::%s index %d\n", m->sign()->cStr(), m->cl()->name()->cStr(), m->name()->cStr(),
+			fprintf(stderr, "    in %s %s::%s index %d\n", m->signature()->name()->cStr(), m->cl()->name()->cStr(), m->name()->cStr(),
 							sf->sourceIndex());
 		} else {
 			Dl_info info;

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Fri Jan  3 06:04:33 2014
@@ -168,11 +168,11 @@ llvm::Type* J3ObjectType::llvmType() {
 	return loader()->vm()->typeJ3ObjectPtr;
 }
 
-J3Method* J3ObjectType::findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3ObjectType::findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	J3::internalError("should not happe: %s::%s\n", J3ObjectType::name()->cStr(), name->cStr());
 }
 
-J3Method* J3ObjectType::findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3ObjectType::findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	J3::internalError("should not happen");
 }
 
@@ -202,7 +202,7 @@ void J3ObjectType::prepareInterfaceTable
 					//fprintf(stderr, "    processing %s method %s %s\n", 
 					//J3Cst::isAbstract(base->access()) ? "abstract" : "concrete",
 					//base->sign()->cStr(), base->name()->cStr());
-					J3Method* method = findVirtualMethod(base->name(), base->sign(), J3Cst::isAbstract(base->access()));
+					J3Method* method = findVirtualMethod(base->name(), base->signature(), J3Cst::isAbstract(base->access()));
 
 					if(!method)
 						method = base;
@@ -241,7 +241,7 @@ void J3ObjectType::dumpInterfaceSlotDesc
 				fprintf(stderr, "    %s::%s %s\n", 
 								slots[i].methods[j]->cl()->name()->cStr(),
 								slots[i].methods[j]->name()->cStr(),
-								slots[i].methods[j]->sign()->cStr());
+								slots[i].methods[j]->signature()->name()->cStr());
 		}
 	}
 }
@@ -264,13 +264,13 @@ uintptr_t J3Layout::structSize() {
 	return _structSize; 
 }
 
-J3Method* J3Layout::findMethod(const vmkit::Name* name, const vmkit::Name* sign) {
+J3Method* J3Layout::findMethod(const vmkit::Name* name, J3Signature* sign) {
 	for(size_t i=0; i<nbMethods(); i++) {
 		J3Method* cur = methods()[i];
 
 		//printf("%s - %s\n", cur->name()->cStr(), cur->sign()->cStr());
 		//printf("%s - %s\n", name->cStr(), sign->cStr());
-		if(cur->name() == name && cur->sign() == sign) {
+		if(cur->name() == name && cur->signature() == sign) {
 			return cur;
 		}
 	}
@@ -313,7 +313,7 @@ J3ObjectHandle* J3Class::extractAttribut
 		return J3ObjectHandle::doNewArray(loader()->vm()->typeByte->getArray(), 0);
 }
 
-J3Method* J3Class::findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3Class::findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	//loader()->vm()->log("Lookup: %s %s in %s (%d)", methName->cStr(), methSign->cStr(), name()->cStr(), nbVirtualMethods);
 	resolve();
 
@@ -335,7 +335,7 @@ J3Method* J3Class::findVirtualMethod(con
 	}
 }
 
-J3Method* J3Class::findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3Class::findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	//loader()->vm()->log("Lookup: %s %s in %s", methName->cStr(), methSign->cStr(), name()->cStr());
 	resolve();
 
@@ -390,13 +390,14 @@ J3Field* J3Class::findStaticField(const
 	return res;
 }
 
-void J3Class::registerNative(const vmkit::Name* methName, const vmkit::Name* methSign, void* fnPtr) {
+void J3Class::registerNative(const vmkit::Name* name, const vmkit::Name* signName, void* fnPtr) {
 	resolve();
-	J3Method* res = staticLayout()->findMethod(methName, methSign);
+	J3Signature* sign = loader()->getSignature(this, signName);
+	J3Method* res = staticLayout()->findMethod(name, sign);
 	if(!res)
-		res = findMethod(methName, methSign);
+		res = findMethod(name, sign);
 	if(!res || !J3Cst::isNative(res->access()))
-		J3::noSuchMethodError("unable to find native method", this, methName, methSign);
+		J3::noSuchMethodError("unable to find native method", this, name, sign);
 
 	res->registerNative(fnPtr);
 }
@@ -618,7 +619,7 @@ void J3Class::readClassBytes(J3Field* hi
 		uint16_t           access = reader.readU2();
 		const vmkit::Name* name = nameAt(reader.readU2());
 		const vmkit::Name* sign = nameAt(reader.readU2());
-		J3Method*          method = loader()->method(access, this, name, sign);
+		J3Method*          method = loader()->method(access, this, name, loader()->getSignature(this, sign));
 		J3Attributes*      attributes = readAttributes(&reader);
 		
 		method->postInitialise(access, attributes);
@@ -746,7 +747,7 @@ J3Method* J3Class::interfaceOrMethodAt(u
 	const vmkit::Name* name = nameAt(ctpValues[ntIdx] >> 16);
 	const vmkit::Name* sign = nameAt(ctpValues[ntIdx] & 0xffff);
 
-	res = loader()->method(access, cl, name, sign);
+	res = loader()->method(access, cl, name, loader()->getSignature(this, sign));
 
 	return res;
 }
@@ -877,11 +878,11 @@ J3ObjectHandle* J3ArrayClass::clone(J3Ob
 	return res;
 }
 
-J3Method* J3ArrayClass::findVirtualMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3ArrayClass::findVirtualMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	return loader()->vm()->objectClass->findVirtualMethod(name, sign, error);
 }
 
-J3Method* J3ArrayClass::findStaticMethod(const vmkit::Name* name, const vmkit::Name* sign, bool error) {
+J3Method* J3ArrayClass::findStaticMethod(const vmkit::Name* name, J3Signature* sign, bool error) {
 	return loader()->vm()->objectClass->findStaticMethod(name, sign, error);
 }
 

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Fri Jan  3 06:04:33 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();
@@ -146,7 +146,7 @@ J3Type* J3ClassLoader::getTypeInternal(J
 	return res;
 }
 
-J3Type* J3ClassLoader::getType(J3Class* from, const vmkit::Name* type) {
+J3Type* J3ClassLoader::getType(J3ObjectType* from, const vmkit::Name* type) {
 	pthread_mutex_lock(&_mutexTypes);
 	J3Type* res = types[type];
 	pthread_mutex_unlock(&_mutexTypes);
@@ -169,9 +169,9 @@ J3Type* J3ClassLoader::getType(J3Class*
 }
 
 
-J3MethodType* J3ClassLoader::getMethodType(J3Class* from, const vmkit::Name* sign) {
+J3Signature* J3ClassLoader::getSignature(J3ObjectType* from, const vmkit::Name* sign) {
 	pthread_mutex_lock(&_mutexMethodTypes);
-	J3MethodType* res = methodTypes[sign];
+	J3Signature* res = methodTypes[sign];
 
 	if(!res) {
 		J3Type*            args[1+sign->length()];
@@ -188,14 +188,14 @@ J3MethodType* J3ClassLoader::getMethodTy
 		if(cur != sign->length())
 			wrongType(from, sign);
 		
-		methodTypes[sign] = res = new(allocator(), nbArgs - 1) J3MethodType(args, nbArgs);
+		methodTypes[sign] = res = new(allocator(), nbArgs - 1) J3Signature(this, sign, args, nbArgs);
 	}
 	pthread_mutex_unlock(&_mutexMethodTypes);
 
 	return res;
 }
 
-J3Method* J3ClassLoader::method(uint16_t access, J3ObjectType* type, const vmkit::Name* name, const vmkit::Name* sign) {
+J3Method* J3ClassLoader::method(uint16_t access, J3ObjectType* type, const vmkit::Name* name, J3Signature* sign) {
 	if(type->isArrayClass())
 		return method(access, vm()->objectClass, name, sign);
 	else {
@@ -220,14 +220,14 @@ J3Method* J3ClassLoader::method(uint16_t
 bool J3ClassLoader::J3InterfaceMethodLess::operator()(j3::J3Method const* lhs, j3::J3Method const* rhs) const {
 	return lhs->name() < rhs->name()
 		|| (lhs->name() == rhs->name()
-				&& (lhs->sign() < rhs->sign()));
+				&& (lhs->signature() < rhs->signature()));
 }
 
 bool J3ClassLoader::J3MethodLess::operator()(j3::J3Method const* lhs, j3::J3Method const* rhs) const {
 	return lhs->name() < rhs->name()
 		|| (lhs->name() == rhs->name()
-				&& (lhs->sign() < rhs->sign()
-						|| (lhs->sign() == rhs->sign()
+				&& (lhs->signature() < rhs->signature()
+						|| (lhs->signature() == rhs->signature()
 								&& (lhs->cl() < rhs->cl()
 										|| (lhs->cl() == rhs->cl()
 												&& ((lhs->access() & J3Cst::ACC_STATIC) < (rhs->access() & J3Cst::ACC_STATIC)))))));

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Fri Jan  3 06:04:33 2014
@@ -35,7 +35,7 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 
 	method = m;
 	cl = method->cl()->asClass();
-	methodType = method->methodType();
+	signature = method->signature();
 	loader = cl->loader();
 	vm = loader->vm();
 
@@ -45,7 +45,10 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 #endif
 
 	if(vm->options()->debugTranslate)
-		fprintf(stderr, "  translating bytecode of: %s::%s%s\n", method->cl()->name()->cStr(), method->name()->cStr(), method->sign()->cStr());
+		fprintf(stderr, "  translating bytecode of: %s::%s%s\n", 
+						method->cl()->name()->cStr(), 
+						method->name()->cStr(), 
+						method->signature()->name()->cStr());
 
 	module = new llvm::Module(method->llvmFunctionName(), vm->llvmContext());
 	llvmFunction = buildFunction(method, 0);
@@ -105,14 +108,14 @@ J3CodeGen::J3CodeGen(vmkit::BumpAllocato
 	}
 
 	uint32_t access = method->access();
-	if(withCaller && !methodType->llvmSignature(access)->caller())
-		methodType->llvmSignature(access)->generateCallerIR(this, module, "generic-caller");
+	if(withCaller && !signature->llvmSignature(access)->caller())
+		signature->llvmSignature(access)->generateCallerIR(this, module, "generic-caller");
 
 	loader->compileModule(module);
 
-	if(withCaller && !methodType->llvmSignature(access)->caller()) {
+	if(withCaller && !signature->llvmSignature(access)->caller()) {
 		J3LLVMSignature::function_t caller = (J3LLVMSignature::function_t)loader->ee()->getFunctionAddress("generic-caller");
-		methodType->llvmSignature(access)->_caller = caller;
+		signature->llvmSignature(access)->_caller = caller;
 	}
 
 	if(withMethod) {
@@ -189,7 +192,7 @@ llvm::Value* J3CodeGen::unflatten(llvm::
 }
 
 llvm::FunctionType* J3CodeGen::llvmFunctionType(J3Method* method) {
-	J3MethodType* type = method->methodType(cl);
+	J3Signature* type = method->signature();
 	J3LLVMSignature* res = type->llvmSignature(method->access());
 
 	if(!res) {
@@ -389,7 +392,7 @@ llvm::Value* J3CodeGen::nullCheck(llvm::
 #define nyi() J3::internalError("not yet implemented: '%s' (%d)", J3Cst::opcodeNames[bc], bc);
 
 void J3CodeGen::invoke(uint32_t access, J3Method* target, llvm::Value* func) {
-	J3MethodType* type = target->methodType(cl);
+	J3Signature* type = target->signature();
 	std::vector<llvm::Value*> args;
 	uint32_t d = 0;
 
@@ -421,7 +424,7 @@ void J3CodeGen::invoke(uint32_t access,
 
 void J3CodeGen::invokeInterface(uint32_t idx) {
 	J3Method* target = cl->interfaceMethodAt(idx, 0);
-	J3MethodType* type = target->methodType(cl);
+	J3Signature* type = target->signature();
 
 	uint32_t     index = target->interfaceIndex();
 	llvm::Value* thread = currentThread();
@@ -440,7 +443,7 @@ void J3CodeGen::invokeInterface(uint32_t
 
 void J3CodeGen::invokeVirtual(uint32_t idx) {
 	J3Method*     target = cl->methodAt(idx, 0);
-	J3MethodType* type = target->methodType(cl);
+	J3Signature* type = target->signature();
 	llvm::Value*  funcEntry;
 
 	if(target->isResolved())
@@ -455,7 +458,10 @@ void J3CodeGen::invokeVirtual(uint32_t i
 	llvm::Value* func = builder->CreateBitCast(builder->CreateLoad(builder->CreateGEP(vt(obj), gepFunc)), 
 																						 llvmFunctionType(target)->getPointerTo());
 
-	char buf[65536]; snprintf(buf, 65536, "%s::%s%s", target->cl()->name()->cStr(), target->name()->cStr(), target->sign()->cStr());
+	char buf[65536]; snprintf(buf, 65536, "%s::%s%s", 
+														target->cl()->name()->cStr(), 
+														target->name()->cStr(), 
+														target->signature()->name()->cStr());
 	builder->CreateCall5(funcEchoDebugExecute,
 											 builder->getInt32(2),
 											 buildString("Invoking %s %p::%d\n"),
@@ -1549,7 +1555,7 @@ void J3CodeGen::generateJava() {
 	J3Attribute* attr = method->attributes()->lookup(vm->codeAttribute);
 
 	if(!attr)
-		J3::classFormatError(cl, "No Code attribute in %s %s", method->name()->cStr(), method->sign()->cStr());
+		J3::classFormatError(cl, "No Code attribute in %s %s", method->name()->cStr(), method->signature()->name()->cStr());
 
 	J3Reader reader(cl->bytes());
 	reader.seek(attr->offset(), reader.SeekSet);
@@ -1557,7 +1563,10 @@ void J3CodeGen::generateJava() {
 	uint32_t length = reader.readU4();
 	
 	if(!reader.adjustSize(length))
-		J3::classFormatError(cl, "Code attribute of %s %s is too large (%d)", method->name()->cStr(), method->sign()->cStr(), length);
+		J3::classFormatError(cl, "Code attribute of %s %s is too large (%d)", 
+												 method->name()->cStr(), 
+												 method->signature()->name()->cStr(), 
+												 length);
 
 	llvm::DIBuilder* dbgBuilder = new llvm::DIBuilder(*module);
 
@@ -1619,7 +1628,7 @@ void J3CodeGen::generateJava() {
 		if(!pos && !J3Cst::isStatic(method->access()))
 			type = method->cl();
 		else
-			type = methodType->ins(n++);
+			type = signature->ins(n++);
 
 		locals.setAt(flatten(cur, type), pos);
 
@@ -1652,11 +1661,11 @@ void J3CodeGen::generateJava() {
 												 buildString("%s\n"),
 												 buildString(buf));
 	}
-	if(methodType->out() == vm->typeVoid) {
+	if(signature->out() == vm->typeVoid) {
 		builder->CreateRetVoid();
 	} else {
-		ret.metaStack[0] = methodType->out()->llvmType();
-		builder->CreateRet(unflatten(ret.at(0), methodType->out()));
+		ret.metaStack[0] = signature->out()->llvmType();
+		builder->CreateRet(unflatten(ret.at(0), signature->out()));
 	}
 
 	if(J3Cst::isSynchronized(method->access())) {
@@ -1718,10 +1727,10 @@ llvm::Function* J3CodeGen::lookupNative(
 	else
 		nativeIns.push_back(vm->typeJ3ObjectHandlePtr);
 			
-	for(int i=0; i<methodType->nbIns(); i++)
-		nativeIns.push_back(doNativeType(methodType->ins(i)));
+	for(int i=0; i<signature->nbIns(); i++)
+		nativeIns.push_back(doNativeType(signature->ins(i)));
 
-	nativeOut = doNativeType(methodType->out());
+	nativeOut = doNativeType(signature->out());
 
 	char* buf = (char*)loader->allocator()->allocate(mangler.length()+1);
 	memcpy(buf, mangler.cStr(), mangler.length()+1);
@@ -1766,8 +1775,8 @@ void J3CodeGen::generateNative() {
 			selfDone = 1; 
 			a = builder->CreateCall2(funcJ3ThreadPush, thread, flatten(cur, method->cl()));
 		} else {
-			if(methodType->ins(i)->llvmType()->isPointerTy())
-				a = builder->CreateCall2(funcJ3ThreadPush, thread, flatten(cur, methodType->ins(i)));
+			if(signature->ins(i)->llvmType()->isPointerTy())
+				a = builder->CreateCall2(funcJ3ThreadPush, thread, flatten(cur, signature->ins(i)));
 			else
 				a = cur;
 			i++;
@@ -1777,22 +1786,22 @@ void J3CodeGen::generateNative() {
 
 	res = builder->CreateCall(nat, args);
 
-	if(methodType->out() == vm->typeVoid) {
+	if(signature->out() == vm->typeVoid) {
 		builder->CreateCall2(funcJ3ThreadRestore, thread, frame);
 		builder->CreateRetVoid();
 	} else {
 		builder->CreateCall2(funcJ3ThreadRestore, thread, frame);
 
-		if(methodType->out()->llvmType()->isPointerTy()) {
+		if(signature->out()->llvmType()->isPointerTy()) {
 			llvm::BasicBlock* ifnull = newBB("ifnull");
 			llvm::BasicBlock* ifnotnull = newBB("ifnotnull");
 			builder->CreateCondBr(builder->CreateIsNull(res), ifnull, ifnotnull);
 
 			builder->SetInsertPoint(bb = ifnull);
-			builder->CreateRet(unflatten(nullValue, methodType->out()));
+			builder->CreateRet(unflatten(nullValue, signature->out()));
 
 			builder->SetInsertPoint(bb = ifnotnull);
-			res = unflatten(handleToObject(res), methodType->out());
+			res = unflatten(handleToObject(res), signature->out());
 		}
 		builder->CreateRet(res);
 	}

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegenexception.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegenexception.cc?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegenexception.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegenexception.cc Fri Jan  3 06:04:33 2014
@@ -122,7 +122,7 @@ void J3ExceptionTable::dump(bool verbose
 		fprintf(stderr, "    ExceptionTable of %s::%s%s:\n", 
 						codeGen->method->cl()->name()->cStr(), 
 						codeGen->method->name()->cStr(),
-						codeGen->method->sign()->cStr());
+						codeGen->method->signature()->name()->cStr());
 
 		if(verbose) {
 			for(uint32_t i=0; i<nbEntries; i++)

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3jni.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3jni.cc Fri Jan  3 06:04:33 2014
@@ -113,7 +113,7 @@ jmethodID JNICALL GetMethodID(JNIEnv* en
 	J3ObjectType* cl = J3ObjectType::nativeClass(clazz);
 	cl->initialise();
 	vmkit::Names* n = cl->loader()->vm()->names();
-	res = cl->findVirtualMethod(n->get(name), n->get(sig));
+	res = cl->findVirtualMethod(n->get(name), cl->loader()->getSignature(cl, n->get(sig)));
 	leaveJVM(); 
 
 	return res;
@@ -127,7 +127,7 @@ jmethodID JNICALL GetStaticMethodID(JNIE
 	J3ObjectType* cl = J3ObjectType::nativeClass(clazz);
 	cl->initialise();
 	vmkit::Names* n = cl->loader()->vm()->names();
-	res = cl->findStaticMethod(n->get(name), n->get(sig));
+	res = cl->findStaticMethod(n->get(name), cl->loader()->getSignature(cl, n->get(sig)));
 
 	leaveJVM(); 
 

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3mangler.cc Fri Jan  3 06:04:33 2014
@@ -23,7 +23,7 @@ void J3Mangler::check(uint32_t n) {
 }
 
 J3Mangler* J3Mangler::mangleType(J3Method* method) {
-	J3MethodType* type = method->methodType(from);
+	J3Signature* type = method->signature();
 
 	if(type->nbIns()) {
 		check(2);

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=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3method.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3method.cc Fri Jan  3 06:04:33 2014
@@ -22,12 +22,12 @@
 
 using namespace j3;
 
-J3Method::J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, const vmkit::Name* sign) :
+J3Method::J3Method(uint16_t access, J3Class* cl, const vmkit::Name* name, J3Signature* signature) :
 	_selfCode(this) {
 	_access = access;
 	_cl = cl;
 	_name = name;
-	_sign = sign;
+	_signature = signature;
 	_index = -1;
 }
 
@@ -46,14 +46,14 @@ void J3Method::markCompiled(llvm::Functi
 
 void* J3Method::fnPtr(bool withCaller) {
 	if(!isCompiled()) {
-		//fprintf(stderr, "materializing: %s::%s%s\n", this, cl()->name()->cStr(), name()->cStr(), sign()->cStr());
+		//fprintf(stderr, "materializing: %s::%s%s\n", this, cl()->name()->cStr(), name()->cStr(), signature()->cStr());
 		if(!isResolved()) {
 			if(cl()->loader()->vm()->options()->debugLinking)
 				fprintf(stderr, "linking %s::%s\n", cl()->name()->cStr(), name()->cStr());
 
 			cl()->initialise();
 			if(!isResolved())
-				J3::noSuchMethodError("unable to find method", cl(), name(), sign());
+				J3::noSuchMethodError("unable to find method", cl(), name(), signature());
 		}
 
 		J3CodeGen::translate(this, 1, withCaller);
@@ -103,7 +103,7 @@ J3Method* J3Method::resolve(J3ObjectHand
 	if(cl()->loader()->vm()->options()->debugLinking)
 		fprintf(stderr, "virtual linking %s::%s\n", cl()->name()->cStr(), name()->cStr());
 	vmkit::Names* n = cl()->loader()->vm()->names();
-	return obj->vt()->type()->asObjectType()->findVirtualMethod(name(), sign());
+	return obj->vt()->type()->asObjectType()->findVirtualMethod(name(), signature());
 }
 
 J3Value J3Method::internalInvoke(bool statically, J3Value* inArgs) {
@@ -111,12 +111,12 @@ J3Value J3Method::internalInvoke(bool st
 
 	void* fn = fnPtr(1);
 
-	//fprintf(stderr, "Internal invoke %s::%s%s\n", target->cl()->name()->cStr(), target->name()->cStr(), target->sign()->cStr());
+	//fprintf(stderr, "Internal invoke %s::%s%s\n", target->cl()->name()->cStr(), target->name()->cStr(), target->signature()->cStr());
 
-	J3LLVMSignature::function_t caller = methodType()->llvmSignature(access())->caller();
+	J3LLVMSignature::function_t caller = signature()->llvmSignature(access())->caller();
 	if(!caller) {
 		J3CodeGen::translate(this, 0, 1);
-		caller = methodType()->llvmSignature(access())->caller();
+		caller = signature()->llvmSignature(access())->caller();
 	}
 
 	J3Value res = caller(fn, inArgs);
@@ -127,16 +127,16 @@ J3Value J3Method::internalInvoke(bool st
 J3Value J3Method::internalInvoke(bool statically, J3ObjectHandle* handle, J3Value* inArgs) {
 	J3Value* reIn;
 	if(handle) {
-		reIn = (J3Value*)alloca((methodType()->nbIns()+1)*sizeof(J3Value));
+		reIn = (J3Value*)alloca((signature()->nbIns()+1)*sizeof(J3Value));
 		reIn[0].valObject = handle;
-		memcpy(reIn+1, inArgs, methodType()->nbIns()*sizeof(J3Value));
+		memcpy(reIn+1, inArgs, signature()->nbIns()*sizeof(J3Value));
 	} else
 		reIn = inArgs;
 	return internalInvoke(statically, reIn);
 }
 
 J3Value J3Method::internalInvoke(bool statically, J3ObjectHandle* handle, va_list va) {
-	J3Value* args = (J3Value*)alloca(sizeof(J3Value)*(methodType()->nbIns() + 1));
+	J3Value* args = (J3Value*)alloca(sizeof(J3Value)*(signature()->nbIns() + 1));
 	J3* vm = cl()->loader()->vm();
 	J3Type* cur;
 	uint32_t d = 0;
@@ -144,8 +144,8 @@ J3Value J3Method::internalInvoke(bool st
 	if(handle)
 		args[d++].valObject = handle;
 
-	for(uint32_t i=0; i<methodType()->nbIns(); i++) {
-		cur = methodType()->ins(i);
+	for(uint32_t i=0; i<signature()->nbIns(); i++) {
+		cur = signature()->ins(i);
 
 		if(cur == vm->typeBoolean)
 			args[i+d].valBoolean = va_arg(va, bool);
@@ -218,13 +218,6 @@ J3Value J3Method::invokeVirtual(J3Object
 	return res;
 }
 
-J3MethodType* J3Method::methodType(J3Class* from) {
-	if(!_methodType)
-		_methodType = cl()->loader()->getMethodType(from, sign());
-
-	return _methodType;
-}
-
 void J3Method::buildLLVMNames(J3Class* from) {
 	const char* prefix = "stub_";
 	uint32_t plen = 5;
@@ -262,12 +255,12 @@ char* J3Method::llvmStubName(J3Class* fr
 }
 
 void J3Method::dump() {
-	printf("Method: %s %s::%s\n", sign()->cStr(), cl()->name()->cStr(), name()->cStr());
+	printf("Method: %s %s::%s\n", signature()->name()->cStr(), cl()->name()->cStr(), name()->cStr());
 }
 
 void J3Method::registerNative(void* fnPtr) {
 	if(_nativeFnPtr)
-		J3::noSuchMethodError("unable to dynamically modify a native function", cl(), name(), sign());
+		J3::noSuchMethodError("unable to dynamically modify a native function", cl(), name(), signature());
 	_nativeFnPtr = fnPtr;
 }
 
@@ -278,12 +271,12 @@ J3ObjectHandle* J3Method::javaMethod() {
 			J3ObjectHandle* prev = J3Thread::get()->tell();
 			J3* vm = cl()->loader()->vm();
 
-			uint32_t nbIns = methodType()->nbIns();
+			uint32_t nbIns = signature()->nbIns();
 
 			J3ObjectHandle* parameters = J3ObjectHandle::doNewArray(vm->classClass->getArray(), nbIns);
 
 			for(uint32_t i=0; i<nbIns; i++)
-				parameters->setObjectAt(i, methodType()->ins(i)->javaClass());
+				parameters->setObjectAt(i, signature()->ins(i)->javaClass());
 
 			J3Attribute* exceptionAttribute = attributes()->lookup(vm->exceptionsAttribute);
 			J3ObjectHandle* exceptions;
@@ -305,7 +298,7 @@ J3ObjectHandle* J3Method::javaMethod() {
 																								exceptions,
 																								access(),
 																								slot(),
-																								vm->nameToString(sign()),
+																								vm->nameToString(signature()->name()),
 																								annotations,
 																								paramAnnotations);
 			} else 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3object.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3object.cc?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3object.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3object.cc Fri Jan  3 06:04:33 2014
@@ -52,7 +52,7 @@ J3VirtualTable* J3VirtualTable::create(J
 
 	for(uint32_t i=0; i<cl->nbMethods(); i++) {
 		J3Method* meth = cl->methods()[i];
-		J3Method* parent = cl == super ? 0 : super->findVirtualMethod(meth->name(), meth->sign(), 0);
+		J3Method* parent = cl == super ? 0 : super->findVirtualMethod(meth->name(), meth->signature(), 0);
 		
 		if(parent) {
 			pm[i] = parent;

Modified: vmkit/branches/mcjit/lib/j3/vm/j3signature.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3signature.cc?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3signature.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3signature.cc Fri Jan  3 06:04:33 2014
@@ -9,21 +9,23 @@
 
 using namespace j3;
 
-J3MethodType::J3MethodType(J3Type** args, size_t nbArgs) {
+J3Signature::J3Signature(J3ClassLoader* loader, const vmkit::Name* name, J3Type** args, size_t nbArgs) {
+	_loader = loader;
+	_name = name;
 	_out = args[nbArgs-1];
 	_nbIns = nbArgs-1;
 	memcpy(_ins, args, (nbArgs-1)*sizeof(J3Type*));
 			
 }
 
-void J3MethodType::setLLVMSignature(uint32_t access, J3LLVMSignature* llvmSignature) { 
+void J3Signature::setLLVMSignature(uint32_t access, J3LLVMSignature* llvmSignature) { 
 	if(J3Cst::isStatic(access))
 		_staticLLVMSignature = llvmSignature;
 	else
 		_virtualLLVMSignature = llvmSignature;
 }
 
-J3LLVMSignature* J3MethodType::llvmSignature(uint32_t access) { 
+J3LLVMSignature* J3Signature::llvmSignature(uint32_t access) { 
 	return J3Cst::isStatic(access) ? _staticLLVMSignature : _virtualLLVMSignature; 
 }
 

Modified: vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc?rev=198408&r1=198407&r2=198408&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3trampoline.cc Fri Jan  3 06:04:33 2014
@@ -34,7 +34,7 @@ void* J3Trampoline::virtualTrampoline(J3
 	J3ObjectHandle* prev = J3Thread::get()->tell();
 	J3ObjectHandle* handle = J3Thread::get()->push(obj);
 	J3ObjectType* cl = handle->vt()->type()->asObjectType();
-	J3Method* impl = cl == target->cl() ? target : cl->findVirtualMethod(target->name(), target->sign());
+	J3Method* impl = cl == target->cl() ? target : cl->findVirtualMethod(target->name(), target->signature());
 
 	void* res = impl->fnPtr(0);
 	handle->vt()->virtualMethods()[impl->index()] = res;





More information about the vmkit-commits mailing list