13#ifndef LLVM_CLANG_LIB_INTERPRETER_INCREMENTALEXECUTOR_H
14#define LLVM_CLANG_LIB_INTERPRETER_INCREMENTALEXECUTOR_H
17#include "llvm/ADT/DenseMap.h"
18#include "llvm/ADT/StringRef.h"
19#include "llvm/ExecutionEngine/Orc/Core.h"
20#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
21#include "llvm/ExecutionEngine/Orc/Layer.h"
22#include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
23#include "llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h"
24#include "llvm/Support/Error.h"
33class JITTargetMachineBuilder;
36class ThreadSafeContext;
46 using CtorDtorIterator = llvm::orc::CtorDtorIterator;
47 std::unique_ptr<llvm::orc::LLJIT> Jit;
48 llvm::orc::ThreadSafeContext &TSCtx;
49 uint32_t OutOfProcessChildPid = -1;
51 llvm::DenseMap<const PartialTranslationUnit *, llvm::orc::ResourceTrackerSP>
61 llvm::orc::LLJITBuilder &JITBuilder,
67 virtual llvm::Error
runCtors()
const;
80 std::pair<std::unique_ptr<llvm::orc::SimpleRemoteEPC>, uint32_t>>
81 launchExecutor(llvm::StringRef ExecutablePath,
bool UseSharedMemory,
82 unsigned SlabAllocateSize,
85#if LLVM_ON_UNIX && LLVM_ENABLE_THREADS
87 connectTCPSocket(llvm::StringRef NetworkAddress,
bool UseSharedMemory,
88 unsigned SlabAllocateSize);
llvm::orc::LLJIT & GetExecutionEngine()
static llvm::Expected< std::pair< std::unique_ptr< llvm::orc::SimpleRemoteEPC >, uint32_t > > launchExecutor(llvm::StringRef ExecutablePath, bool UseSharedMemory, unsigned SlabAllocateSize, std::function< void()> CustomizeFork=nullptr)
virtual llvm::Error runCtors() const
uint32_t getOutOfProcessChildPid() const
virtual llvm::Error addModule(PartialTranslationUnit &PTU)
virtual ~IncrementalExecutor()
virtual llvm::Expected< llvm::orc::ExecutorAddr > getSymbolAddress(llvm::StringRef Name, SymbolNameKind NameKind) const
static llvm::Expected< std::unique_ptr< llvm::orc::LLJITBuilder > > createDefaultJITBuilder(llvm::orc::JITTargetMachineBuilder JTMB)
virtual llvm::Error removeModule(PartialTranslationUnit &PTU)
IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC)
virtual llvm::Error cleanUp()
Exposes information about the current target.
The JSON file list parser is used to communicate input to InstallAPI.
Diagnostic wrappers for TextAPI types for error reporting.
int const char * function
The class keeps track of various objects created as part of processing incremental inputs.