diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h')
-rw-r--r-- | contrib/llvm-project/clang/lib/Interpreter/IncrementalExecutor.h | 23 |
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 |