[vmkit-commits] [vmkit] r82046 - /vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Sep 16 06:14:49 PDT 2009
Author: geoffray
Date: Wed Sep 16 08:14:48 2009
New Revision: 82046
URL: http://llvm.org/viewvc/llvm-project?rev=82046&view=rev
Log:
Don't use the cl information in JavaMetaJIT.cpp, do a full lookup
on the object's class.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp?rev=82046&r1=82045&r2=82046&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaMetaJIT.cpp Wed Sep 16 08:14:48 2009
@@ -86,12 +86,8 @@
Signdef* sign = getSignature(); \
uintptr_t buf = (uintptr_t)alloca(sign->nbArguments * sizeof(uint64)); \
void* _buf = (void*)buf; \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
readArgs(buf, sign, ap, jni); \
@@ -154,12 +150,8 @@
TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
verifyNull(obj);\
Signdef* sign = getSignature(); \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
JavaThread* th = JavaThread::get(); \
@@ -242,12 +234,8 @@
\
TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
verifyNull(obj); \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
Signdef* sign = getSignature(); \
FUNC_TYPE_VIRTUAL_AP call = (FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP(); \
@@ -303,12 +291,8 @@
\
TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
verifyNull(obj);\
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
Signdef* sign = getSignature(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
@@ -398,12 +382,8 @@
Signdef* sign = getSignature(); \
uintptr_t buf = (uintptr_t)alloca(sign->nbArguments * sizeof(uint64)); \
void* _buf = (void*)buf; \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
readArgs(buf, sign, ap, jni); \
@@ -463,12 +443,8 @@
TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
verifyNull(obj);\
Signdef* sign = getSignature(); \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
JavaThread* th = JavaThread::get(); \
@@ -506,7 +482,7 @@
\
void* func = this->compiledPtr();\
Signdef* sign = getSignature(); \
- FUNC_TYPE_STATIC_BUF call = (FUNC_TYPE_STATIC_BUF)sign->getVirtualCallBuf(); \
+ FUNC_TYPE_STATIC_BUF call = (FUNC_TYPE_STATIC_BUF)sign->getStaticCallBuf(); \
JavaThread* th = JavaThread::get(); \
th->startJava(); \
TYPE res = 0; \
@@ -548,12 +524,8 @@
\
TYPE JavaMethod::invoke##TYPE_NAME##VirtualAP(Jnjvm* vm, UserClass* cl, JavaObject* obj, va_list ap) { \
verifyNull(obj); \
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
Signdef* sign = getSignature(); \
FUNC_TYPE_VIRTUAL_AP call = (FUNC_TYPE_VIRTUAL_AP)sign->getVirtualCallAP(); \
@@ -606,12 +578,8 @@
\
TYPE JavaMethod::invoke##TYPE_NAME##VirtualBuf(Jnjvm* vm, UserClass* cl, JavaObject* obj, void* buf) {\
verifyNull(obj);\
- JavaMethod* meth = this; \
- if (classDef != cl) {\
- UserClass* cl2 = 0; \
- meth = cl->lookupMethodDontThrow(name, type, false, true, &cl2); \
- assert(cl2 == cl && "Different classes in invoke virtual"); \
- } \
+ UserClass* objCl = obj->getClass()->isArray() ? obj->getClass()->super : obj->getClass()->asClass(); \
+ JavaMethod* meth = objCl->lookupMethodDontThrow(name, type, false, true, &cl); \
void* func = meth->compiledPtr(); \
Signdef* sign = getSignature(); \
FUNC_TYPE_VIRTUAL_BUF call = (FUNC_TYPE_VIRTUAL_BUF)sign->getVirtualCallBuf(); \
More information about the vmkit-commits
mailing list