[vmkit-commits] [vmkit] r61884 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Jan 7 13:16:27 PST 2009
Author: geoffray
Date: Wed Jan 7 15:16:27 2009
New Revision: 61884
URL: http://llvm.org/viewvc/llvm-project?rev=61884&view=rev
Log:
If the class was vmjc'ed, create the tracer llvm::Function.
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=61884&r1=61883&r2=61884&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Jan 7 15:16:27 2009
@@ -1395,7 +1395,18 @@
JnjvmModule* Mod = classDef->classLoader->getModule();
if (!Mod->isStaticCompiling()) {
- Mod->makeVT((Class*)classDef);
+ if (!classDef->virtualVT) {
+ Mod->makeVT((Class*)classDef);
+ } else {
+ // So the class is vmjc'ed. Create the virtual tracer.
+ Function* func = Function::Create(JnjvmModule::MarkAndTraceType,
+ GlobalValue::ExternalLinkage,
+ "markAndTraceObject", Mod);
+
+ void* ptr = ((void**)classDef->virtualVT)[VT_TRACER_OFFSET];
+ Mod->executionEngine->addGlobalMapping(func, ptr);
+ virtualTracerFunction = func;
+ }
}
}
More information about the vmkit-commits
mailing list