[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