[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