[vmkit-commits] [vmkit] r57308 - in /vmkit/trunk/lib/JnJVM: Classpath/ClasspathVMClass.cpp Classpath/ClasspathVMClassLoader.cpp Classpath/ClasspathVMThrowable.cpp VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaObject.h VMCore/JavaString.cpp VMCore/Jni.cpp VMCore/Jnjvm.cpp VMCore/Jnjvm.h VMCore/NativeUtil.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Oct 8 13:48:09 PDT 2008
Author: geoffray
Date: Wed Oct 8 15:48:07 2008
New Revision: 57308
URL: http://llvm.org/viewvc/llvm-project?rev=57308&view=rev
Log:
Add an UTF8 map to vms.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h
vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClass.cpp Wed Oct 8 15:48:07 2008
@@ -162,8 +162,7 @@
(UserCommonClass*)vm->upcalls->vmdataClass->getObjectField((JavaObject*)Cl);
const UTF8* iname = cl->getName();
- const UTF8* res = iname->internalToJava(cl->classLoader->hashUTF8, 0,
- iname->size);
+ const UTF8* res = iname->internalToJava(vm->hashUTF8, 0, iname->size);
return (jobject)(vm->UTF8ToStr(res));
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp Wed Oct 8 15:48:07 2008
@@ -98,7 +98,7 @@
JnjvmClassLoader::getJnjvmLoaderFromJavaObject((JavaObject*)loader, vm);
JavaString* str = (JavaString*)_str;
- const UTF8* name = str->value->javaToInternal(JCL->hashUTF8, str->offset,
+ const UTF8* name = str->value->javaToInternal(vm->hashUTF8, str->offset,
str->count);
UserClass* cl = JCL->constructClass(name, (ArrayUInt8*)bytes);
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp Wed Oct 8 15:48:07 2008
@@ -52,7 +52,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaObject* methodName = vm->UTF8ToStr(meth->name);
Class* cl = meth->classDef;
- const UTF8* internal = cl->name->internalToJava(cl->classLoader->hashUTF8, 0,
+ const UTF8* internal = cl->name->internalToJava(vm->hashUTF8, 0,
cl->name->size);
JavaObject* className = vm->UTF8ToStr(internal);
JavaObject* sourceName = 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Wed Oct 8 15:48:07 2008
@@ -497,7 +497,7 @@
return false;
}
-bool UserCommonClass::isOfTypeName(const UTF8* Tname) {
+bool UserCommonClass::isOfTypeName(Jnjvm* vm, const UTF8* Tname) {
if (inheritName(Tname)) {
return true;
} else if (isArray()) {
@@ -515,7 +515,7 @@
}
return (Tname->elements[prof] == I_REF) &&
- (res && curS->inheritName(Tname->extract(classLoader->hashUTF8, prof + 1,
+ (res && curS->inheritName(Tname->extract(vm->hashUTF8, prof + 1,
len - 1)));
} else {
return false;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Wed Oct 8 15:48:07 2008
@@ -431,7 +431,7 @@
/// isOfTypeName - Does this class inherits the given name? Equality is on
/// the name. This function takes into account array classes.
///
- bool isOfTypeName(const UTF8* Tname);
+ bool isOfTypeName(Jnjvm* vm, const UTF8* Tname);
/// implements - Does this class implement the given class? Returns true if
/// the class is in the interface class hierarchy.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.h Wed Oct 8 15:48:07 2008
@@ -161,13 +161,6 @@
this->lock = 0;
}
- /// instanceOfString - Is this object's class of type the given name?
- ///
- bool instanceOfString(const UTF8* name) {
- if (!this) return false;
- else return this->classOf->isOfTypeName(name);
- }
-
/// instanceOf - Is this object's class of type the given class?
///
bool instanceOf(UserCommonClass* cl) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp Wed Oct 8 15:48:07 2008
@@ -48,9 +48,7 @@
const UTF8* JavaString::strToUTF8(Jnjvm* vm) {
const UTF8* utf8 = this->value;
if (offset || (offset + count <= utf8->size)) {
- // TODO find a way to get a relevant hashUTF8
- UTF8Map* map = vm->bootstrapLoader->hashUTF8;
- return utf8->extract(map, offset, offset + count);
+ return utf8->extract(vm->hashUTF8, offset, offset + count);
} else {
return utf8;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Wed Oct 8 15:48:07 2008
@@ -90,7 +90,7 @@
const UTF8* utf8 = loader->asciizConstructUTF8(asciiz);
sint32 len = utf8->size;
- const UTF8* internal = utf8->javaToInternal(loader->hashUTF8, 0, len);
+ const UTF8* internal = utf8->javaToInternal(vm->hashUTF8, 0, len);
UserCommonClass* cl = loader->lookupClassFromUTF8(internal, true, true);
cl->initialiseClass(vm);
return (jclass)(cl->getClassDelegatee(vm));
@@ -327,15 +327,14 @@
BEGIN_EXCEPTION
- // TODO: find a better place for creating UTF8
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
UserClass* methodCl = 0;
JavaMethod* meth = cl->lookupMethod(
- name->javaToInternal(cl->classLoader->hashUTF8, 0, name->size),
- type->javaToInternal(cl->classLoader->hashUTF8, 0, type->size), false,
+ name->javaToInternal(vm->hashUTF8, 0, name->size),
+ type->javaToInternal(vm->hashUTF8, 0, type->size), false,
true, methodCl);
return (jmethodID)meth;
@@ -1120,15 +1119,14 @@
BEGIN_EXCEPTION
- // TODO: find a better place to store the UTF8
Jnjvm* vm = JavaThread::get()->isolate;
UserCommonClass* cl = NativeUtil::resolvedImplClass(vm, clazz, true);
const UTF8* name = cl->classLoader->asciizConstructUTF8(aname);
const UTF8* type = cl->classLoader->asciizConstructUTF8(atype);
UserClass* methodCl = 0;
JavaMethod* meth = cl->lookupMethod(
- name->javaToInternal(cl->classLoader->hashUTF8, 0, name->size),
- type->javaToInternal(cl->classLoader->hashUTF8, 0, type->size), true,
+ name->javaToInternal(vm->hashUTF8, 0, name->size),
+ type->javaToInternal(vm->hashUTF8, 0, type->size), true,
true, methodCl);
return (jmethodID)meth;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Oct 8 15:48:07 2008
@@ -889,5 +889,12 @@
isolate->primitiveMap[I_DOUBLE] = isolate->upcalls->OfDouble;
isolate->upcalls->initialiseClasspath(bootstrapLoader);
+
+#if defined(ISOLATE) || defined(ISOLATE_SHARING)
+ isolate->hashUTF8 = new UTF8Map(&isolate->allocator,
+ isolate->upcalls->ArrayOfChar);
+#else
+ isolate->hashUTF8 = isolate->bootstrapLoader->hashUTF8;
+#endif
return isolate;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Wed Oct 8 15:48:07 2008
@@ -272,6 +272,11 @@
/// hashStr - Hash map of java/lang/String objects allocated by this JVM.
///
StringMap * hashStr;
+
+ /// hashUTF8 - Tables of UTF8s defined by this class loader. Shared
+ /// by all class loaders in a no isolation configuration.
+ ///
+ UTF8Map* hashUTF8;
public:
/// Exceptions - These are the only exceptions VMKit will make.
Modified: vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp?rev=57308&r1=57307&r2=57308&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/NativeUtil.cpp Wed Oct 8 15:48:07 2008
@@ -240,7 +240,7 @@
const Typedef* signature) {
if (!signature->isPrimitive()) {
- if (obj && !(obj->classOf->isOfTypeName(signature->getName()))) {
+ if (obj && !(obj->classOf->isOfTypeName(vm, signature->getName()))) {
vm->illegalArgumentException("wrong type argument");
}
((JavaObject**)buf)[0] = obj;
More information about the vmkit-commits
mailing list