[vmkit-commits] [vmkit] r56214 - in /vmkit/branches/isolate/lib/JnJVM/VMCore: JavaInitialise.cpp JavaTypes.cpp JavaTypes.h JavaUpcalls.cpp JavaUpcalls.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Sep 15 06:28:35 PDT 2008
Author: geoffray
Date: Mon Sep 15 08:28:34 2008
New Revision: 56214
URL: http://llvm.org/viewvc/llvm-project?rev=56214&view=rev
Log:
Set the primitive classes at boot time, not when initializing AssessorDescs.
Modified:
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=56214&r1=56213&r2=56214&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaInitialise.cpp Mon Sep 15 08:28:34 2008
@@ -141,6 +141,16 @@
// End array initialization
+ JCL->upcalls->OfByte = UPCALL_PRIMITIVE_CLASS(JCL, "B", 1);
+ JCL->upcalls->OfBool = UPCALL_PRIMITIVE_CLASS(JCL, "Z", 1);
+ JCL->upcalls->OfChar = UPCALL_PRIMITIVE_CLASS(JCL, "C", 2);
+ JCL->upcalls->OfShort = UPCALL_PRIMITIVE_CLASS(JCL, "S", 2);
+ JCL->upcalls->OfInt = UPCALL_PRIMITIVE_CLASS(JCL, "I", 4);
+ JCL->upcalls->OfLong = UPCALL_PRIMITIVE_CLASS(JCL, "J", 8);
+ JCL->upcalls->OfFloat = UPCALL_PRIMITIVE_CLASS(JCL, "F", 4);
+ JCL->upcalls->OfDouble = UPCALL_PRIMITIVE_CLASS(JCL, "D", 8);
+ JCL->upcalls->OfVoid = UPCALL_PRIMITIVE_CLASS(JCL, "V", 0);
+
AssessorDesc::initialise(JCL);
Attribut::codeAttribut = JCL->asciizConstructUTF8("Code");
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp?rev=56214&r1=56213&r2=56214&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.cpp Mon Sep 15 08:28:34 2008
@@ -56,7 +56,8 @@
AssessorDesc::AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
const char* name,
JnjvmClassLoader* loader, uint8 nid,
- const char* assocName, UserClassArray* cl,
+ const char* assocName,
+ UserClassPrimitive* prim, UserClassArray* cl,
arrayCtor_t ctor) {
AssessorDesc* res = this;
res->numId = nid;
@@ -75,7 +76,7 @@
res->assocClassName = 0;
if (bid != I_PARG && bid != I_PARD && bid != I_REF && bid != I_TAB) {
- res->primitiveClass = new UserClassPrimitive(loader, res->UTF8Name, nb);
+ res->primitiveClass = prim;
if (res->arrayClass) {
res->arrayClass->_baseClass = res->primitiveClass;
res->arrayClass->_funcs = res;
@@ -89,53 +90,62 @@
void AssessorDesc::initialise(JnjvmBootstrapLoader* vm) {
dParg = new AssessorDesc(false, I_PARG, 0, 0, "(", vm, 0, 0, 0,
- 0);
+ 0, 0);
dPard = new AssessorDesc(false, I_PARD, 0, 0, ")", vm, 0, 0, 0,
- 0);
+ 0, 0);
dVoid = new AssessorDesc(false, I_VOID, 0, 0, "void",
- vm, VOID_ID, "java/lang/Void", 0, 0);
+ vm, VOID_ID, "java/lang/Void",
+ vm->upcalls->OfVoid, 0, 0);
dBool = new AssessorDesc(false, I_BOOL, 1, 1, "boolean",
vm,
BOOL_ID, "java/lang/Boolean",
+ vm->upcalls->OfBool,
vm->upcalls->ArrayOfBool,
(arrayCtor_t)ArrayUInt8::acons);
dByte = new AssessorDesc(false, I_BYTE, 1, 1, "byte",
vm, BYTE_ID, "java/lang/Byte",
+ vm->upcalls->OfByte,
vm->upcalls->ArrayOfByte,
(arrayCtor_t)ArraySInt8::acons);
dChar = new AssessorDesc(false, I_CHAR, 2, 1, "char",
vm, CHAR_ID, "java/lang/Character",
+ vm->upcalls->OfChar,
vm->upcalls->ArrayOfChar,
(arrayCtor_t)ArrayUInt16::acons);
dShort = new AssessorDesc(false, I_SHORT, 2, 1, "short",
vm, SHORT_ID,
"java/lang/Short",
+ vm->upcalls->OfShort,
vm->upcalls->ArrayOfShort,
(arrayCtor_t)ArraySInt16::acons);
dInt = new AssessorDesc(false, I_INT, 4, 1, "int", vm,
INT_ID, "java/lang/Integer",
+ vm->upcalls->OfInt,
vm->upcalls->ArrayOfInt,
(arrayCtor_t)ArraySInt32::acons);
dFloat = new AssessorDesc(false, I_FLOAT, 4, 1, "float",
vm,
FLOAT_ID, "java/lang/Float",
+ vm->upcalls->OfFloat,
vm->upcalls->ArrayOfFloat,
(arrayCtor_t)ArrayFloat::acons);
dLong = new AssessorDesc(false, I_LONG, 8, 2, "long",
vm, LONG_ID, "java/lang/Long",
+ vm->upcalls->OfLong,
vm->upcalls->ArrayOfLong,
(arrayCtor_t)ArrayLong::acons);
dDouble = new AssessorDesc(false, I_DOUBLE, 8, 2, "double",
vm,
DOUBLE_ID, "java/lang/Double",
+ vm->upcalls->OfDouble,
vm->upcalls->ArrayOfDouble,
(arrayCtor_t)ArrayDouble::acons);
dTab = new AssessorDesc(true, I_TAB, sizeof(void*), 1, "array",
- vm, ARRAY_ID, 0, 0,
+ vm, ARRAY_ID, 0, 0, 0,
(arrayCtor_t)ArrayObject::acons);
dRef = new AssessorDesc(true, I_REF, sizeof(void*), 1, "reference",
vm, OBJECT_ID,
- 0, 0,
+ 0, 0, 0,
(arrayCtor_t)ArrayObject::acons);
}
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h?rev=56214&r1=56213&r2=56214&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaTypes.h Mon Sep 15 08:28:34 2008
@@ -186,7 +186,8 @@
AssessorDesc(bool dt, char bid, uint32 nb, uint32 nw,
const char* name,
JnjvmClassLoader* loader, uint8 nid,
- const char* assocName, UserClassArray* cl,
+ const char* assocName,
+ UserClassPrimitive* prim, UserClassArray* cl,
arrayCtor_t ctor);
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=56214&r1=56213&r2=56214&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.cpp Mon Sep 15 08:28:34 2008
@@ -193,6 +193,16 @@
ClassArray* Classpath::ArrayOfDouble;
ClassArray* Classpath::ArrayOfObject;
+ClassPrimitive* Classpath::OfByte;
+ClassPrimitive* Classpath::OfChar;
+ClassPrimitive* Classpath::OfInt;
+ClassPrimitive* Classpath::OfShort;
+ClassPrimitive* Classpath::OfBool;
+ClassPrimitive* Classpath::OfLong;
+ClassPrimitive* Classpath::OfFloat;
+ClassPrimitive* Classpath::OfDouble;
+ClassPrimitive* Classpath::OfVoid;
+
JavaField* Classpath::methodClass;
JavaField* Classpath::fieldClass;
JavaField* Classpath::constructorClass;
@@ -234,6 +244,7 @@
}
void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {
+
newClassLoader =
UPCALL_CLASS(loader, "java/lang/ClassLoader");
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h?rev=56214&r1=56213&r2=56214&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaUpcalls.h Mon Sep 15 08:28:34 2008
@@ -15,6 +15,9 @@
#define UPCALL_CLASS(vm, name) \
vm->loadName(vm->asciizConstructUTF8(name), false, false)
+#define UPCALL_PRIMITIVE_CLASS(loader, name, nb) \
+ new UserClassPrimitive(loader, loader->asciizConstructUTF8(name), nb)
+
#define UPCALL_FIELD(vm, cl, name, type, acc) \
UPCALL_CLASS(vm, cl)->constructField(vm->asciizConstructUTF8(name), \
vm->asciizConstructUTF8(type), acc)
@@ -207,7 +210,6 @@
ISOLATE_STATIC UserClassArray* ArrayOfByte;
ISOLATE_STATIC UserClassArray* ArrayOfChar;
- ISOLATE_STATIC UserClassArray* ArrayOfString;
ISOLATE_STATIC UserClassArray* ArrayOfInt;
ISOLATE_STATIC UserClassArray* ArrayOfShort;
ISOLATE_STATIC UserClassArray* ArrayOfBool;
@@ -215,6 +217,17 @@
ISOLATE_STATIC UserClassArray* ArrayOfFloat;
ISOLATE_STATIC UserClassArray* ArrayOfDouble;
ISOLATE_STATIC UserClassArray* ArrayOfObject;
+ ISOLATE_STATIC UserClassArray* ArrayOfString;
+
+ ISOLATE_STATIC UserClassPrimitive* OfByte;
+ ISOLATE_STATIC UserClassPrimitive* OfChar;
+ ISOLATE_STATIC UserClassPrimitive* OfInt;
+ ISOLATE_STATIC UserClassPrimitive* OfShort;
+ ISOLATE_STATIC UserClassPrimitive* OfBool;
+ ISOLATE_STATIC UserClassPrimitive* OfLong;
+ ISOLATE_STATIC UserClassPrimitive* OfFloat;
+ ISOLATE_STATIC UserClassPrimitive* OfDouble;
+ ISOLATE_STATIC UserClassPrimitive* OfVoid;
ISOLATE_STATIC JavaField* methodClass;
ISOLATE_STATIC JavaField* fieldClass;
More information about the vmkit-commits
mailing list