[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