[vmkit-commits] [vmkit] r56350 - in /vmkit/branches/isolate/lib/JnJVM: Classpath/Classpath.cpp Classpath/ClasspathVMClassLoader.cpp.inc VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/JavaConstantPool.cpp VMCore/JavaJITOpcodes.cpp VMCore/JavaRuntimeJIT.cpp VMCore/JavaTypes.cpp VMCore/JavaTypes.h VMCore/JavaUpcalls.h VMCore/Jni.cpp VMCore/Jnjvm.cpp VMCore/JnjvmClassLoader.cpp VMCore/JnjvmClassLoader.h VMCore/JnjvmModule.cpp VMCore/NativeUtil.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Fri Sep 19 08:22:36 PDT 2008


Author: geoffray
Date: Fri Sep 19 10:22:36 2008
New Revision: 56350

URL: http://llvm.org/viewvc/llvm-project?rev=56350&view=rev
Log:
Removal of the AssessorDesc class.


Modified:
    vmkit/branches/isolate/lib/JnJVM/Classpath/Classpath.cpp
    vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h
    vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h
    vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h
    vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModule.cpp
    vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp

Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/Classpath.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/Classpath.cpp?rev=56350&r1=56349&r2=56350&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/Classpath.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/Classpath.cpp Fri Sep 19 10:22:36 2008
@@ -179,8 +179,8 @@
   UserCommonClass* base = NativeUtil::resolvedImplClass(arrayType, true);
   JnjvmClassLoader* loader = base->classLoader;
   const UTF8* name = base->getName();
-  const UTF8* arrayName = AssessorDesc::constructArrayName(loader, 1, name);
-  UserClassArray* array = loader->constructArray(arrayName);
+  const UTF8* arrayName = loader->constructArrayName(1, name);
+  UserClassArray* array = loader->constructArray(arrayName, base);
   ArrayObject* res = ArrayObject::acons(arrayLength, array, &(vm->allocator));
 
   return (jobject) res;

Modified: vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc?rev=56350&r1=56349&r2=56350&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc (original)
+++ vmkit/branches/isolate/lib/JnJVM/Classpath/ClasspathVMClassLoader.cpp.inc Fri Sep 19 10:22:36 2008
@@ -33,7 +33,8 @@
 jchar byteId) {
   
   Jnjvm* vm = JavaThread::get()->isolate;
-  UserClassPrimitive* prim = AssessorDesc::byteIdToPrimitive(byteId, vm->upcalls);
+  UserClassPrimitive* prim = 
+    UserClassPrimitive::byteIdToPrimitive(byteId, vm->upcalls);
   if (!prim)
     vm->unknownError("unknown byte primitive %c", byteId);
   

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.cpp Fri Sep 19 10:22:36 2008
@@ -171,10 +171,10 @@
                                  unsigned int end,  mvm::PrintBuffer* buf) {
   
   uint16 first = name->elements[start];
-  if (first == AssessorDesc::I_TAB) {
+  if (first == I_TAB) {
     unsigned int stepsEnd = start;
-    while (name->elements[stepsEnd] == AssessorDesc::I_TAB) stepsEnd++;
-    if (name->elements[stepsEnd] == AssessorDesc::I_REF) {
+    while (name->elements[stepsEnd] == I_TAB) stepsEnd++;
+    if (name->elements[stepsEnd] == I_REF) {
       printClassNameIntern(name, (stepsEnd + 1),(end - 1), buf);
     } else {
       name->print(buf);
@@ -227,6 +227,33 @@
   }
 }
 
+
+UserClassPrimitive* 
+ClassPrimitive::byteIdToPrimitive(char id, Classpath* upcalls) {
+  switch (id) {
+    case I_FLOAT :
+      return upcalls->OfFloat;
+    case I_INT :
+      return upcalls->OfInt;
+    case I_SHORT :
+      return upcalls->OfShort;
+    case I_CHAR :
+      return upcalls->OfChar;
+    case I_DOUBLE :
+      return upcalls->OfDouble;
+    case I_BYTE :
+      return upcalls->OfByte;
+    case I_BOOL :
+      return upcalls->OfBool;
+    case I_LONG :
+      return upcalls->OfLong;
+    case I_VOID :
+      return upcalls->OfVoid;
+    default :
+      return 0;
+  }
+}
+
 CommonClass::CommonClass(JnjvmClassLoader* loader, const UTF8* n,
                          bool isArray) {
   name = n;
@@ -475,7 +502,7 @@
     uint32 len = Tname->size;
     bool res = true;
     
-    while (res && Tname->elements[prof] == AssessorDesc::I_TAB) {
+    while (res && Tname->elements[prof] == I_TAB) {
       UserCommonClass* cl = ((UserClassArray*)curS)->baseClass();
       ++prof;
       cl->resolveClass();
@@ -483,7 +510,7 @@
       curS = cl;
     }
     
-    return (Tname->elements[prof] == AssessorDesc::I_REF) &&  
+    return (Tname->elements[prof] == I_REF) &&  
       (res && curS->inheritName(Tname->extract(classLoader->hashUTF8, prof + 1,
                                                len - 1)));
   } else {

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h Fri Sep 19 10:22:36 2008
@@ -506,6 +506,9 @@
 class ClassPrimitive : public CommonClass {
 public:
   ClassPrimitive(JnjvmClassLoader* loader, const UTF8* name, uint32 nb);
+
+  static UserClassPrimitive* byteIdToPrimitive(char id, Classpath* upcalls);
+
 };
 
 

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp Fri Sep 19 10:22:36 2008
@@ -271,7 +271,7 @@
   if (!temp) {
     JnjvmClassLoader* loader = classDef->classLoader;
     const UTF8* name = UTF8At(ctpDef[index]);
-    if (name->elements[0] == AssessorDesc::I_TAB) {
+    if (name->elements[0] == I_TAB) {
       temp = loader->constructArray(name);
       temp->resolveClass();
     } else {

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Fri Sep 19 10:22:36 2008
@@ -43,6 +43,28 @@
 using namespace jnjvm;
 using namespace llvm;
 
+uint8 arrayType(unsigned int t) {
+  if (t == JavaArray::T_CHAR) {
+    return I_CHAR;
+  } else if (t == JavaArray::T_BOOLEAN) {
+    return I_BOOL;
+  } else if (t == JavaArray::T_INT) {
+    return I_INT;
+  } else if (t == JavaArray::T_SHORT) {
+    return I_SHORT;
+  } else if (t == JavaArray::T_BYTE) {
+    return I_BYTE;
+  } else if (t == JavaArray::T_FLOAT) {
+    return I_FLOAT;
+  } else if (t == JavaArray::T_LONG) {
+    return I_LONG;
+  } else if (t == JavaArray::T_DOUBLE) {
+    return I_DOUBLE;
+  } else {
+    JavaThread::get()->isolate->unknownError("unknown array type %d\n", t);
+    return 0;
+  }
+}
 
 static inline sint8 readS1(uint8* bytecode, uint32& i) {
   return ((sint8*)bytecode)[++i];
@@ -1815,7 +1837,7 @@
 
         if (bytecodes[i] == NEWARRAY) {
           uint8 id = bytecodes[++i];
-          uint8 charId = AssessorDesc::arrayType(id);
+          uint8 charId = arrayType(id);
 #ifndef MULTIPLE_VM
           dcl = JavaThread::get()->isolate->arrayClasses[id - 4];
 #else
@@ -1836,8 +1858,7 @@
             compilingClass->ctpInfo->resolveClassName(index);
         
           JnjvmClassLoader* JCL = compilingClass->classLoader;
-          const UTF8* arrayName = 
-            AssessorDesc::constructArrayName(JCL, 1, className);
+          const UTF8* arrayName = JCL->constructArrayName(1, className);
         
           dcl = JCL->constructArray(arrayName);
 #else

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Fri Sep 19 10:22:36 2008
@@ -172,8 +172,7 @@
 
 extern "C" UserClassArray* getArrayClass(UserCommonClass* cl) {
   JnjvmClassLoader* JCL = cl->classLoader;
-  const UTF8* arrayName = 
-    AssessorDesc::constructArrayName(JCL, 1, cl->getName());
+  const UTF8* arrayName = JCL->constructArrayName(1, cl->getName());
         
   UserClassArray* dcl = JCL->constructArray(arrayName);
   return dcl;

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=56350&r1=56349&r2=56350&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp Fri Sep 19 10:22:36 2008
@@ -23,21 +23,7 @@
 
 using namespace jnjvm;
 
-const char AssessorDesc::I_TAB = '[';
-const char AssessorDesc::I_END_REF = ';';
-const char AssessorDesc::I_PARG = '(';
-const char AssessorDesc::I_PARD = ')';
-const char AssessorDesc::I_BYTE = 'B';
-const char AssessorDesc::I_CHAR = 'C';
-const char AssessorDesc::I_DOUBLE = 'D';
-const char AssessorDesc::I_FLOAT = 'F';
-const char AssessorDesc::I_INT = 'I';
-const char AssessorDesc::I_LONG = 'J';
-const char AssessorDesc::I_REF = 'L';
-const char AssessorDesc::I_SHORT = 'S';
-const char AssessorDesc::I_VOID = 'V';
-const char AssessorDesc::I_BOOL = 'Z';
-const char AssessorDesc::I_SEP = '/';
+
 
 static void typeError(const UTF8* name, short int l) {
   if (l != 0) {
@@ -50,9 +36,8 @@
 }
 
 
-bool AssessorDesc::analyseIntern(const UTF8* name, uint32 pos,
-                                 uint32 meth,
-                                 uint32& ret) {
+static bool analyseIntern(const UTF8* name, uint32 pos, uint32 meth,
+                          uint32& ret) {
   short int cur = name->elements[pos];
   switch (cur) {
     case I_PARD :
@@ -106,58 +91,6 @@
   return false;
 }
 
-const UTF8* AssessorDesc::constructArrayName(JnjvmClassLoader *loader,
-                                             uint32 steps,
-                                             const UTF8* className) {
-  uint32 len = className->size;
-  uint32 pos = steps;
-  bool isTab = (className->elements[0] == I_TAB ? true : false);
-  uint32 n = steps + len + (isTab ? 0 : 2);
-  uint16* buf = (uint16*)alloca(n * sizeof(uint16));
-    
-  for (uint32 i = 0; i < steps; i++) {
-    buf[i] = I_TAB;
-  }
-
-  if (!isTab) {
-    ++pos;
-    buf[steps] = I_REF;
-  }
-
-  for (uint32 i = 0; i < len; i++) {
-    buf[pos + i] = className->elements[i];
-  }
-
-  if (!isTab) {
-    buf[n - 1] = I_END_REF;
-  }
-
-  return loader->readerConstructUTF8(buf, n);
-}
-
-uint8 AssessorDesc::arrayType(unsigned int t) {
-  if (t == JavaArray::T_CHAR) {
-    return I_CHAR;
-  } else if (t == JavaArray::T_BOOLEAN) {
-    return I_BOOL;
-  } else if (t == JavaArray::T_INT) {
-    return I_INT;
-  } else if (t == JavaArray::T_SHORT) {
-    return I_SHORT;
-  } else if (t == JavaArray::T_BYTE) {
-    return I_BYTE;
-  } else if (t == JavaArray::T_FLOAT) {
-    return I_FLOAT;
-  } else if (t == JavaArray::T_LONG) {
-    return I_LONG;
-  } else if (t == JavaArray::T_DOUBLE) {
-    return I_DOUBLE;
-  } else {
-    JavaThread::get()->isolate->unknownError("unknown array type %d\n", t);
-    return 0;
-  }
-}
-
 void PrimitiveTypedef::tPrintBuf(mvm::PrintBuffer* buf) const {
   prim->name->print(buf);
 }
@@ -170,32 +103,6 @@
   CommonClass::printClassName(pseudoAssocClassName, buf);
 }
 
-UserClassPrimitive* 
-AssessorDesc::byteIdToPrimitive(char id, Classpath* upcalls) {
-  switch (id) {
-    case I_FLOAT :
-      return upcalls->OfFloat;
-    case I_INT :
-      return upcalls->OfInt;
-    case I_SHORT :
-      return upcalls->OfShort;
-    case I_CHAR :
-      return upcalls->OfChar;
-    case I_DOUBLE :
-      return upcalls->OfDouble;
-    case I_BYTE :
-      return upcalls->OfByte;
-    case I_BOOL :
-      return upcalls->OfBool;
-    case I_LONG :
-      return upcalls->OfLong;
-    case I_VOID :
-      return upcalls->OfVoid;
-    default :
-      return 0;
-  }
-}
-
 const char* Typedef::printString() const {
   mvm::PrintBuffer *buf= mvm::PrintBuffer::alloc();
   buf->write("Type<");
@@ -253,7 +160,7 @@
 
   while (pos < len) {
     pred = pos;
-    bool end = AssessorDesc::analyseIntern(name, pos, 0, pos);
+    bool end = analyseIntern(name, pos, 0, pos);
     if (end) break;
     else {
       buf.push_back(loader->constructType(name->extract(loader->hashUTF8, pred, pos)));
@@ -264,7 +171,7 @@
     typeError(name, 0);
   }
   
-  AssessorDesc::analyseIntern(name, pos, 0, pred);
+  analyseIntern(name, pos, 0, pred);
 
   if (pred != len) {
     typeError(name, 0);
@@ -286,10 +193,10 @@
   short int cur = name->elements[0];
   Typedef* res = 0;
   switch (cur) {
-    case AssessorDesc::I_TAB :
+    case I_TAB :
       res = new ArrayTypedef(name);
       break;
-    case AssessorDesc::I_REF :
+    case I_REF :
       res = new ObjectTypedef(name, map);
       break;
     default :

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=56350&r1=56349&r2=56350&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h Fri Sep 19 10:22:36 2008
@@ -45,42 +45,21 @@
 #define ARRAY_ID 10
 #define NUM_ASSESSORS 11
 
-/// AssessorDesc - Helpful functions to analyse UTF8s and ids and get
-/// either Typedefs or Classes.
-///
-class AssessorDesc {
-public:
-  static VirtualTable *VT;
-  static const char I_TAB;
-  static const char I_END_REF;
-  static const char I_PARG;
-  static const char I_PARD;
-  static const char I_BYTE;
-  static const char I_CHAR;
-  static const char I_DOUBLE;
-  static const char I_FLOAT;
-  static const char I_INT;
-  static const char I_LONG;
-  static const char I_REF;
-  static const char I_SHORT;
-  static const char I_VOID;
-  static const char I_BOOL;
-  static const char I_SEP;
-  
-  static bool analyseIntern(const UTF8* name, uint32 pos,
-                            uint32 meth,
-                            uint32& ret);
-
-  static const UTF8* constructArrayName(JnjvmClassLoader* loader,
-                                        uint32 steps, const UTF8* className);
-  
-  static uint8 arrayType(unsigned int t);
- 
-  static UserClassPrimitive* byteIdToPrimitive(char id, Classpath* upcalls);
-
-
-};
-
+static const char I_TAB = '[';
+static const char I_END_REF = ';';
+static const char I_PARG = '(';
+static const char I_PARD = ')';
+static const char I_BYTE = 'B';
+static const char I_CHAR = 'C';
+static const char I_DOUBLE = 'D';
+static const char I_FLOAT = 'F';
+static const char I_INT = 'I';
+static const char I_LONG = 'J';
+static const char I_REF = 'L';
+static const char I_SHORT = 'S';
+static const char I_VOID = 'V';
+static const char I_BOOL = 'Z';
+static const char I_SEP = '/';
 
 /// Typedef - Each class has a Typedef representation. A Typedef is also a class
 /// which has not been loaded yet. Typedefs are hashed on the name of the class.
@@ -181,39 +160,39 @@
   }
   
   bool isVoid() const {
-    return charId == AssessorDesc::I_VOID;
+    return charId == I_VOID;
   }
 
   bool isLong() const {
-    return charId == AssessorDesc::I_LONG;
+    return charId == I_LONG;
   }
 
   bool isInt() const {
-    return charId == AssessorDesc::I_INT;
+    return charId == I_INT;
   }
 
   bool isChar() const {
-    return charId == AssessorDesc::I_CHAR;
+    return charId == I_CHAR;
   }
 
   bool isShort() const {
-    return charId == AssessorDesc::I_SHORT;
+    return charId == I_SHORT;
   }
 
   bool isByte() const {
-    return charId == AssessorDesc::I_BYTE;
+    return charId == I_BYTE;
   }
 
   bool isBool() const {
-    return charId == AssessorDesc::I_BOOL;
+    return charId == I_BOOL;
   }
 
   bool isFloat() const {
-    return charId == AssessorDesc::I_FLOAT;
+    return charId == I_FLOAT;
   }
 
   bool isDouble() const {
-    return charId == AssessorDesc::I_DOUBLE;
+    return charId == I_DOUBLE;
   }
   
   /// JInfo - Holds info useful for the JIT.
@@ -313,7 +292,7 @@
   ///
   intptr_t _virtualCallAP; 
   intptr_t virtualCallAP();
-
+  
 public:
 
   /// args - The arguments as Typedef of this signature.

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=56350&r1=56349&r2=56350&view=diff

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h Fri Sep 19 10:22:36 2008
@@ -12,29 +12,28 @@
 
 #include "JnjvmConfig.h"
 
-#define UPCALL_CLASS(vm, name)                                             \
+#define UPCALL_CLASS(vm, name)                                                 \
   vm->loadName(vm->asciizConstructUTF8(name), false, false)                        
 
-#define UPCALL_PRIMITIVE_CLASS(loader, name, nb)                              \
+#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),      \
+#define UPCALL_FIELD(vm, cl, name, type, acc)                                  \
+  UPCALL_CLASS(vm, cl)->constructField(vm->asciizConstructUTF8(name),          \
                                        vm->asciizConstructUTF8(type), acc)
 
-#define UPCALL_METHOD(vm, cl, name, type, acc)                             \
-  UPCALL_CLASS(vm, cl)->constructMethod(vm->asciizConstructUTF8(name),     \
+#define UPCALL_METHOD(vm, cl, name, type, acc)                                 \
+  UPCALL_CLASS(vm, cl)->constructMethod(vm->asciizConstructUTF8(name),         \
                                         vm->asciizConstructUTF8(type), acc)
 
-#define UPCALL_ARRAY_CLASS(vm, name, depth)                                \
-  vm->constructArray(                                                      \
-    AssessorDesc::constructArrayName(vm, depth,                            \
-                                     vm->asciizConstructUTF8(name)))       
+#define UPCALL_ARRAY_CLASS(loader, name, depth)                                \
+  loader->constructArray(                                                      \
+    loader->constructArrayName(depth, loader->asciizConstructUTF8(name)))       
 
-#define UPCALL_CLASS_EXCEPTION(loader, name)                               \
+#define UPCALL_CLASS_EXCEPTION(loader, name)                                   \
   name = UPCALL_CLASS(loader, "java/lang/"#name)                           
 
-#define UPCALL_REFLECT_CLASS_EXCEPTION(loader, name)                       \
+#define UPCALL_REFLECT_CLASS_EXCEPTION(loader, name)                           \
   name = UPCALL_CLASS(loader, "java/lang/reflect/"#name)                   
 
 #define UPCALL_METHOD_EXCEPTION(loader, name) \

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jni.cpp Fri Sep 19 10:22:36 2008
@@ -1746,7 +1746,7 @@
   UserCommonClass* base = NativeUtil::resolvedImplClass(elementClass, true);
   JnjvmClassLoader* loader = base->classLoader;
   const UTF8* name = base->getName();
-  const UTF8* arrayName = AssessorDesc::constructArrayName(loader, 1, name);
+  const UTF8* arrayName = loader->constructArrayName(1, name);
   UserClassArray* array = loader->constructArray(arrayName);
   ArrayObject* res = ArrayObject::acons(length, array, &(vm->allocator));
   if (initialElement) {

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp Fri Sep 19 10:22:36 2008
@@ -865,15 +865,15 @@
   isolate->arrayClasses[JavaArray::T_DOUBLE - 4] = 
     isolate->upcalls->ArrayOfDouble;
 
-  isolate->primitiveMap[AssessorDesc::I_VOID] = isolate->upcalls->OfVoid;
-  isolate->primitiveMap[AssessorDesc::I_BOOL] = isolate->upcalls->OfBool;
-  isolate->primitiveMap[AssessorDesc::I_BYTE] = isolate->upcalls->OfByte;
-  isolate->primitiveMap[AssessorDesc::I_CHAR] = isolate->upcalls->OfChar;
-  isolate->primitiveMap[AssessorDesc::I_SHORT] = isolate->upcalls->OfShort;
-  isolate->primitiveMap[AssessorDesc::I_INT] = isolate->upcalls->OfInt;
-  isolate->primitiveMap[AssessorDesc::I_FLOAT] = isolate->upcalls->OfFloat;
-  isolate->primitiveMap[AssessorDesc::I_LONG] = isolate->upcalls->OfLong;
-  isolate->primitiveMap[AssessorDesc::I_DOUBLE] = isolate->upcalls->OfDouble;
+  isolate->primitiveMap[I_VOID] = isolate->upcalls->OfVoid;
+  isolate->primitiveMap[I_BOOL] = isolate->upcalls->OfBool;
+  isolate->primitiveMap[I_BYTE] = isolate->upcalls->OfByte;
+  isolate->primitiveMap[I_CHAR] = isolate->upcalls->OfChar;
+  isolate->primitiveMap[I_SHORT] = isolate->upcalls->OfShort;
+  isolate->primitiveMap[I_INT] = isolate->upcalls->OfInt;
+  isolate->primitiveMap[I_FLOAT] = isolate->upcalls->OfFloat;
+  isolate->primitiveMap[I_LONG] = isolate->upcalls->OfLong;
+  isolate->primitiveMap[I_DOUBLE] = isolate->upcalls->OfDouble;
   
   isolate->upcalls->initialiseClasspath(bootstrapLoader);
   return isolate;

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Fri Sep 19 10:22:36 2008
@@ -190,7 +190,7 @@
 
   if (len == 0) {
     return 0;
-  } else if (name->elements[0] == AssessorDesc::I_TAB) {
+  } else if (name->elements[0] == I_TAB) {
     
     while (doLoop) {
       --len;
@@ -198,12 +198,12 @@
         doLoop = false;
       } else {
         ++start;
-        if (name->elements[start] != AssessorDesc::I_TAB) {
-          if (name->elements[start] == AssessorDesc::I_REF) {
+        if (name->elements[start] != I_TAB) {
+          if (name->elements[start] == I_REF) {
             uint32 size = (uint32)name->size;
             if ((size == (start + 1)) || (size == (start + 2)) || 
-                 (name->elements[start + 1] == AssessorDesc::I_TAB) || 
-                 (utf8->elements[origLen - 1] != AssessorDesc::I_END_REF)) {
+                 (name->elements[start + 1] == I_TAB) || 
+                 (utf8->elements[origLen - 1] != I_END_REF)) {
               doLoop = false; 
             } else {
               const UTF8* componentName = utf8->javaToInternal(hashUTF8,
@@ -219,10 +219,10 @@
             }
           } else {
             uint16 cur = name->elements[start];
-            if ((cur == AssessorDesc::I_BOOL || cur == AssessorDesc::I_BYTE ||
-                 cur == AssessorDesc::I_CHAR || cur == AssessorDesc::I_SHORT ||
-                 cur == AssessorDesc::I_INT || cur == AssessorDesc::I_FLOAT || 
-                 cur == AssessorDesc::I_DOUBLE || cur == AssessorDesc::I_LONG)
+            if ((cur == I_BOOL || cur == I_BYTE ||
+                 cur == I_CHAR || cur == I_SHORT ||
+                 cur == I_INT || cur == I_FLOAT || 
+                 cur == I_DOUBLE || cur == I_LONG)
                 && ((uint32)name->size) == start + 1) {
 
               ret = constructArray(name);
@@ -256,12 +256,12 @@
 UserCommonClass* JnjvmClassLoader::loadBaseClass(const UTF8* name,
                                                  uint32 start, uint32 len) {
   
-  if (name->elements[start] == AssessorDesc::I_TAB) {
+  if (name->elements[start] == I_TAB) {
     UserCommonClass* baseClass = loadBaseClass(name, start + 1, len - 1);
     JnjvmClassLoader* loader = baseClass->classLoader;
     const UTF8* arrayName = name->extract(loader->hashUTF8, start, start + len);
     return loader->constructArray(arrayName);
-  } else if (name->elements[start] == AssessorDesc::I_REF) {
+  } else if (name->elements[start] == I_REF) {
     const UTF8* componentName = name->extract(hashUTF8,
                                               start + 1, start + len - 1);
     UserCommonClass* cl = loadName(componentName, false, true);
@@ -269,7 +269,7 @@
   } else {
     Classpath* upcalls = bootstrapLoader->upcalls;
     UserClassPrimitive* prim = 
-      AssessorDesc::byteIdToPrimitive(name->elements[start], upcalls);
+      UserClassPrimitive::byteIdToPrimitive(name->elements[start], upcalls);
     assert(prim && "No primitive found");
     return prim;
   }
@@ -432,3 +432,30 @@
   }
 }
 
+const UTF8* JnjvmClassLoader::constructArrayName(uint32 steps,
+                                                 const UTF8* className) {
+  uint32 len = className->size;
+  uint32 pos = steps;
+  bool isTab = (className->elements[0] == I_TAB ? true : false);
+  uint32 n = steps + len + (isTab ? 0 : 2);
+  uint16* buf = (uint16*)alloca(n * sizeof(uint16));
+    
+  for (uint32 i = 0; i < steps; i++) {
+    buf[i] = I_TAB;
+  }
+
+  if (!isTab) {
+    ++pos;
+    buf[steps] = I_REF;
+  }
+
+  for (uint32 i = 0; i < len; i++) {
+    buf[pos + i] = className->elements[i];
+  }
+
+  if (!isTab) {
+    buf[n - 1] = I_END_REF;
+  }
+
+  return readerConstructUTF8(buf, n);
+}

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmClassLoader.h Fri Sep 19 10:22:36 2008
@@ -210,7 +210,8 @@
 #ifdef MULTIPLE_VM
   UserClass* loadClass;
 #endif
-
+  
+  const UTF8* constructArrayName(uint32 steps, const UTF8* className);
 };
 
 /// JnjvmBootstrapLoader - This class is for the bootstrap class loader, which

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModule.cpp Fri Sep 19 10:22:36 2008
@@ -1151,72 +1151,72 @@
   setDataLayout(str);
 }
 void LLVMAssessorInfo::initialise() {
-  AssessorInfo[AssessorDesc::I_VOID].llvmType = Type::VoidTy;
-  AssessorInfo[AssessorDesc::I_VOID].llvmTypePtr = 0;
-  AssessorInfo[AssessorDesc::I_VOID].llvmNullConstant = 0;
-  AssessorInfo[AssessorDesc::I_VOID].sizeInBytesConstant = 0;
-  
-  AssessorInfo[AssessorDesc::I_BOOL].llvmType = Type::Int8Ty;
-  AssessorInfo[AssessorDesc::I_BOOL].llvmTypePtr = PointerType::getUnqual(Type::Int8Ty);
-  AssessorInfo[AssessorDesc::I_BOOL].llvmNullConstant = 
+  AssessorInfo[I_VOID].llvmType = Type::VoidTy;
+  AssessorInfo[I_VOID].llvmTypePtr = 0;
+  AssessorInfo[I_VOID].llvmNullConstant = 0;
+  AssessorInfo[I_VOID].sizeInBytesConstant = 0;
+  
+  AssessorInfo[I_BOOL].llvmType = Type::Int8Ty;
+  AssessorInfo[I_BOOL].llvmTypePtr = PointerType::getUnqual(Type::Int8Ty);
+  AssessorInfo[I_BOOL].llvmNullConstant = 
     Constant::getNullValue(Type::Int8Ty);
-  AssessorInfo[AssessorDesc::I_BOOL].sizeInBytesConstant = mvm::jit::constantOne;
+  AssessorInfo[I_BOOL].sizeInBytesConstant = mvm::jit::constantOne;
   
-  AssessorInfo[AssessorDesc::I_BYTE].llvmType = Type::Int8Ty;
-  AssessorInfo[AssessorDesc::I_BYTE].llvmTypePtr = PointerType::getUnqual(Type::Int8Ty);
-  AssessorInfo[AssessorDesc::I_BYTE].llvmNullConstant = 
+  AssessorInfo[I_BYTE].llvmType = Type::Int8Ty;
+  AssessorInfo[I_BYTE].llvmTypePtr = PointerType::getUnqual(Type::Int8Ty);
+  AssessorInfo[I_BYTE].llvmNullConstant = 
     Constant::getNullValue(Type::Int8Ty);
-  AssessorInfo[AssessorDesc::I_BYTE].sizeInBytesConstant = mvm::jit::constantOne;
+  AssessorInfo[I_BYTE].sizeInBytesConstant = mvm::jit::constantOne;
   
-  AssessorInfo[AssessorDesc::I_SHORT].llvmType = Type::Int16Ty;
-  AssessorInfo[AssessorDesc::I_SHORT].llvmTypePtr = PointerType::getUnqual(Type::Int16Ty);
-  AssessorInfo[AssessorDesc::I_SHORT].llvmNullConstant = 
+  AssessorInfo[I_SHORT].llvmType = Type::Int16Ty;
+  AssessorInfo[I_SHORT].llvmTypePtr = PointerType::getUnqual(Type::Int16Ty);
+  AssessorInfo[I_SHORT].llvmNullConstant = 
     Constant::getNullValue(Type::Int16Ty);
-  AssessorInfo[AssessorDesc::I_SHORT].sizeInBytesConstant = mvm::jit::constantTwo;
+  AssessorInfo[I_SHORT].sizeInBytesConstant = mvm::jit::constantTwo;
   
-  AssessorInfo[AssessorDesc::I_CHAR].llvmType = Type::Int16Ty;
-  AssessorInfo[AssessorDesc::I_CHAR].llvmTypePtr = PointerType::getUnqual(Type::Int16Ty);
-  AssessorInfo[AssessorDesc::I_CHAR].llvmNullConstant = 
+  AssessorInfo[I_CHAR].llvmType = Type::Int16Ty;
+  AssessorInfo[I_CHAR].llvmTypePtr = PointerType::getUnqual(Type::Int16Ty);
+  AssessorInfo[I_CHAR].llvmNullConstant = 
     Constant::getNullValue(Type::Int16Ty);
-  AssessorInfo[AssessorDesc::I_CHAR].sizeInBytesConstant = mvm::jit::constantTwo;
+  AssessorInfo[I_CHAR].sizeInBytesConstant = mvm::jit::constantTwo;
   
-  AssessorInfo[AssessorDesc::I_INT].llvmType = Type::Int32Ty;
-  AssessorInfo[AssessorDesc::I_INT].llvmTypePtr = PointerType::getUnqual(Type::Int32Ty);
-  AssessorInfo[AssessorDesc::I_INT].llvmNullConstant = 
+  AssessorInfo[I_INT].llvmType = Type::Int32Ty;
+  AssessorInfo[I_INT].llvmTypePtr = PointerType::getUnqual(Type::Int32Ty);
+  AssessorInfo[I_INT].llvmNullConstant = 
     Constant::getNullValue(Type::Int32Ty);
-  AssessorInfo[AssessorDesc::I_INT].sizeInBytesConstant = mvm::jit::constantFour;
+  AssessorInfo[I_INT].sizeInBytesConstant = mvm::jit::constantFour;
   
-  AssessorInfo[AssessorDesc::I_FLOAT].llvmType = Type::FloatTy;
-  AssessorInfo[AssessorDesc::I_FLOAT].llvmTypePtr = PointerType::getUnqual(Type::FloatTy);
-  AssessorInfo[AssessorDesc::I_FLOAT].llvmNullConstant = 
+  AssessorInfo[I_FLOAT].llvmType = Type::FloatTy;
+  AssessorInfo[I_FLOAT].llvmTypePtr = PointerType::getUnqual(Type::FloatTy);
+  AssessorInfo[I_FLOAT].llvmNullConstant = 
     Constant::getNullValue(Type::FloatTy);
-  AssessorInfo[AssessorDesc::I_FLOAT].sizeInBytesConstant = mvm::jit::constantFour;
+  AssessorInfo[I_FLOAT].sizeInBytesConstant = mvm::jit::constantFour;
   
-  AssessorInfo[AssessorDesc::I_LONG].llvmType = Type::Int64Ty;
-  AssessorInfo[AssessorDesc::I_LONG].llvmTypePtr = PointerType::getUnqual(Type::Int64Ty);
-  AssessorInfo[AssessorDesc::I_LONG].llvmNullConstant = 
+  AssessorInfo[I_LONG].llvmType = Type::Int64Ty;
+  AssessorInfo[I_LONG].llvmTypePtr = PointerType::getUnqual(Type::Int64Ty);
+  AssessorInfo[I_LONG].llvmNullConstant = 
     Constant::getNullValue(Type::Int64Ty);
-  AssessorInfo[AssessorDesc::I_LONG].sizeInBytesConstant = mvm::jit::constantEight;
+  AssessorInfo[I_LONG].sizeInBytesConstant = mvm::jit::constantEight;
   
-  AssessorInfo[AssessorDesc::I_DOUBLE].llvmType = Type::DoubleTy;
-  AssessorInfo[AssessorDesc::I_DOUBLE].llvmTypePtr = PointerType::getUnqual(Type::DoubleTy);
-  AssessorInfo[AssessorDesc::I_DOUBLE].llvmNullConstant = 
+  AssessorInfo[I_DOUBLE].llvmType = Type::DoubleTy;
+  AssessorInfo[I_DOUBLE].llvmTypePtr = PointerType::getUnqual(Type::DoubleTy);
+  AssessorInfo[I_DOUBLE].llvmNullConstant = 
     Constant::getNullValue(Type::DoubleTy);
-  AssessorInfo[AssessorDesc::I_DOUBLE].sizeInBytesConstant = mvm::jit::constantEight;
+  AssessorInfo[I_DOUBLE].sizeInBytesConstant = mvm::jit::constantEight;
   
-  AssessorInfo[AssessorDesc::I_TAB].llvmType = JnjvmModule::JavaObjectType;
-  AssessorInfo[AssessorDesc::I_TAB].llvmTypePtr =
+  AssessorInfo[I_TAB].llvmType = JnjvmModule::JavaObjectType;
+  AssessorInfo[I_TAB].llvmTypePtr =
     PointerType::getUnqual(JnjvmModule::JavaObjectType);
-  AssessorInfo[AssessorDesc::I_TAB].llvmNullConstant =
+  AssessorInfo[I_TAB].llvmNullConstant =
     JnjvmModule::JavaObjectNullConstant;
-  AssessorInfo[AssessorDesc::I_TAB].sizeInBytesConstant = mvm::jit::constantPtrSize;
+  AssessorInfo[I_TAB].sizeInBytesConstant = mvm::jit::constantPtrSize;
   
-  AssessorInfo[AssessorDesc::I_REF].llvmType = JnjvmModule::JavaObjectType;
-  AssessorInfo[AssessorDesc::I_REF].llvmTypePtr =
+  AssessorInfo[I_REF].llvmType = JnjvmModule::JavaObjectType;
+  AssessorInfo[I_REF].llvmTypePtr =
     PointerType::getUnqual(JnjvmModule::JavaObjectType);
-  AssessorInfo[AssessorDesc::I_REF].llvmNullConstant =
+  AssessorInfo[I_REF].llvmNullConstant =
     JnjvmModule::JavaObjectNullConstant;
-  AssessorInfo[AssessorDesc::I_REF].sizeInBytesConstant = mvm::jit::constantPtrSize;
+  AssessorInfo[I_REF].sizeInBytesConstant = mvm::jit::constantPtrSize;
 }
 
 std::map<const char, LLVMAssessorInfo> LLVMAssessorInfo::AssessorInfo;

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

==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/NativeUtil.cpp Fri Sep 19 10:22:36 2008
@@ -151,7 +151,7 @@
   sint32 i = 0;
   while (i < jniConsType->size) {
     char c = jniConsType->elements[i++];
-    if (c == AssessorDesc::I_PARG) {
+    if (c == I_PARG) {
       ptr[0] = '_';
       ptr[1] = '_';
       ptr += 2;
@@ -162,15 +162,15 @@
       ptr[0] = '_';
       ptr[1] = '1';
       ptr += 2;
-    } else if (c == AssessorDesc::I_END_REF) {
+    } else if (c == I_END_REF) {
       ptr[0] = '_';
       ptr[1] = '2';
       ptr += 2;
-    } else if (c == AssessorDesc::I_TAB) {
+    } else if (c == I_TAB) {
       ptr[0] = '_';
       ptr[1] = '3';
       ptr += 2;
-    } else if (c == AssessorDesc::I_PARD) {
+    } else if (c == I_PARD) {
       break;
     } else {
       ptr[0] = c;





More information about the vmkit-commits mailing list