[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