[vmkit-commits] [vmkit] r56214 - in /vmkit/branches/isolate/lib/JnJVM/VMCore: JavaInitialise.cpp JavaTypes.cpp JavaTypes.h JavaUpcalls.cpp JavaUpcalls.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Sep 15 06:28:35 PDT 2008


Author: geoffray
Date: Mon Sep 15 08:28:34 2008
New Revision: 56214

URL: http://llvm.org/viewvc/llvm-project?rev=56214&view=rev
Log:
Set the primitive classes at boot time, not when initializing AssessorDescs.


Modified:
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=56214&r1=56213&r2=56214&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp Mon Sep 15 08:28:34 2008
@@ -141,6 +141,16 @@
   
   // End array initialization
   
+  JCL->upcalls->OfByte = UPCALL_PRIMITIVE_CLASS(JCL, "B", 1);
+  JCL->upcalls->OfBool = UPCALL_PRIMITIVE_CLASS(JCL, "Z", 1);
+  JCL->upcalls->OfChar = UPCALL_PRIMITIVE_CLASS(JCL, "C", 2);
+  JCL->upcalls->OfShort = UPCALL_PRIMITIVE_CLASS(JCL, "S", 2);
+  JCL->upcalls->OfInt = UPCALL_PRIMITIVE_CLASS(JCL, "I", 4);
+  JCL->upcalls->OfLong = UPCALL_PRIMITIVE_CLASS(JCL, "J", 8);
+  JCL->upcalls->OfFloat = UPCALL_PRIMITIVE_CLASS(JCL, "F", 4);
+  JCL->upcalls->OfDouble = UPCALL_PRIMITIVE_CLASS(JCL, "D", 8);
+  JCL->upcalls->OfVoid = UPCALL_PRIMITIVE_CLASS(JCL, "V", 0);
+
   AssessorDesc::initialise(JCL);
 
   Attribut::codeAttribut = JCL->asciizConstructUTF8("Code");

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp?rev=56214&r1=56213&r2=56214&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp Mon Sep 15 08:28:34 2008
@@ -56,7 +56,8 @@
 AssessorDesc::AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
                            const char* name,
                            JnjvmClassLoader* loader, uint8 nid,
-                           const char* assocName, UserClassArray* cl,
+                           const char* assocName,
+                           UserClassPrimitive* prim, UserClassArray* cl,
                            arrayCtor_t ctor) {
   AssessorDesc* res = this;
   res->numId = nid;
@@ -75,7 +76,7 @@
     res->assocClassName = 0;
   
   if (bid != I_PARG && bid != I_PARD && bid != I_REF && bid != I_TAB) {
-    res->primitiveClass = new UserClassPrimitive(loader, res->UTF8Name, nb);
+    res->primitiveClass = prim;
     if (res->arrayClass) {
       res->arrayClass->_baseClass = res->primitiveClass;
       res->arrayClass->_funcs = res;
@@ -89,53 +90,62 @@
 void AssessorDesc::initialise(JnjvmBootstrapLoader* vm) {
 
   dParg = new AssessorDesc(false, I_PARG, 0, 0, "(", vm, 0, 0, 0,
-                                 0);
+                                 0, 0);
   dPard = new AssessorDesc(false, I_PARD, 0, 0, ")", vm, 0, 0, 0,
-                                 0);
+                                 0, 0);
   dVoid = new AssessorDesc(false, I_VOID, 0, 0, "void",
-                                 vm, VOID_ID, "java/lang/Void", 0, 0);
+                                 vm, VOID_ID, "java/lang/Void",
+                                 vm->upcalls->OfVoid, 0, 0);
   dBool = new AssessorDesc(false, I_BOOL, 1, 1, "boolean", 
                                  vm,
                                  BOOL_ID, "java/lang/Boolean", 
+                                 vm->upcalls->OfBool,
                                  vm->upcalls->ArrayOfBool,
                                  (arrayCtor_t)ArrayUInt8::acons);
   dByte = new AssessorDesc(false, I_BYTE, 1, 1, "byte",
                                  vm, BYTE_ID, "java/lang/Byte",
+                                 vm->upcalls->OfByte,
                                  vm->upcalls->ArrayOfByte,
                                  (arrayCtor_t)ArraySInt8::acons);
   dChar = new AssessorDesc(false, I_CHAR, 2, 1, "char",
                                  vm, CHAR_ID, "java/lang/Character",
+                                 vm->upcalls->OfChar,
                                  vm->upcalls->ArrayOfChar,
                                  (arrayCtor_t)ArrayUInt16::acons);
   dShort = new AssessorDesc(false, I_SHORT, 2, 1, "short", 
                                   vm, SHORT_ID,
                                   "java/lang/Short",
+                                  vm->upcalls->OfShort,
                                   vm->upcalls->ArrayOfShort,
                                   (arrayCtor_t)ArraySInt16::acons);
   dInt = new AssessorDesc(false, I_INT, 4, 1, "int", vm,
                                 INT_ID, "java/lang/Integer",
+                                vm->upcalls->OfInt,
                                 vm->upcalls->ArrayOfInt,
                                 (arrayCtor_t)ArraySInt32::acons);
   dFloat = new AssessorDesc(false, I_FLOAT, 4, 1, "float", 
                                   vm,
                                   FLOAT_ID, "java/lang/Float",
+                                  vm->upcalls->OfFloat,
                                   vm->upcalls->ArrayOfFloat,
                                   (arrayCtor_t)ArrayFloat::acons);
   dLong = new AssessorDesc(false, I_LONG, 8, 2, "long", 
                                  vm, LONG_ID, "java/lang/Long",
+                                 vm->upcalls->OfLong,
                                  vm->upcalls->ArrayOfLong,
                                   (arrayCtor_t)ArrayLong::acons);
   dDouble = new AssessorDesc(false, I_DOUBLE, 8, 2, "double", 
                                    vm,
                                    DOUBLE_ID, "java/lang/Double",
+                                   vm->upcalls->OfDouble,
                                    vm->upcalls->ArrayOfDouble,
                                    (arrayCtor_t)ArrayDouble::acons);
   dTab = new AssessorDesc(true, I_TAB, sizeof(void*), 1, "array",
-                                vm, ARRAY_ID, 0, 0,
+                                vm, ARRAY_ID, 0, 0, 0,
                                 (arrayCtor_t)ArrayObject::acons);
   dRef = new AssessorDesc(true, I_REF, sizeof(void*), 1, "reference",
                                 vm, OBJECT_ID,
-                                0, 0, 
+                                0, 0, 0,
                                 (arrayCtor_t)ArrayObject::acons);
   
 }

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h?rev=56214&r1=56213&r2=56214&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h Mon Sep 15 08:28:34 2008
@@ -186,7 +186,8 @@
   AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
                const char* name,
                JnjvmClassLoader* loader, uint8 nid,
-               const char* assocName, UserClassArray* cl,
+               const char* assocName, 
+               UserClassPrimitive* prim, UserClassArray* cl,
                arrayCtor_t ctor);
 
 

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=56214&r1=56213&r2=56214&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp Mon Sep 15 08:28:34 2008
@@ -193,6 +193,16 @@
 ClassArray* Classpath::ArrayOfDouble;
 ClassArray* Classpath::ArrayOfObject;
 
+ClassPrimitive* Classpath::OfByte;
+ClassPrimitive* Classpath::OfChar;
+ClassPrimitive* Classpath::OfInt;
+ClassPrimitive* Classpath::OfShort;
+ClassPrimitive* Classpath::OfBool;
+ClassPrimitive* Classpath::OfLong;
+ClassPrimitive* Classpath::OfFloat;
+ClassPrimitive* Classpath::OfDouble;
+ClassPrimitive* Classpath::OfVoid;
+
 JavaField* Classpath::methodClass;
 JavaField* Classpath::fieldClass;
 JavaField* Classpath::constructorClass;
@@ -234,6 +244,7 @@
 }
 
 void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
+
   newClassLoader = 
     UPCALL_CLASS(loader, "java/lang/ClassLoader");
   

Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h?rev=56214&r1=56213&r2=56214&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h Mon Sep 15 08:28:34 2008
@@ -15,6 +15,9 @@
 #define UPCALL_CLASS(vm, name)                                             \
   vm->loadName(vm->asciizConstructUTF8(name), false, false)                        
 
+#define UPCALL_PRIMITIVE_CLASS(loader, name, nb)                              \
+  new UserClassPrimitive(loader, loader->asciizConstructUTF8(name), nb)                        
+
 #define UPCALL_FIELD(vm, cl, name, type, acc)                              \
   UPCALL_CLASS(vm, cl)->constructField(vm->asciizConstructUTF8(name),      \
                                        vm->asciizConstructUTF8(type), acc)
@@ -207,7 +210,6 @@
 
   ISOLATE_STATIC UserClassArray* ArrayOfByte;
   ISOLATE_STATIC UserClassArray* ArrayOfChar;
-  ISOLATE_STATIC UserClassArray* ArrayOfString;
   ISOLATE_STATIC UserClassArray* ArrayOfInt;
   ISOLATE_STATIC UserClassArray* ArrayOfShort;
   ISOLATE_STATIC UserClassArray* ArrayOfBool;
@@ -215,6 +217,17 @@
   ISOLATE_STATIC UserClassArray* ArrayOfFloat;
   ISOLATE_STATIC UserClassArray* ArrayOfDouble;
   ISOLATE_STATIC UserClassArray* ArrayOfObject;
+  ISOLATE_STATIC UserClassArray* ArrayOfString;
+  
+  ISOLATE_STATIC UserClassPrimitive* OfByte;
+  ISOLATE_STATIC UserClassPrimitive* OfChar;
+  ISOLATE_STATIC UserClassPrimitive* OfInt;
+  ISOLATE_STATIC UserClassPrimitive* OfShort;
+  ISOLATE_STATIC UserClassPrimitive* OfBool;
+  ISOLATE_STATIC UserClassPrimitive* OfLong;
+  ISOLATE_STATIC UserClassPrimitive* OfFloat;
+  ISOLATE_STATIC UserClassPrimitive* OfDouble;
+  ISOLATE_STATIC UserClassPrimitive* OfVoid;
   
   ISOLATE_STATIC JavaField* methodClass;
   ISOLATE_STATIC JavaField* fieldClass;





More information about the vmkit-commits mailing list