[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