[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