[vmkit-commits] [vmkit] r70974 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue May 5 06:05:55 PDT 2009


Author: geoffray
Date: Tue May  5 08:05:45 2009
New Revision: 70974

URL: http://llvm.org/viewvc/llvm-project?rev=70974&view=rev
Log:
Bugfix when initializing AOT classes.


Modified:
    vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp

Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=70974&r1=70973&r2=70974&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Tue May  5 08:05:45 2009
@@ -59,6 +59,8 @@
                                            bool dlLoad) : 
     JnjvmClassLoader(Alloc) {
   
+	TheCompiler = Comp;
+  
   hashUTF8 = new(allocator) UTF8Map(allocator, 0);
   classes = new(allocator) ClassMap();
   javaTypes = new(allocator) TypeMap(); 
@@ -90,7 +92,9 @@
     }
     
     if (SuperArray) {
-      ClassArray::SuperArray = (Class*)SuperArray->getInternal();
+      assert(TheCompiler && 
+					   "Loading libvmjc"DYLD_EXTENSION" requires a compiler");
+			ClassArray::SuperArray = (Class*)SuperArray->getInternal();
       
       // Get the native classes.
       upcalls->OfVoid = (ClassPrimitive*)dlsym(nativeHandle, "void");
@@ -242,7 +246,6 @@
 
 #undef DEF_UTF8
   
-  TheCompiler = Comp;
   
 }
 
@@ -1032,16 +1035,20 @@
 // Extern "C" functions called by the vmjc static intializer.
 extern "C" void vmjcAddPreCompiledClass(JnjvmClassLoader* JCL,
                                         CommonClass* cl) {
-  // To avoid data alignment in the llvm assembly emitter, we set the
-  // staticMethods and staticFields fields here.
+  cl->classLoader = JCL;
+  
   if (cl->isClass()) {
     Class* realCl = cl->asClass();
+		// To avoid data alignment in the llvm assembly emitter, we set the
+  	// staticMethods and staticFields fields here.
     realCl->staticMethods = realCl->virtualMethods + realCl->nbVirtualMethods;
     realCl->staticFields = realCl->virtualFields + realCl->nbVirtualFields;
+  	cl->virtualVT->setNativeTracer(cl->virtualVT->tracer, "");
   }
-  cl->classLoader = JCL;
-  cl->virtualVT->setNativeTracer(cl->virtualVT->tracer, "");
-  JCL->getClasses()->map.insert(std::make_pair(cl->name, cl));
+
+	if (!cl->isPrimitive())
+	  JCL->getClasses()->map.insert(std::make_pair(cl->name, cl));
+
 }
 
 extern "C" void vmjcGetClassArray(JnjvmClassLoader* JCL, ClassArray** ptr,





More information about the vmkit-commits mailing list