[vmkit-commits] [vmkit] r58190 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaInitialise.cpp JnjvmClassLoader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Oct 26 10:25:28 PDT 2008
Author: geoffray
Date: Sun Oct 26 12:25:28 2008
New Revision: 58190
URL: http://llvm.org/viewvc/llvm-project?rev=58190&view=rev
Log:
Remove initialisation from Jnjvm to bootstrapLoader.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=58190&r1=58189&r2=58190&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp Sun Oct 26 12:25:28 2008
@@ -83,150 +83,7 @@
}
#endif
- JnjvmBootstrapLoader* JCL = bootstrapLoader = gc_new(JnjvmBootstrapLoader)(0);
-
- // Create the name of char arrays.
- const UTF8* utf8OfChar = JCL->asciizConstructUTF8("[C");
-
- // Create the base class of char arrays.
- JCL->upcalls->OfChar = UPCALL_PRIMITIVE_CLASS(JCL, "char", 2);
-
- // Create the char array.
- JCL->upcalls->ArrayOfChar = JCL->constructArray(utf8OfChar,
- JCL->upcalls->OfChar);
-
- // Alright, now we can repair the damage: set the class to the UTF8s created
- // and set the array class of UTF8s.
- ((UTF8*)utf8OfChar)->classOf = JCL->upcalls->ArrayOfChar;
- ((UTF8*)JCL->upcalls->OfChar->name)->classOf = JCL->upcalls->ArrayOfChar;
- JCL->hashUTF8->array = JCL->upcalls->ArrayOfChar;
-
- // Create the byte array, so that bytes for classes can be created.
- JCL->upcalls->OfByte = UPCALL_PRIMITIVE_CLASS(JCL, "byte", 1);
- JCL->upcalls->ArrayOfByte =
- JCL->constructArray(JCL->asciizConstructUTF8("[B"), JCL->upcalls->OfByte);
-
- JCL->InterfacesArray =
- (Class**)JCL->allocator.Allocate(2 * sizeof(UserClass*));
-
- // Now we can create the super and interfaces of arrays.
- JCL->InterfacesArray[0] =
- JCL->loadName(JCL->asciizConstructUTF8("java/lang/Cloneable"), false,
- false);
-
- JCL->InterfacesArray[1] =
- JCL->loadName(JCL->asciizConstructUTF8("java/io/Serializable"), false,
- false);
-
- JCL->SuperArray =
- JCL->loadName(JCL->asciizConstructUTF8("java/lang/Object"), false,
- false);
-
-#ifdef ISOLATE_SHARING
- if (!ClassArray::SuperArray) {
- ClassArray::SuperArray = JCL->SuperArray->classDef;
- ClassArray::InterfacesArray[0] = ((Class*)JCL->InterfacesArray[0]->classDef);
- ClassArray::InterfacesArray[1] = ((Class*)JCL->InterfacesArray[1]->classDef);
- }
-#else
- ClassArray::SuperArray = JCL->SuperArray;
- ClassArray::InterfacesArray = JCL->InterfacesArray;
-#endif
-
- // And repair the damage: set the interfaces and super of array classes already
- // created.
- JCL->upcalls->ArrayOfChar->setInterfaces(JCL->InterfacesArray);
- JCL->upcalls->ArrayOfChar->setSuper(JCL->SuperArray);
- JCL->upcalls->ArrayOfByte->setInterfaces(JCL->InterfacesArray);
- JCL->upcalls->ArrayOfByte->setSuper(JCL->SuperArray);
-
- // Yay, create the other primitive types.
- JCL->upcalls->OfBool = UPCALL_PRIMITIVE_CLASS(JCL, "boolean", 1);
- JCL->upcalls->OfShort = UPCALL_PRIMITIVE_CLASS(JCL, "short", 2);
- JCL->upcalls->OfInt = UPCALL_PRIMITIVE_CLASS(JCL, "int", 4);
- JCL->upcalls->OfLong = UPCALL_PRIMITIVE_CLASS(JCL, "long", 8);
- JCL->upcalls->OfFloat = UPCALL_PRIMITIVE_CLASS(JCL, "float", 4);
- JCL->upcalls->OfDouble = UPCALL_PRIMITIVE_CLASS(JCL, "double", 8);
- JCL->upcalls->OfVoid = UPCALL_PRIMITIVE_CLASS(JCL, "void", 0);
-
- // And finally create the primitive arrays.
- JCL->upcalls->ArrayOfInt =
- JCL->constructArray(JCL->asciizConstructUTF8("[I"), JCL->upcalls->OfInt);
-
- JCL->upcalls->ArrayOfBool =
- JCL->constructArray(JCL->asciizConstructUTF8("[Z"), JCL->upcalls->OfBool);
-
- JCL->upcalls->ArrayOfLong =
- JCL->constructArray(JCL->asciizConstructUTF8("[J"), JCL->upcalls->OfLong);
-
- JCL->upcalls->ArrayOfFloat =
- JCL->constructArray(JCL->asciizConstructUTF8("[F"), JCL->upcalls->OfFloat);
-
- JCL->upcalls->ArrayOfDouble =
- JCL->constructArray(JCL->asciizConstructUTF8("[D"), JCL->upcalls->OfDouble);
-
- JCL->upcalls->ArrayOfShort =
- JCL->constructArray(JCL->asciizConstructUTF8("[S"), JCL->upcalls->OfShort);
-
- JCL->upcalls->ArrayOfString =
- JCL->constructArray(JCL->asciizConstructUTF8("[Ljava/lang/String;"));
-
- JCL->upcalls->ArrayOfObject =
- JCL->constructArray(JCL->asciizConstructUTF8("[Ljava/lang/Object;"));
-
-
- Attribut::codeAttribut = JCL->asciizConstructUTF8("Code");
- Attribut::exceptionsAttribut = JCL->asciizConstructUTF8("Exceptions");
- Attribut::constantAttribut = JCL->asciizConstructUTF8("ConstantValue");
- Attribut::lineNumberTableAttribut =
- JCL->asciizConstructUTF8("LineNumberTable");
- Attribut::innerClassesAttribut = JCL->asciizConstructUTF8("InnerClasses");
- Attribut::sourceFileAttribut = JCL->asciizConstructUTF8("SourceFile");
-
- JCL->initName = JCL->asciizConstructUTF8("<init>");
- JCL->clinitName = JCL->asciizConstructUTF8("<clinit>");
- JCL->clinitType = JCL->asciizConstructUTF8("()V");
- JCL->runName = JCL->asciizConstructUTF8("run");
- JCL->prelib = JCL->asciizConstructUTF8("lib");
-#if defined(__MACH__)
- JCL->postlib = JCL->asciizConstructUTF8(".dylib");
-#else
- JCL->postlib = JCL->asciizConstructUTF8(".so");
-#endif
- JCL->mathName = JCL->asciizConstructUTF8("java/lang/Math");
- JCL->stackWalkerName = JCL->asciizConstructUTF8("gnu/classpath/VMStackWalker");
- JCL->NoClassDefFoundError =
- JCL->asciizConstructUTF8("java/lang/NoClassDefFoundError");
-
-#define DEF_UTF8(var) \
- JCL->var = JCL->asciizConstructUTF8(#var)
-
- DEF_UTF8(abs);
- DEF_UTF8(sqrt);
- DEF_UTF8(sin);
- DEF_UTF8(cos);
- DEF_UTF8(tan);
- DEF_UTF8(asin);
- DEF_UTF8(acos);
- DEF_UTF8(atan);
- DEF_UTF8(atan2);
- DEF_UTF8(exp);
- DEF_UTF8(log);
- DEF_UTF8(pow);
- DEF_UTF8(ceil);
- DEF_UTF8(floor);
- DEF_UTF8(rint);
- DEF_UTF8(cbrt);
- DEF_UTF8(cosh);
- DEF_UTF8(expm1);
- DEF_UTF8(hypot);
- DEF_UTF8(log10);
- DEF_UTF8(log1p);
- DEF_UTF8(sinh);
- DEF_UTF8(tanh);
- DEF_UTF8(finalize);
-
-#undef DEF_UTF8
+ bootstrapLoader = gc_new(JnjvmBootstrapLoader)(0);
}
void mvm::VirtualMachine::initialiseJVM() {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=58190&r1=58189&r2=58190&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sun Oct 26 12:25:28 2008
@@ -64,6 +64,145 @@
upcalls = new(allocator) Classpath();
bootstrapLoader = this;
+
+
+ // Create the name of char arrays.
+ const UTF8* utf8OfChar = asciizConstructUTF8("[C");
+
+ // Create the base class of char arrays.
+ upcalls->OfChar = UPCALL_PRIMITIVE_CLASS(this, "char", 2);
+
+ // Create the char array.
+ upcalls->ArrayOfChar = constructArray(utf8OfChar, upcalls->OfChar);
+
+ // Alright, now we can repair the damage: set the class to the UTF8s created
+ // and set the array class of UTF8s.
+ ((UTF8*)utf8OfChar)->classOf = upcalls->ArrayOfChar;
+ ((UTF8*)upcalls->OfChar->name)->classOf = upcalls->ArrayOfChar;
+ hashUTF8->array = upcalls->ArrayOfChar;
+
+ // Create the byte array, so that bytes for classes can be created.
+ upcalls->OfByte = UPCALL_PRIMITIVE_CLASS(this, "byte", 1);
+ upcalls->ArrayOfByte = constructArray(asciizConstructUTF8("[B"),
+ upcalls->OfByte);
+
+ InterfacesArray =
+ (Class**)allocator.Allocate(2 * sizeof(UserClass*));
+
+ // Now we can create the super and interfaces of arrays.
+ InterfacesArray[0] = loadName(asciizConstructUTF8("java/lang/Cloneable"),
+ false, false);
+
+ InterfacesArray[1] = loadName(asciizConstructUTF8("java/io/Serializable"),
+ false, false);
+
+ SuperArray = loadName(asciizConstructUTF8("java/lang/Object"), false,
+ false);
+
+#ifdef ISOLATE_SHARING
+ if (!ClassArray::SuperArray) {
+ ClassArray::SuperArray = SuperArray->classDef;
+ ClassArray::InterfacesArray[0] = ((Class*)InterfacesArray[0]->classDef);
+ ClassArray::InterfacesArray[1] = ((Class*)InterfacesArray[1]->classDef);
+ }
+#else
+ ClassArray::SuperArray = SuperArray;
+ ClassArray::InterfacesArray = InterfacesArray;
+#endif
+
+ // And repair the damage: set the interfaces and super of array classes already
+ // created.
+ upcalls->ArrayOfChar->setInterfaces(InterfacesArray);
+ upcalls->ArrayOfChar->setSuper(SuperArray);
+ upcalls->ArrayOfByte->setInterfaces(InterfacesArray);
+ upcalls->ArrayOfByte->setSuper(SuperArray);
+
+ // Yay, create the other primitive types.
+ upcalls->OfBool = UPCALL_PRIMITIVE_CLASS(this, "boolean", 1);
+ upcalls->OfShort = UPCALL_PRIMITIVE_CLASS(this, "short", 2);
+ upcalls->OfInt = UPCALL_PRIMITIVE_CLASS(this, "int", 4);
+ upcalls->OfLong = UPCALL_PRIMITIVE_CLASS(this, "long", 8);
+ upcalls->OfFloat = UPCALL_PRIMITIVE_CLASS(this, "float", 4);
+ upcalls->OfDouble = UPCALL_PRIMITIVE_CLASS(this, "double", 8);
+ upcalls->OfVoid = UPCALL_PRIMITIVE_CLASS(this, "void", 0);
+
+ // And finally create the primitive arrays.
+ upcalls->ArrayOfInt = constructArray(asciizConstructUTF8("[I"),
+ upcalls->OfInt);
+
+ upcalls->ArrayOfBool = constructArray(asciizConstructUTF8("[Z"),
+ upcalls->OfBool);
+
+ upcalls->ArrayOfLong = constructArray(asciizConstructUTF8("[J"),
+ upcalls->OfLong);
+
+ upcalls->ArrayOfFloat = constructArray(asciizConstructUTF8("[F"),
+ upcalls->OfFloat);
+
+ upcalls->ArrayOfDouble = constructArray(asciizConstructUTF8("[D"),
+ upcalls->OfDouble);
+
+ upcalls->ArrayOfShort = constructArray(asciizConstructUTF8("[S"),
+ upcalls->OfShort);
+
+ upcalls->ArrayOfString =
+ constructArray(asciizConstructUTF8("[Ljava/lang/String;"));
+
+ upcalls->ArrayOfObject =
+ constructArray(asciizConstructUTF8("[Ljava/lang/Object;"));
+
+
+ Attribut::codeAttribut = asciizConstructUTF8("Code");
+ Attribut::exceptionsAttribut = asciizConstructUTF8("Exceptions");
+ Attribut::constantAttribut = asciizConstructUTF8("ConstantValue");
+ Attribut::lineNumberTableAttribut = asciizConstructUTF8("LineNumberTable");
+ Attribut::innerClassesAttribut = asciizConstructUTF8("InnerClasses");
+ Attribut::sourceFileAttribut = asciizConstructUTF8("SourceFile");
+
+ initName = asciizConstructUTF8("<init>");
+ clinitName = asciizConstructUTF8("<clinit>");
+ clinitType = asciizConstructUTF8("()V");
+ runName = asciizConstructUTF8("run");
+ prelib = asciizConstructUTF8("lib");
+#if defined(__MACH__)
+ postlib = asciizConstructUTF8(".dylib");
+#else
+ postlib = asciizConstructUTF8(".so");
+#endif
+ mathName = asciizConstructUTF8("java/lang/Math");
+ stackWalkerName = asciizConstructUTF8("gnu/classpath/VMStackWalker");
+ NoClassDefFoundError = asciizConstructUTF8("java/lang/NoClassDefFoundError");
+
+#define DEF_UTF8(var) \
+ var = asciizConstructUTF8(#var)
+
+ DEF_UTF8(abs);
+ DEF_UTF8(sqrt);
+ DEF_UTF8(sin);
+ DEF_UTF8(cos);
+ DEF_UTF8(tan);
+ DEF_UTF8(asin);
+ DEF_UTF8(acos);
+ DEF_UTF8(atan);
+ DEF_UTF8(atan2);
+ DEF_UTF8(exp);
+ DEF_UTF8(log);
+ DEF_UTF8(pow);
+ DEF_UTF8(ceil);
+ DEF_UTF8(floor);
+ DEF_UTF8(rint);
+ DEF_UTF8(cbrt);
+ DEF_UTF8(cosh);
+ DEF_UTF8(expm1);
+ DEF_UTF8(hypot);
+ DEF_UTF8(log10);
+ DEF_UTF8(log1p);
+ DEF_UTF8(sinh);
+ DEF_UTF8(tanh);
+ DEF_UTF8(finalize);
+
+#undef DEF_UTF8
+
}
JnjvmClassLoader::JnjvmClassLoader(JnjvmClassLoader& JCL, JavaObject* loader,
More information about the vmkit-commits
mailing list