[vmkit-commits] [vmkit] r58194 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaJITOpcodes.cpp Jnjvm.cpp Jnjvm.h JnjvmClassLoader.cpp JnjvmClassLoader.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Oct 26 11:43:36 PDT 2008


Author: geoffray
Date: Sun Oct 26 13:43:36 2008
New Revision: 58194

URL: http://llvm.org/viewvc/llvm-project?rev=58194&view=rev
Log:
Move the array class table to the bootstrap loader.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Sun Oct 26 13:43:36 2008
@@ -1840,7 +1840,9 @@
           uint8 id = bytecodes[++i];
           uint8 charId = arrayType(id);
 #ifndef ISOLATE_SHARING
-          dcl = JavaThread::get()->isolate->arrayClasses[id - 4];
+          JnjvmBootstrapLoader* loader = 
+            compilingClass->classLoader->bootstrapLoader;
+          dcl = loader->getArrayClass(id);
 #else
           std::vector<Value*> args;
           args.push_back(isolateLocal);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Sun Oct 26 13:43:36 2008
@@ -795,17 +795,7 @@
   bootstrapLoader = loader;
   upcalls = bootstrapLoader->upcalls;
 
-#ifdef ISOLATE_SHARING
   throwable = upcalls->newThrowable;
-#endif
-  arrayClasses[JavaArray::T_BOOLEAN - 4] = upcalls->ArrayOfBool;
-  arrayClasses[JavaArray::T_BYTE - 4] = upcalls->ArrayOfByte;
-  arrayClasses[JavaArray::T_CHAR - 4] = upcalls->ArrayOfChar;
-  arrayClasses[JavaArray::T_SHORT - 4] = upcalls->ArrayOfShort;
-  arrayClasses[JavaArray::T_INT - 4] = upcalls->ArrayOfInt;
-  arrayClasses[JavaArray::T_FLOAT - 4] = upcalls->ArrayOfFloat;
-  arrayClasses[JavaArray::T_LONG - 4] = upcalls->ArrayOfLong;
-  arrayClasses[JavaArray::T_DOUBLE - 4] = upcalls->ArrayOfDouble;
   
   upcalls->initialiseClasspath(bootstrapLoader);
  

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Sun Oct 26 13:43:36 2008
@@ -88,10 +88,11 @@
   ///
   mvm::BumpPtrAllocator allocator;
   mvm::Allocator gcAllocator;
-#ifdef ISOLATE_SHARING
+  
+  /// throwable - The java/lang/Throwable class. In an isolate
+  /// environment, generated code references this field.
   UserClass* throwable;
-#endif
-  std::map<const char, UserClassArray*> arrayClasses;
+
 private:
   
   /// bootstrapThread - The initial thread of this JVM.

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sun Oct 26 13:43:36 2008
@@ -218,6 +218,15 @@
   primitiveMap[I_FLOAT] = upcalls->OfFloat;
   primitiveMap[I_LONG] = upcalls->OfLong;
   primitiveMap[I_DOUBLE] = upcalls->OfDouble;
+
+  arrayTable[JavaArray::T_BOOLEAN - 4] = upcalls->ArrayOfBool;
+  arrayTable[JavaArray::T_BYTE - 4] = upcalls->ArrayOfByte;
+  arrayTable[JavaArray::T_CHAR - 4] = upcalls->ArrayOfChar;
+  arrayTable[JavaArray::T_SHORT - 4] = upcalls->ArrayOfShort;
+  arrayTable[JavaArray::T_INT - 4] = upcalls->ArrayOfInt;
+  arrayTable[JavaArray::T_FLOAT - 4] = upcalls->ArrayOfFloat;
+  arrayTable[JavaArray::T_LONG - 4] = upcalls->ArrayOfLong;
+  arrayTable[JavaArray::T_DOUBLE - 4] = upcalls->ArrayOfDouble;
 }
 
 JnjvmClassLoader::JnjvmClassLoader(JnjvmClassLoader& JCL, JavaObject* loader,

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Sun Oct 26 13:43:36 2008
@@ -337,12 +337,19 @@
   const UTF8* tanh;
   const UTF8* finalize;
 
-  /// primitiveMap - Map of primitives, hashed by id.
+  /// primitiveMap - Map of primitive classes, hashed by id.
   std::map<const char, UserClassPrimitive*> primitiveMap;
 
   UserClassPrimitive* getPrimitiveClass(char id) {
     return primitiveMap[id];
   }
+
+  /// arrayTable - Table of array classes.
+  UserClassArray* arrayTable[8];
+
+  UserClassArray* getArrayClass(unsigned id) {
+    return arrayTable[id - 4];
+  }
 };
 
 } // end namespace jnjvm





More information about the vmkit-commits mailing list