[vmkit-commits] [vmkit] r71649 - in /vmkit/trunk/lib/JnJVM/VMCore: JnjvmClassLoader.cpp JnjvmClassLoader.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed May 13 03:06:01 PDT 2009
Author: geoffray
Date: Wed May 13 05:05:44 2009
New Revision: 71649
URL: http://llvm.org/viewvc/llvm-project?rev=71649&view=rev
Log:
If we can avoid creating strings when loading a class, do so!
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=71649&r1=71648&r2=71649&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Wed May 13 05:05:44 2009
@@ -324,7 +324,8 @@
UserClass* JnjvmBootstrapLoader::internalLoad(const UTF8* name,
- bool doResolve) {
+ bool doResolve,
+ JavaString* strName) {
UserCommonClass* cl = lookupClass(name);
@@ -343,17 +344,20 @@
return (UserClass*)cl;
}
-UserClass* JnjvmClassLoader::internalLoad(const UTF8* name, bool doResolve) {
+UserClass* JnjvmClassLoader::internalLoad(const UTF8* name, bool doResolve,
+ JavaString* strName) {
UserCommonClass* cl = lookupClass(name);
if (!cl) {
- const UTF8* javaName = name->internalToJava(isolate, 0, name->size);
- JavaString* str = isolate->UTF8ToStr(javaName);
Classpath* upcalls = bootstrapLoader->upcalls;
UserClass* forCtp = loadClass;
+ if (!strName) {
+ const UTF8* javaName = name->internalToJava(isolate, 0, name->size);
+ strName = isolate->UTF8ToStr(javaName);
+ }
JavaObject* obj = (JavaObject*)
upcalls->loadInClassLoader->invokeJavaObjectVirtual(isolate, forCtp,
- javaLoader, str,
+ javaLoader, strName,
doResolve);
cl = (UserCommonClass*)((JavaObjectClass*)obj)->getClass();
}
@@ -367,10 +371,10 @@
}
UserClass* JnjvmClassLoader::loadName(const UTF8* name, bool doResolve,
- bool doThrow) {
+ bool doThrow, JavaString* strName) {
- UserClass* cl = internalLoad(name, doResolve);
+ UserClass* cl = internalLoad(name, doResolve, strName);
if (!cl && doThrow) {
Jnjvm* vm = JavaThread::get()->getJVM();
@@ -466,7 +470,8 @@
UserCommonClass* JnjvmClassLoader::loadClassFromUserUTF8(const UTF8* name,
bool doResolve,
- bool doThrow) {
+ bool doThrow,
+ JavaString* strName) {
if (name->size == 0) {
return 0;
} else if (name->elements[0] == I_TAB) {
@@ -478,7 +483,7 @@
if (temp) return constructArray(name);
}
} else {
- return loadName(name, doResolve, doThrow);
+ return loadName(name, doResolve, doThrow, strName);
}
return 0;
@@ -526,7 +531,7 @@
}
}
- return loadClassFromUserUTF8(name, doResolve, doThrow);
+ return loadClassFromUserUTF8(name, doResolve, doThrow, str);
}
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=71649&r1=71648&r2=71649&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Wed May 13 05:05:44 2009
@@ -62,7 +62,8 @@
/// internalLoad - Load the class with the given name.
///
- virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve);
+ virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve,
+ JavaString* strName = 0);
/// internalConstructType - Hashes a Typedef, an internal representation of
/// a class still not loaded.
@@ -145,12 +146,14 @@
/// loadName - Loads the class of the given name.
///
- UserClass* loadName(const UTF8* name, bool doResolve, bool doThrow);
+ UserClass* loadName(const UTF8* name, bool doResolve, bool doThrow,
+ JavaString* strName = 0);
/// loadClassFromUTF8 - Lookup a class from an UTF8 name and load it.
///
UserCommonClass* loadClassFromUserUTF8(const UTF8* utf8,
- bool doResolve, bool doThrow);
+ bool doResolve, bool doThrow,
+ JavaString* strName = 0);
/// loadClassFromAsciiz - Lookup a class from an asciiz name and load it.
///
@@ -290,7 +293,8 @@
private:
/// internalLoad - Load the class with the given name.
///
- virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve);
+ virtual UserClass* internalLoad(const UTF8* utf8, bool doResolve,
+ JavaString* strName = 0);
/// bootClasspath - List of paths for the base classes.
///
More information about the vmkit-commits
mailing list