[vmkit-commits] [vmkit] r76491 - /vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Jul 20 15:27:37 PDT 2009


Author: geoffray
Date: Mon Jul 20 17:27:37 2009
New Revision: 76491

URL: http://llvm.org/viewvc/llvm-project?rev=76491&view=rev
Log:
Add llvm_gcroot's.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=76491&r1=76490&r2=76491&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Mon Jul 20 17:27:37 2009
@@ -935,11 +935,14 @@
 }
 
 ArrayObject* JavaMethod::getParameterTypes(JnjvmClassLoader* loader) {
+  
+  ArrayObject* res = 0;
+  llvm_gcroot(res, 0);
+  
   Jnjvm* vm = JavaThread::get()->getJVM();
   Signdef* sign = getSignature();
   Typedef* const* arguments = sign->getArgumentsType();
-  ArrayObject* res = 
-    (ArrayObject*)vm->upcalls->classArrayClass->doNew(sign->nbArguments, vm);
+  res = (ArrayObject*)vm->upcalls->classArrayClass->doNew(sign->nbArguments,vm);
 
   for (uint32 index = 0; index < sign->nbArguments; ++index) {
     res->elements[index] = getClassType(vm, loader, arguments[index]);
@@ -956,6 +959,10 @@
 }
 
 ArrayObject* JavaMethod::getExceptionTypes(JnjvmClassLoader* loader) {
+  
+  ArrayObject* res = 0;
+  llvm_gcroot(res, 0);
+  
   Attribut* exceptionAtt = lookupAttribut(Attribut::exceptionsAttribut);
   Jnjvm* vm = JavaThread::get()->getJVM();
   if (exceptionAtt == 0) {
@@ -964,16 +971,14 @@
     UserConstantPool* ctp = classDef->getConstantPool();
     Reader reader(exceptionAtt, classDef->getBytes());
     uint16 nbe = reader.readU2();
-    ArrayObject* res = 
-      (ArrayObject*)vm->upcalls->classArrayClass->doNew(nbe, vm);
+    res = (ArrayObject*)vm->upcalls->classArrayClass->doNew(nbe, vm);
 
     for (uint16 i = 0; i < nbe; ++i) {
       uint16 idx = reader.readU2();
       UserCommonClass* cl = ctp->loadClass(idx);
       assert(cl->asClass() && "Wrong exception type");
       cl->asClass()->resolveClass();
-      JavaObject* obj = cl->getClassDelegatee(vm);
-      res->elements[i] = obj;
+      res->elements[i] = cl->getClassDelegatee(vm);
     }
     return res;
   }
@@ -1020,6 +1025,9 @@
 UserCommonClass* UserCommonClass::resolvedImplClass(Jnjvm* vm,
                                                     JavaObject* clazz,
                                                     bool doClinit) {
+
+  llvm_gcroot(clazz, 0);
+
   UserCommonClass* cl = ((JavaObjectClass*)clazz)->getClass();
   if (cl->isClass()) {
     cl->asClass()->resolveClass();
@@ -1204,9 +1212,12 @@
 
 
 ArrayUInt16* JavaMethod::toString() const {
+   
   Jnjvm* vm = JavaThread::get()->getJVM();
   uint32 size = classDef->name->size + name->size + type->size + 1;
   ArrayUInt16* res = (ArrayUInt16*)vm->upcalls->ArrayOfChar->doNew(size, vm);
+  llvm_gcroot(res, 0);
+
   uint32 i = 0;
  
   for (sint32 j = 0; j < classDef->name->size; ++j) {





More information about the vmkit-commits mailing list