[vmkit-commits] [vmkit] r94897 - in /vmkit/trunk/lib/N3/VMCore: CLIJit.cpp N3ModuleProvider.cpp N3ModuleProvider.h VMThread.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Jan 30 08:44:18 PST 2010


Author: geoffray
Date: Sat Jan 30 10:44:18 2010
New Revision: 94897

URL: http://llvm.org/viewvc/llvm-project?rev=94897&view=rev
Log:
Make N3 compile again.


Modified:
    vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
    vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.cpp
    vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.h
    vmkit/trunk/lib/N3/VMCore/VMThread.cpp

Modified: vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/CLIJit.cpp?rev=94897&r1=94896&r2=94897&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIJit.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIJit.cpp Sat Jan 30 10:44:18 2010
@@ -1501,7 +1501,7 @@
   else {
     classDef->aquire();
     if (methPtr == 0) {
-      methPtr = Function::Create(getSignature(genMethod), GlobalValue::GhostLinkage,
+      methPtr = Function::Create(getSignature(genMethod), GlobalValue::ExternalWeakLinkage,
                                  mvm::PrintBuffer(this).cString(), classDef->vm->getLLVMModule());
       classDef->vm->functions->hash(methPtr, this);
     }
@@ -1536,7 +1536,7 @@
 
 void CLIJit::initialiseAppDomain(N3* vm) {
   mvm::MvmModule::protectEngine.lock();
-  mvm::MvmModule::executionEngine->addModuleProvider(vm->TheModuleProvider);
+  mvm::MvmModule::executionEngine->addModule(vm->getLLVMModule());
   mvm::MvmModule::protectEngine.unlock();
 }
 
@@ -1551,7 +1551,7 @@
   mvm::MvmModule* M = vm->module;
   Module* module = vm->getLLVMModule();
   M->protectEngine.lock();
-  M->executionEngine->addModuleProvider(vm->TheModuleProvider);
+  M->executionEngine->addModule(module);
   M->protectEngine.unlock();
     
   n3::llvm_runtime::makeLLVMModuleContents(module);

Modified: vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.cpp?rev=94897&r1=94896&r2=94897&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.cpp Sat Jan 30 10:44:18 2010
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include <llvm/Module.h>
-#include <llvm/ModuleProvider.h>
+#include <llvm/GVMaterializer.h>
 
 #include "mvm/JIT.h"
 
@@ -23,7 +23,10 @@
 using namespace n3;
 
 
-bool N3ModuleProvider::materializeFunction(Function *F, std::string *ErrInfo) {
+bool N3ModuleProvider::Materialize(GlobalValue *GV, std::string *ErrInfo) {
+  Function* F = dyn_cast<Function>(GV);
+  assert(F && "Not a function.");
+  if (F->getLinkage() == GlobalValue::ExternalLinkage) return false;
   if (!F->empty()) return false;
   VMMethod* meth = functions->lookup(F);
 
@@ -35,3 +38,7 @@
     return false;
   }
 }
+
+bool N3ModuleProvider::isMaterializable(const llvm::GlobalValue* GV) const {
+  return GV->getLinkage() == GlobalValue::ExternalWeakLinkage;
+}

Modified: vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.h?rev=94897&r1=94896&r2=94897&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.h (original)
+++ vmkit/trunk/lib/N3/VMCore/N3ModuleProvider.h Sat Jan 30 10:44:18 2010
@@ -10,7 +10,8 @@
 #ifndef N3_MODULE_PROVIDER_H
 #define N3_MODULE_PROVIDER_H
 
-#include <llvm/ModuleProvider.h>
+#include <llvm/GVMaterializer.h>
+#include <llvm/Module.h>
 
 #include "LockedMap.h"
 
@@ -18,17 +19,23 @@
 
 namespace n3 {
 
-class N3ModuleProvider : public ModuleProvider {
+class N3ModuleProvider : public GVMaterializer {
 public:
   FunctionMap* functions;
+  Module* TheModule;
+
   N3ModuleProvider(Module *m, FunctionMap* f) {
     TheModule = m;
+    m->setMaterializer(this);
     functions = f;
   }
   
-  bool materializeFunction(Function *F, std::string *ErrInfo = 0);
-
-  Module* materializeModule(std::string *ErrInfo = 0) { return TheModule; }
+  bool Materialize(GlobalValue *GV, std::string *ErrInfo = 0);
+  virtual bool isMaterializable(const llvm::GlobalValue*) const;
+  virtual bool isDematerializable(const llvm::GlobalValue*) const {
+    return false;
+  }
+  virtual bool MaterializeModule(llvm::Module*, std::string*) { return true; }
 
   VMMethod* lookupFunction(Function* F) {
     return functions->lookup(F);

Modified: vmkit/trunk/lib/N3/VMCore/VMThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMThread.cpp?rev=94897&r1=94896&r2=94897&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMThread.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMThread.cpp Sat Jan 30 10:44:18 2010
@@ -50,7 +50,7 @@
   this->interruptFlag = 0;
   this->state = StateRunning;
   this->ooo_pendingException = 0;
-  this->perFunctionPasses = new llvm::FunctionPassManager(vm->TheModuleProvider);
+  this->perFunctionPasses = new llvm::FunctionPassManager(vm->getLLVMModule());
   this->perFunctionPasses->add(new llvm::TargetData(vm->getLLVMModule()));
   AddStandardCompilePasses(this->perFunctionPasses);
 }





More information about the vmkit-commits mailing list