[vmkit-commits] [vmkit] r71547 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMClass.cpp Classpath/ClasspathVMClassLoader.cpp VMCore/Jni.cpp VMCore/JnjvmClassLoader.cpp VMCore/JnjvmClassLoader.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue May 12 02:56:24 PDT 2009


Author: geoffray
Date: Tue May 12 04:55:54 2009
New Revision: 71547

URL: http://llvm.org/viewvc/llvm-project?rev=71547&view=rev
Log:
Code cleanup, no functioanlity changes.


Modified:
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
    vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp?rev=71547&r1=71546&r2=71547&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Tue May 12 04:55:54 2009
@@ -44,9 +44,9 @@
 JNIEnv *env,
 jclass clazz,
 #endif
-jobject str, 
+JavaString* str, 
 jboolean clinit, 
-jobject loader) {
+JavaObject* loader) {
 
   jclass res = 0;
 
@@ -54,16 +54,16 @@
 
   Jnjvm* vm = JavaThread::get()->getJVM(); 
   JnjvmClassLoader* JCL = 
-    JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
-  UserCommonClass* cl = JCL->lookupClassFromJavaString((JavaString*)str, vm,
-                                                        true, false);
+    JnjvmClassLoader::getJnjvmLoaderFromJavaObject(loader, vm);
+  UserCommonClass* cl = JCL->loadClassFromJavaString(str, true, false);
+
   if (cl != 0) {
     if (clinit && cl->asClass()) {
       cl->asClass()->initialiseClass(vm);
     }
     res =(jclass)(cl->getClassDelegatee(vm));
   } else {
-    vm->classNotFoundException((JavaString*)str);
+    vm->classNotFoundException(str);
   }
 
   END_NATIVE_EXCEPTION

Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp?rev=71547&r1=71546&r2=71547&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp Tue May 12 04:55:54 2009
@@ -93,8 +93,7 @@
   JavaString* str = (JavaString*)_str;
 
   JnjvmClassLoader* JCL = vm->bootstrapLoader;
-  UserCommonClass* cl = JCL->lookupClassFromJavaString(str, vm, doResolve,
-                                                       false);
+  UserCommonClass* cl = JCL->loadClassFromJavaString(str, doResolve, false);
 
   if (cl != 0)
     res = (jclass)cl->getClassDelegatee(vm);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Tue May 12 04:55:54 2009
@@ -69,12 +69,12 @@
   Jnjvm* vm = th->getJVM();
   UserClass* currentClass = th->getCallingClass(0);
   if (currentClass) loader = currentClass->classLoader;
-  else loader = vm->bootstrapLoader;
+  else loader = vm->appClassLoader;
 
   const UTF8* utf8 = vm->asciizToInternalUTF8(asciiz);
   
-  UserCommonClass* cl = loader->lookupClassFromUTF8(utf8, vm, true, true);
-  if (cl->asClass()) cl->asClass()->initialiseClass(vm);
+  UserCommonClass* cl = loader->loadClassFromUserUTF8(utf8, true, true);
+  if (cl && cl->asClass()) cl->asClass()->initialiseClass(vm);
   return (jclass)(cl->getClassDelegatee(vm));
   
   END_JNI_EXCEPTION

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Tue May 12 04:55:54 2009
@@ -391,145 +391,106 @@
   return cl;
 }
 
-UserCommonClass* JnjvmClassLoader::lookupClassFromUTF8(const UTF8* name,
-                                                       Jnjvm* vm,
-                                                       bool doResolve,
-                                                       bool doThrow) {
+
+const UTF8* JnjvmClassLoader::lookupComponentName(const UTF8* name,
+                                                  bool create,
+                                                  bool& prim) {
   uint32 len = name->size;
   uint32 start = 0;
   uint32 origLen = len;
   bool doLoop = true;
-  UserCommonClass* ret = 0;
-
-  if (len == 0) {
-    return 0;
-  } else if (name->elements[0] == I_TAB) {
-    
-    while (doLoop) {
-      --len;
-      if (len == 0) {
-        doLoop = false;
-      } else {
-        ++start;
-        if (name->elements[start] != I_TAB) {
-          if (name->elements[start] == I_REF) {
-            uint32 size = (uint32)name->size;
-            if ((size == (start + 1)) || (size == (start + 2)) || 
-                 (name->elements[start + 1] == I_TAB) || 
-                 (name->elements[origLen - 1] != I_END_REF)) {
-              doLoop = false; 
-            } else {
-              const UTF8* componentName = name->javaToInternal(vm, start + 1,
-                                                               len - 2);
-              if (loadName(componentName, doResolve, doThrow)) {
-                ret = constructArray(name);
-                doLoop = false;
-              } else {
-                doLoop = false;
-              }
-            }
+  
+  while (doLoop) {
+    --len;
+    if (len == 0) {
+      doLoop = false;
+    } else {
+      ++start;
+      if (name->elements[start] != I_TAB) {
+        if (name->elements[start] == I_REF) {
+          uint32 size = (uint32)name->size;
+          if ((size == (start + 1)) || (size == (start + 2)) || 
+              (name->elements[start + 1] == I_TAB) || 
+              (name->elements[origLen - 1] != I_END_REF)) {
+            doLoop = false; 
           } else {
-            uint16 cur = name->elements[start];
-            if ((cur == I_BOOL || cur == I_BYTE ||
-                 cur == I_CHAR || cur == I_SHORT ||
-                 cur == I_INT || cur == I_FLOAT || 
-                 cur == I_DOUBLE || cur == I_LONG)
-                && ((uint32)name->size) == start + 1) {
-
-              ret = constructArray(name);
-              doLoop = false;
-            } else {
-              doLoop = false;
+            const uint16* buf = &(name->elements[start + 1]);
+            uint32 bufLen = len - 2;
+            const UTF8* componentName = hashUTF8->lookupReader(buf, bufLen);
+            if (!componentName && create) {
+              componentName = name->extract(isolate, start + 1, len - 2);
             }
+            return componentName;
           }
+        } else {
+          prim = true;
         }
       }
     }
-
-    return ret;
-
-  } else {
-    return loadName(name, doResolve, doThrow);
   }
+
+  return 0;
 }
 
 UserCommonClass* JnjvmClassLoader::lookupClassOrArray(const UTF8* name) {
-  UserCommonClass* temp = lookupClass(name);
-  if (temp) return temp;
+  if (name->elements[0] != I_TAB) {
+    UserCommonClass* temp = lookupClass(name);
+    if (temp) return temp;
+  }
 
   if (this != bootstrapLoader) {
-    temp = bootstrapLoader->lookupClassOrArray(name);
-
+    UserCommonClass* temp = bootstrapLoader->lookupClassOrArray(name);
     if (temp) return temp;
   }
+  
+  
+  if (name->elements[0] == I_TAB) {
+    bool prim = false;
+    const UTF8* componentName = lookupComponentName(name, false, prim);
+    if (prim) return constructArray(name);
+    if (componentName) {
+      UserCommonClass* temp = lookupClass(componentName);
+      if (temp) return constructArray(name);
+    }
+  }
 
-  uint32 len = name->size;
-  uint32 start = 0;
-  uint32 origLen = len;
-  bool doLoop = true;
+  return 0;
+}
 
-  if (name->elements[0] == I_TAB) {
-    
-    while (doLoop) {
-      --len;
-      if (len == 0) {
-        doLoop = false;
-      } else {
-        ++start;
-        if (name->elements[start] != I_TAB) {
-          if (name->elements[start] == I_REF) {
-            uint32 size = (uint32)name->size;
-            if ((size == (start + 1)) || (size == (start + 2)) || 
-                 (name->elements[start + 1] == I_TAB) || 
-                 (name->elements[origLen - 1] != I_END_REF)) {
-              doLoop = false; 
-            } else {
-              const UTF8* componentName = name->javaToInternal(isolate,
-                                                               start + 1,
-                                                               len - 2);
-              if (lookupClassOrArray(componentName)) {
-                temp = constructArray(name);
-                doLoop = false;
-              } else {
-                doLoop = false;
-              }
-            }
-          } else {
-            uint16 cur = name->elements[start];
-            if ((cur == I_BOOL || cur == I_BYTE ||
-                 cur == I_CHAR || cur == I_SHORT ||
-                 cur == I_INT || cur == I_FLOAT || 
-                 cur == I_DOUBLE || cur == I_LONG)
-                && ((uint32)name->size) == start + 1) {
-
-              temp = constructArray(name);
-              doLoop = false;
-            } else {
-              doLoop = false;
-            }
-          }
-        }
-      }
+UserCommonClass* JnjvmClassLoader::loadClassFromUserUTF8(const UTF8* name,
+                                                         bool doResolve,
+                                                         bool doThrow) {
+  if (name->size == 0) {
+    return 0;
+  } else if (name->elements[0] == I_TAB) {
+    bool prim = false;
+    const UTF8* componentName = lookupComponentName(name, true, prim);
+    if (prim) return constructArray(name);
+    if (componentName) {
+      UserCommonClass* temp = loadName(componentName, doResolve, doThrow);
+      if (temp) return constructArray(name);
     }
+  } else {
+    return loadName(name, doResolve, doThrow);
   }
 
-  return temp;
+  return 0;
 }
 
 
 UserCommonClass* 
-JnjvmClassLoader::lookupClassFromJavaString(JavaString* str, Jnjvm* vm,
-                                            bool doResolve, bool doThrow) {
+JnjvmClassLoader::loadClassFromJavaString(JavaString* str, bool doResolve,
+                                          bool doThrow) {
   
   const UTF8* name = 0;
   
   if (str->value->elements[str->offset] != I_TAB)
-    name = str->value->checkedJavaToInternal(vm, str->offset, str->count);
+    name = str->value->checkedJavaToInternal(isolate, str->offset, str->count);
   else
-    name = str->value->javaToInternal(vm, str->offset, str->count);
+    name = str->value->javaToInternal(isolate, str->offset, str->count);
 
   if (name)
-    return lookupClassFromUTF8(name, vm, doResolve, doThrow);
+    return loadClassFromUserUTF8(name, doResolve, doThrow);
 
   return 0;
 }

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=71547&r1=71546&r2=71547&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Tue May 12 04:55:54 2009
@@ -75,6 +75,12 @@
   JnjvmClassLoader(mvm::BumpPtrAllocator& Alloc, JnjvmClassLoader& JCL,
                    JavaObject* loader, Jnjvm* isolate);
 
+  /// lookupComponentName - Try to find the component name of the given array
+  /// name. If the component name is not in the table of UTF8s and create is
+  /// false, the function returns 0.
+  ///
+  const UTF8* lookupComponentName(const UTF8* name, bool create, bool& prim);
+
 protected:
   
   JnjvmClassLoader(mvm::BumpPtrAllocator& Alloc) : allocator(Alloc) {}
@@ -143,13 +149,13 @@
   
   /// lookupClassFromUTF8 - Lookup a class from an UTF8 name and load it.
   ///
-  UserCommonClass* lookupClassFromUTF8(const UTF8* utf8, Jnjvm* vm,
-                                       bool doResolve, bool doThrow);
+  UserCommonClass* loadClassFromUserUTF8(const UTF8* utf8,
+                                         bool doResolve, bool doThrow);
   
   /// lookupClassFromJavaString - Lookup a class from a Java String and load it.
   ///
-  UserCommonClass* lookupClassFromJavaString(JavaString* str, Jnjvm* vm, 
-                                             bool doResolve, bool doThrow);
+  UserCommonClass* loadClassFromJavaString(JavaString* str,
+                                           bool doResolve, bool doThrow);
    
   /// lookupClass - Finds the class of the given name in the class loader's
   /// table.





More information about the vmkit-commits mailing list