[vmkit-commits] [vmkit] r82137 - /vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Sep 17 02:25:19 PDT 2009


Author: geoffray
Date: Thu Sep 17 04:25:19 2009
New Revision: 82137

URL: http://llvm.org/viewvc/llvm-project?rev=82137&view=rev
Log:
Set the GC info when the method is JIT-generated.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp?rev=82137&r1=82136&r2=82137&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp Thu Sep 17 04:25:19 2009
@@ -12,8 +12,11 @@
 #include "llvm/Function.h"
 #include "llvm/Instructions.h"
 #include "llvm/Module.h"
+#include "llvm/CodeGen/GCStrategy.h"
 #include "llvm/ExecutionEngine/ExecutionEngine.h"
 #include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/raw_ostream.h"
 
 #include "MvmGC.h"
 #include "mvm/VirtualMachine.h"
@@ -224,6 +227,20 @@
   Function* func = parseFunction(meth);
   void* res = mvm::MvmModule::executionEngine->getPointerToGlobal(func);
   func->deleteBody();
+
+  // Update the GC info.
+  LLVMMethodInfo* LMI = getMethodInfo(meth);
+  // If it's not, we know the last GC info is for this method.
+  if (func->hasGC() && !LMI->GCInfo) {
+    GCStrategy::iterator I = mvm::MvmModule::GC->end();
+    I--;
+    DEBUG(errs() << (*I)->getFunction().getName() << '\n');
+    DEBUG(errs() << LMI->getMethod()->getName() << '\n');
+    assert(&(*I)->getFunction() == LMI->getMethod() &&
+           "GC Info and method do not correspond");
+    LMI->GCInfo = *I;
+  }
+
   mvm::MvmModule::unprotectIR();
 
   return res;





More information about the vmkit-commits mailing list