//===-- IRExecutionUnit.h ---------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_EXPRESSION_IREXECUTIONUNIT_H #define LLDB_EXPRESSION_IREXECUTIONUNIT_H #include <atomic> #include <memory> #include <string> #include <vector> #include "llvm/ExecutionEngine/SectionMemoryManager.h" #include "llvm/IR/Module.h" #include "lldb/Expression/IRMemoryMap.h" #include "lldb/Expression/ObjectFileJIT.h" #include "lldb/Symbol/SymbolContext.h" #include "lldb/Utility/DataBufferHeap.h" #include "lldb/lldb-forward.h" #include "lldb/lldb-private.h" namespace llvm { class Module; class ExecutionEngine; class ObjectCache; } // namespace llvm namespace lldb_private { class Status; /// \class IRExecutionUnit IRExecutionUnit.h /// "lldb/Expression/IRExecutionUnit.h" Contains the IR and, optionally, JIT- /// compiled code for a module. /// /// This class encapsulates the compiled version of an expression, in IR form /// (for interpretation purposes) and in raw machine code form (for execution /// in the target). /// /// This object wraps an IR module that comes from the expression parser, and /// knows how to use the JIT to make it into executable code. It can then be /// used as input to the IR interpreter, or the address of the executable code /// can be passed to a thread plan to run in the target. /// /// This class creates a subclass of LLVM's SectionMemoryManager, because that /// is how the JIT emits code. Because LLDB needs to move JIT-compiled code /// into the target process, the IRExecutionUnit knows how to copy the emitted /// code into the target process. class IRExecutionUnit : public std::enable_shared_from_this<IRExecutionUnit>, public IRMemoryMap, public ObjectFileJITDelegate { … }; } // namespace lldb_private #endif // LLDB_EXPRESSION_IREXECUTIONUNIT_H