[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