[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