[vmkit-commits] [vmkit] r61509 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Dec 30 15:39:13 PST 2008


Author: geoffray
Date: Tue Dec 30 17:38:54 2008
New Revision: 61509

URL: http://llvm.org/viewvc/llvm-project?rev=61509&view=rev
Log:
Don't parse finalizers so early when static compiling.


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

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Tue Dec 30 17:38:54 2008
@@ -281,6 +281,8 @@
 }
 
 Constant* JnjvmModule::getVirtualTable(Class* classDef) {
+  LLVMClassInfo* LCI = getClassInfo((Class*)classDef);
+  LCI->getVirtualType();
   if (staticCompilation) {
     llvm::Constant* res = 0;
     virtual_table_iterator End = virtualTables.end();
@@ -297,7 +299,6 @@
       virtualTables.insert(std::make_pair(classDef, res));
      
       Function* Finalizer = ((Function**)classDef->virtualVT)[0];
-      LLVMClassInfo* LCI = getClassInfo((Class*)classDef);
       Function* Tracer = LCI->getVirtualTracer();
       Constant* C = CreateConstantFromVT(classDef->virtualVT,
                                          classDef->virtualTableSize, Finalizer,
@@ -310,8 +311,6 @@
     } 
 
   } else {
-    LLVMClassInfo* LCI = getClassInfo((Class*)classDef);
-    LCI->getVirtualType();
     assert(classDef->virtualVT && "Virtual VT not created");
     void* ptr = classDef->virtualVT;
     ConstantInt* CI = ConstantInt::get(Type::Int64Ty, uint64_t(ptr));
@@ -1153,7 +1152,7 @@
 
     // Special handling for finalize method. Don't put a finalizer
     // if there is none, or if it is empty.
-    if (meth.offset == 0) {
+    if (meth.offset == 0 && !staticCompilation) {
 #ifdef ISOLATE_SHARING
       ((void**)VT)[0] = 0;
 #else
@@ -1167,7 +1166,7 @@
         BasicBlock::iterator I = BB->begin();
         if (isa<ReturnInst>(I)) {
           ((void**)VT)[0] = 0;
-        } else if (!staticCompilation) {
+        } else {
           // LLVM does not allow recursive compilation. Create the code now.
           ((void**)VT)[0] = EE->getPointerToFunction(func);
         }





More information about the vmkit-commits mailing list