[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