[vmkit-commits] [vmkit] r55044 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.h JavaConstantPool.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Wed Aug 20 03:36:39 PDT 2008


Author: geoffray
Date: Wed Aug 20 05:36:39 2008
New Revision: 55044

URL: http://llvm.org/viewvc/llvm-project?rev=55044&view=rev
Log:
Typo, + verify a class is shared if it is referenced by a shared class in
the constant pool.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
    vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Wed Aug 20 05:36:39 2008
@@ -439,7 +439,7 @@
 
 #ifdef MULTIPLE_VM
   bool isSharedClass() {
-    return loader == JnjvmClassLoader::sharedLoader;
+    return classLoader == JnjvmClassLoader::sharedLoader;
   }
 #endif
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp Wed Aug 20 05:36:39 2008
@@ -290,12 +290,17 @@
     JnjvmClassLoader* loader = classDef->classLoader;
     const UTF8* name = UTF8At(ctpDef[index]);
     if (name->elements[0] == AssessorDesc::I_TAB) {
-      // Don't put into ctpRes because the class can be isolate specific
       temp = loader->constructArray(name);
     } else {
       // Put into ctpRes because there is only one representation of the class
-      ctpRes[index] = temp = loader->loadName(name, false, false, false);
+      temp = loader->loadName(name, false, false, false);
     }
+#ifdef MULTIPLE_VM
+    if (classDef->isSharedClass() && !temp->isSharedClass()) {
+      JavaThread::get()->isolate->unknownError("Class sharing violation");
+    }
+#endif
+    ctpRes[index] = temp;
   }
   return temp;
 }
@@ -309,6 +314,11 @@
     if (!temp) 
       temp = JnjvmClassLoader::bootstrapLoader->lookupClass(name);
   }
+#ifdef MULTIPLE_VM
+    if (temp && classDef->isSharedClass() && !temp->isSharedClass()) {
+      JavaThread::get()->isolate->unknownError("Class sharing violation");
+    }
+#endif
   return temp;
 }
 





More information about the vmkit-commits mailing list