aboutsummaryrefslogtreecommitdiffstats
path: root/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/Kaleidoscope/Orc/fully_lazy/toy.cpp')
-rw-r--r--examples/Kaleidoscope/Orc/fully_lazy/toy.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp b/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
index 2e65756..3b5dcd0 100644
--- a/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
+++ b/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp
@@ -716,7 +716,7 @@ public:
M(new Module(GenerateUniqueName("jit_module_"),
Session.getLLVMContext())),
Builder(Session.getLLVMContext()) {
- M->setDataLayout(Session.getTarget().getDataLayout());
+ M->setDataLayout(*Session.getTarget().getDataLayout());
}
SessionContext& getSession() { return Session; }
@@ -1185,7 +1185,8 @@ public:
return MangledName;
}
- void addFunctionDefinition(std::unique_ptr<FunctionAST> FnAST) {
+ void addFunctionAST(std::unique_ptr<FunctionAST> FnAST) {
+ std::cerr << "Adding AST: " << FnAST->Proto->Name << "\n";
FunctionDefs[mangle(FnAST->Proto->Name)] = std::move(FnAST);
}
@@ -1201,7 +1202,7 @@ public:
// If we don't already have a definition of 'Name' then search
// the ASTs.
- return searchUncompiledASTs(Name);
+ return searchFunctionASTs(Name);
},
[](const std::string &S) { return 0; } );
@@ -1231,20 +1232,18 @@ private:
// This method searches the FunctionDefs map for a definition of 'Name'. If it
// finds one it generates a stub for it and returns the address of the stub.
- TargetAddress searchUncompiledASTs(const std::string &Name) {
+ TargetAddress searchFunctionASTs(const std::string &Name) {
auto DefI = FunctionDefs.find(Name);
if (DefI == FunctionDefs.end())
return 0;
- // We have AST for 'Name'. IRGen a stub for it and add it to the JIT.
- // FIXME: What happens if IRGen fails?
- auto H = irGenStub(std::move(DefI->second));
-
- // Remove the function definition's AST now that we're
- // finished with it.
+ // Return the address of the stub.
+ // Take the FunctionAST out of the map.
+ auto FnAST = std::move(DefI->second);
FunctionDefs.erase(DefI);
- // Return the address of the stub.
+ // IRGen the AST, add it to the JIT, and return the address for it.
+ auto H = irGenStub(std::move(FnAST));
return findSymbolIn(H, Name).getAddress();
}
@@ -1291,7 +1290,7 @@ private:
return findUnmangledSymbolIn(H, Fn->Proto->Name).getAddress();
});
CallbackInfo.setUpdateAction(
- CompileCallbacks.getLocalFPUpdater(H, mangle(BodyPtrName)));
+ getLocalFPUpdater(LazyEmitLayer, H, mangle(BodyPtrName)));
return H;
}
@@ -1310,7 +1309,7 @@ private:
static void HandleDefinition(SessionContext &S, KaleidoscopeJIT &J) {
if (auto F = ParseDefinition()) {
S.addPrototypeAST(llvm::make_unique<PrototypeAST>(*F->Proto));
- J.addFunctionDefinition(std::move(F));
+ J.addFunctionAST(std::move(F));
} else {
// Skip token for error recovery.
getNextToken();