aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h')
-rw-r--r--contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h b/contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h
index b4c6ddec1047..dd0a210a0614 100644
--- a/contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h
+++ b/contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h
@@ -13,15 +13,15 @@
#ifndef LLVM_CLANG_LIB_INTERPRETER_INCREMENTALEXECUTOR_H
#define LLVM_CLANG_LIB_INTERPRETER_INCREMENTALEXECUTOR_H
+#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/Triple.h"
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
+#include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
#include <memory>
namespace llvm {
class Error;
-class Module;
namespace orc {
class LLJIT;
class ThreadSafeContext;
@@ -29,18 +29,33 @@ class ThreadSafeContext;
} // namespace llvm
namespace clang {
+
+struct PartialTranslationUnit;
+class TargetInfo;
+
class IncrementalExecutor {
using CtorDtorIterator = llvm::orc::CtorDtorIterator;
std::unique_ptr<llvm::orc::LLJIT> Jit;
llvm::orc::ThreadSafeContext &TSCtx;
+ llvm::DenseMap<const PartialTranslationUnit *, llvm::orc::ResourceTrackerSP>
+ ResourceTrackers;
+
public:
+ enum SymbolNameKind { IRName, LinkerName };
+
IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, llvm::Error &Err,
- const llvm::Triple &Triple);
+ const clang::TargetInfo &TI);
~IncrementalExecutor();
- llvm::Error addModule(std::unique_ptr<llvm::Module> M);
+ llvm::Error addModule(PartialTranslationUnit &PTU);
+ llvm::Error removeModule(PartialTranslationUnit &PTU);
llvm::Error runCtors() const;
+ llvm::Error cleanUp();
+ llvm::Expected<llvm::orc::ExecutorAddr>
+ getSymbolAddress(llvm::StringRef Name, SymbolNameKind NameKind) const;
+
+ llvm::orc::LLJIT &GetExecutionEngine() { return *Jit; }
};
} // end namespace clang