[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