[vmkit-commits] [vmkit] r56974 - /vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Thu Oct 2 15:48:30 PDT 2008
Author: geoffray
Date: Thu Oct 2 17:48:30 2008
New Revision: 56974
URL: http://llvm.org/viewvc/llvm-project?rev=56974&view=rev
Log:
Use safe casting of classes.
Modified:
vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc?rev=56974&r1=56973&r2=56974&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClass.cpp.inc Thu Oct 2 17:48:30 2008
@@ -56,7 +56,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JnjvmClassLoader* JCL = JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
UserCommonClass* cl = JCL->lookupClassFromJavaString((JavaString*)str,
- true, false);
+ true, false);
if (cl != 0) {
if (clinit) {
cl->initialiseClass(vm);
@@ -271,9 +271,9 @@
#endif
jclass Cl, jboolean publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
+ UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
- if (cl->isArray()) {
+ if (!cl) {
return (jobject)ArrayObject::acons(0, vm->upcalls->fieldArrayClass, &(vm->allocator));
} else {
std::vector<JavaField*> res;
@@ -323,14 +323,16 @@
#endif
jclass Cl) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
- cl->resolveInnerOuterClasses();
- UserClass* outer = cl->getOuterClass();
- if (outer) {
- return (jclass)outer->getClassDelegatee(vm);
- } else {
- return 0;
+ UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+ if (cl) {
+ cl->resolveInnerOuterClasses();
+ UserClass* outer = cl->getOuterClass();
+ if (outer) {
+ return (jclass)outer->getClassDelegatee(vm);
+ }
}
+
+ return 0;
}
JNIEXPORT jobject JNICALL Java_java_lang_VMClass_getDeclaredClasses(
@@ -340,17 +342,21 @@
#endif
jclass Cl, bool publicOnly) {
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
- cl->resolveInnerOuterClasses();
- std::vector<UserClass*>* innerClasses = cl->getInnerClasses();
- ArrayObject* res = ArrayObject::acons(innerClasses->size(), vm->upcalls->constructorArrayClass, &(vm->allocator));
- uint32 index = 0;
- for (std::vector<UserClass*>::iterator i = innerClasses->begin(),
- e = innerClasses->end(); i!= e; i++) {
- res->elements[index++] = (*i)->getClassDelegatee(vm);
+ UserClass* cl = NativeUtil::resolvedImplClass(Cl, false)->asClass();
+ if (cl) {
+ cl->resolveInnerOuterClasses();
+ std::vector<UserClass*>* innerClasses = cl->getInnerClasses();
+ ArrayObject* res = ArrayObject::acons(innerClasses->size(), vm->upcalls->constructorArrayClass, &(vm->allocator));
+ uint32 index = 0;
+ for (std::vector<UserClass*>::iterator i = innerClasses->begin(),
+ e = innerClasses->end(); i!= e; i++) {
+ res->elements[index++] = (*i)->getClassDelegatee(vm);
+ }
+ return (jobject)res;
}
- return (jobject)res;
+ return 0;
+
}
More information about the vmkit-commits
mailing list