[vmkit-commits] [vmkit] r105917 - in /vmkit/trunk/lib/J3: Classpath/ClasspathConstructor.inc Classpath/ClasspathMethod.inc VMCore/JavaMetaJIT.cpp VMCore/JavaObject.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Jun 13 10:07:35 PDT 2010
Author: geoffray
Date: Sun Jun 13 12:07:35 2010
New Revision: 105917
URL: http://llvm.org/viewvc/llvm-project?rev=105917&view=rev
Log:
Don't put an object direclty into a jvalue.
Modified:
vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc?rev=105917&r1=105916&r2=105917&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathConstructor.inc Sun Jun 13 12:07:35 2010
@@ -111,7 +111,7 @@
// Store the arguments, unboxing primitives if necessary.
for (sint32 i = 0; i < size; ++i) {
JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
- if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
+ if (!arguments[i]->isPrimitive()) {
buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
}
}
Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=105917&r1=105916&r2=105917&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sun Jun 13 12:07:35 2010
@@ -144,7 +144,7 @@
Typedef* const* arguments = sign->getArgumentsType();
for (sint32 i = 0; i < size; ++i) {
JavaObject::decapsulePrimitive(ptr[i], vm, &buf[i], arguments[i]);
- if (buf[i].l == reinterpret_cast<jobject>(ptr[i])) {
+ if (!arguments[i]->isPrimitive()) {
buf[i].l = reinterpret_cast<jobject>(&ptr[i]);
}
}
Modified: vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp?rev=105917&r1=105916&r2=105917&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaMetaJIT.cpp Sun Jun 13 12:07:35 2010
@@ -227,6 +227,7 @@
#define INVOKE_VA(TYPE, TYPE_NAME, FUNC_TYPE_VIRTUAL_AP, FUNC_TYPE_STATIC_AP, FUNC_TYPE_VIRTUAL_BUF, FUNC_TYPE_STATIC_BUF) \
TYPE JavaMethod::invoke##TYPE_NAME##Virtual(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) { \
+ llvm_gcroot(obj, 0); \
va_list ap;\
va_start(ap, obj);\
llvm_gcroot(obj, 0); \
@@ -236,6 +237,7 @@
}\
\
TYPE JavaMethod::invoke##TYPE_NAME##Special(Jnjvm* vm, UserClass* cl, JavaObject* obj, ...) {\
+ llvm_gcroot(obj, 0); \
va_list ap;\
va_start(ap, obj);\
TYPE res = invoke##TYPE_NAME##SpecialAP(vm, cl, obj, ap);\
Modified: vmkit/trunk/lib/J3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaObject.cpp?rev=105917&r1=105916&r2=105917&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaObject.cpp Sun Jun 13 12:07:35 2010
@@ -213,9 +213,8 @@
if (obj && !(getClass(obj)->isOfTypeName(signature->getName()))) {
vm->illegalArgumentException("wrong type argument");
}
- (*buf).l = reinterpret_cast<jobject>(obj);
return;
- } else if (obj == 0) {
+ } else if (obj == NULL) {
vm->illegalArgumentException("");
} else {
UserCommonClass* cl = getClass(obj);
More information about the vmkit-commits
mailing list