[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