[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