[llvm-commits] [vmkit] r51425 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp JavaClass.h JavaTypes.cpp JavaTypes.h Jnjvm.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu May 22 02:27:58 PDT 2008


Author: geoffray
Date: Thu May 22 04:27:57 2008
New Revision: 51425

URL: http://llvm.org/viewvc/llvm-project?rev=51425&view=rev
Log:
Primitive classes should not be hashed.


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

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Thu May 22 04:27:57 2008
@@ -182,17 +182,42 @@
   buf->write(">");
 }
 
-void CommonClass::initialise(Jnjvm* isolate, bool isArray) {
+CommonClass::CommonClass(Jnjvm* vm, const UTF8* n, bool isArray) {
+  name = n;
   this->lockVar = mvm::Lock::allocRecursive();
   this->condVar = mvm::Cond::allocCond();
   this->status = hashed;
-  this->isolate = isolate;
+  this->isolate = vm;
   this->isArray = isArray;
+  this->isPrimitive = false;
 #ifndef MULTIPLE_VM
   this->delegatee = 0;
 #endif
 }
 
+Class::Class(Jnjvm* vm, const UTF8* n) : CommonClass(vm, n, false) {
+  classLoader = 0;
+  bytes = 0;
+  super = 0;
+  ctpInfo = 0;
+#ifndef MULTIPLE_VM
+  _staticInstance = 0;
+#endif
+}
+
+ClassArray::ClassArray(Jnjvm* vm, const UTF8* n) : CommonClass(vm, n, true) {
+  classLoader = 0;
+  _funcs = 0;
+  _baseClass = 0;
+  super = ClassArray::SuperArray;
+  interfaces = ClassArray::InterfacesArray;
+  depth = 1;
+  display.push_back(ClassArray::SuperArray);
+  display.push_back(this);
+  access = ACC_FINAL | ACC_ABSTRACT;
+  status = loaded;
+}
+
 void Class::print(mvm::PrintBuffer* buf) const {
   buf->write("Class<");
   printClassName(name, buf);

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Thu May 22 04:27:57 2008
@@ -102,7 +102,11 @@
   
   /// isArray - Is the class an array class?
   ///
-  uint8 isArray;
+  bool isArray;
+  
+  /// isPrimitive - Is the class a primitive class?
+  ///
+  bool isPrimitive;
   
   /// name - The name of the class.
   ///
@@ -199,7 +203,6 @@
                             uint32 access);
 
   static void printClassName(const UTF8* name, mvm::PrintBuffer* buf);
-  void initialise(Jnjvm* isolate, bool array);
   
   void aquire() {
     lockVar->lock();
@@ -264,6 +267,10 @@
     return status >= resolved;
   }
   
+  CommonClass(Jnjvm* vm, const UTF8* name, bool isArray);
+  /// Empty constructor for VT
+  CommonClass() {}
+  
   static VirtualTable* VT;
   static const int MaxDisplay;
   static JavaObject* jnjvmClassLoader;
@@ -306,6 +313,10 @@
   void createStaticInstance();
 #endif
   
+  /// Empty constructor for VT
+  Class() {}
+  Class(Jnjvm* vm, const UTF8* name);
+  
 };
 
 
@@ -328,6 +339,10 @@
       resolveComponent();
     return _funcs;
   }
+  
+  /// Empty constructor for VT
+  ClassArray() {}
+  ClassArray(Jnjvm* vm, const UTF8* name);
 
   static JavaObject* arrayLoader(Jnjvm* isolate, const UTF8* name,
                                  JavaObject* loader, unsigned int start,

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Thu May 22 04:27:57 2008
@@ -52,19 +52,18 @@
 AssessorDesc* AssessorDesc::dTab = 0;
 AssessorDesc* AssessorDesc::dRef = 0;
 
-AssessorDesc* AssessorDesc::allocate(bool dt, char bid, uint32 nb, uint32 nw,
-                                     const char* name, const char* className,
-                                     Jnjvm* vm, uint8 nid,
-                                     const char* assocName, ClassArray* cl,
-                                     arrayCtor_t ctor) {
-  AssessorDesc* res = new AssessorDesc();
+AssessorDesc::AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
+                           const char* name,
+                           Jnjvm* vm, uint8 nid,
+                           const char* assocName, ClassArray* cl,
+                           arrayCtor_t ctor) {
+  AssessorDesc* res = this;
   res->numId = nid;
   res->doTrace = dt;
   res->byteId = bid;
   res->nbb = nb;
   res->nbw = nw;
   res->asciizName = name;
-  res->UTF8Name = vm->asciizConstructUTF8(name);
   res->arrayCtor = ctor;
   
   res->arrayClass = cl;
@@ -74,65 +73,64 @@
     res->assocClassName = 0;
   
   if (bid != I_PARG && bid != I_PARD && bid != I_REF && bid != I_TAB) {
-    res->classType = vm->constructClass(vm->asciizConstructUTF8(className),
-                                        CommonClass::jnjvmClassLoader);
+    res->classType = new CommonClass(vm, res->UTF8Name, false);
     res->classType->status = ready;
+    res->classType->isPrimitive = true;
     res->classType->access = ACC_ABSTRACT | ACC_FINAL | ACC_PUBLIC;
   } else {
     res->classType = 0;
   }
-  return res;
 }
 
 void AssessorDesc::initialise(Jnjvm* vm) {
 
-  dParg = AssessorDesc::allocate(false, I_PARG, 0, 0, "(", "(", vm, -1, 0, 0,
+  dParg = new AssessorDesc(false, I_PARG, 0, 0, "(", vm, -1, 0, 0,
                                  0);
-  dPard = AssessorDesc::allocate(false, I_PARD, 0, 0, ")", ")", vm, -1, 0, 0,
+  dPard = new AssessorDesc(false, I_PARD, 0, 0, ")", vm, -1, 0, 0,
                                  0);
-  dVoid = AssessorDesc::allocate(false, I_VOID, 0, 0, "void", "*** void ***",
+  dVoid = new AssessorDesc(false, I_VOID, 0, 0, "void",
                                  vm, VOID_ID, "java/lang/Void", 0, 0);
-  dBool = AssessorDesc::allocate(false, I_BOOL, 1, 1, "boolean", 
-                                 "*** boolean ***", vm,
+  dBool = new AssessorDesc(false, I_BOOL, 1, 1, "boolean", 
+                                 vm,
                                  BOOL_ID, "java/lang/Boolean", 
                                  JavaArray::ofBool,
                                  (arrayCtor_t)ArrayUInt8::acons);
-  dByte = AssessorDesc::allocate(false, I_BYTE, 1, 1, "byte", "*** byte ***",
+  dByte = new AssessorDesc(false, I_BYTE, 1, 1, "byte",
                                  vm, BYTE_ID, "java/lang/Byte",
                                  JavaArray::ofByte,
                                  (arrayCtor_t)ArraySInt8::acons);
-  dChar = AssessorDesc::allocate(false, I_CHAR, 2, 1, "char", "*** char ***",
+  dChar = new AssessorDesc(false, I_CHAR, 2, 1, "char",
                                  vm, CHAR_ID, "java/lang/Character",
                                  JavaArray::ofChar,
                                  (arrayCtor_t)ArrayUInt16::acons);
-  dShort = AssessorDesc::allocate(false, I_SHORT, 2, 1, "short", 
-                                  "*** short ***", vm, SHORT_ID,
+  dShort = new AssessorDesc(false, I_SHORT, 2, 1, "short", 
+                                  vm, SHORT_ID,
                                   "java/lang/Short",
                                   JavaArray::ofShort,
                                   (arrayCtor_t)ArraySInt16::acons);
-  dInt = AssessorDesc::allocate(false, I_INT, 4, 1, "int", "*** int ***", vm,
+  dInt = new AssessorDesc(false, I_INT, 4, 1, "int", vm,
                                 INT_ID, "java/lang/Integer",
                                 JavaArray::ofInt,
                                 (arrayCtor_t)ArraySInt32::acons);
-  dFloat = AssessorDesc::allocate(false, I_FLOAT, 4, 1, "float", 
-                                  "*** float ***", vm,
+  dFloat = new AssessorDesc(false, I_FLOAT, 4, 1, "float", 
+                                  vm,
                                   FLOAT_ID, "java/lang/Float",
                                   JavaArray::ofFloat,
                                   (arrayCtor_t)ArrayFloat::acons);
-  dLong = AssessorDesc::allocate(false, I_LONG, 8, 2, "long", "*** long ***", 
+  dLong = new AssessorDesc(false, I_LONG, 8, 2, "long", 
                                  vm, LONG_ID, "java/lang/Long",
                                  JavaArray::ofLong,
                                   (arrayCtor_t)ArrayLong::acons);
-  dDouble = AssessorDesc::allocate(false, I_DOUBLE, 8, 2, "double", 
-                                   "*** double ***", vm,
+  dDouble = new AssessorDesc(false, I_DOUBLE, 8, 2, "double", 
+                                   vm,
                                    DOUBLE_ID, "java/lang/Double",
                                    JavaArray::ofDouble,
                                    (arrayCtor_t)ArrayDouble::acons);
-  dTab = AssessorDesc::allocate(true, I_TAB, sizeof(void*), 1, "array", "array",
+  dTab = new AssessorDesc(true, I_TAB, sizeof(void*), 1, "array",
                                 vm, ARRAY_ID, 0, 0,
                                 (arrayCtor_t)ArrayObject::acons);
-  dRef = AssessorDesc::allocate(true, I_REF, sizeof(void*), 1, "reference",
-                                "reference", vm, OBJECT_ID,
+  dRef = new AssessorDesc(true, I_REF, sizeof(void*), 1, "reference",
+                                vm, OBJECT_ID,
                                 0, 0, 
                                 (arrayCtor_t)ArrayObject::acons);
   

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h Thu May 22 04:27:57 2008
@@ -89,11 +89,11 @@
   static AssessorDesc* dTab;
   static AssessorDesc* dRef;
   
-  static AssessorDesc* allocate(bool dt, char bid, uint32 nb, uint32 nw,
-                                const char* name, const char* className,
-                                Jnjvm* vm, uint8 nid,
-                                const char* assocName, ClassArray* cl,
-                                arrayCtor_t ctor);
+  AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
+               const char* name,
+               Jnjvm* vm, uint8 nid,
+               const char* assocName, ClassArray* cl,
+               arrayCtor_t ctor);
 
   static void initialise(Jnjvm* vm);
   

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Thu May 22 04:27:57 2008
@@ -657,19 +657,7 @@
 }
 
 static CommonClass* arrayDup(const UTF8*& name, Jnjvm *vm) {
-  ClassArray* cl = vm_new(vm, ClassArray)();
-  cl->initialise(vm, true);
-  cl->name = name;
-  cl->classLoader = 0;
-  cl->_funcs = 0;
-  cl->_baseClass = 0;
-  cl->super = ClassArray::SuperArray;
-  cl->interfaces = ClassArray::InterfacesArray;
-  cl->depth = 1;
-  cl->display.push_back(ClassArray::SuperArray);
-  cl->display.push_back(cl);
-  cl->access = ACC_FINAL | ACC_ABSTRACT;
-  cl->status = loaded;
+  ClassArray* cl = vm_new(vm, ClassArray)(vm, name);
   return cl;
 }
 
@@ -706,16 +694,7 @@
 
 
 static CommonClass* classDup(const UTF8*& name, Jnjvm *vm) {
-  Class* cl = vm_new(vm, Class)();
-  cl->initialise(vm, false);
-  cl->name = name;
-  cl->classLoader = 0;
-  cl->bytes = 0;
-#ifndef MULTIPLE_VM
-  cl->_staticInstance = 0;
-#endif
-  cl->super = 0;
-  cl->ctpInfo = 0;
+  Class* cl = vm_new(vm, Class)(vm, name);
   return cl;
 }
 





More information about the llvm-commits mailing list