14#ifndef LLVM_EXECUTIONENGINE_ORC_OBJECTLINKINGLAYER_H
15#define LLVM_EXECUTIONENGINE_ORC_OBJECTLINKINGLAYER_H
30class EHFrameRegistrar;
44 public RTTIExtends<ObjectLinkingLayer, ObjectLayer> {
52 std::function<void(std::unique_ptr<MemoryBuffer>)>;
69 std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr)
72 using LinkGraphLinkingLayer::getExecutionSession;
78 this->ReturnObjectBuffer = std::move(ReturnObjectBuffer);
81 using LinkGraphLinkingLayer::add;
82 using LinkGraphLinkingLayer::emit;
84 using ObjectLayer::add;
87 void emit(std::unique_ptr<MaterializationResponsibility> R,
88 std::unique_ptr<MemoryBuffer> O)
override;
Inheritance utility for extensible RTTI.
Manages allocations of JIT memory.
An ExecutionSession represents a running JIT program.
LinkGraphLinkingLayer links LinkGraphs into the Executor using JITLink.
An ObjectLayer implementation built on JITLink.
void setReturnObjectBuffer(ReturnObjectBufferFunction ReturnObjectBuffer)
Set an object buffer return function.
ObjectLinkingLayer(ExecutionSession &ES)
Construct an ObjectLinkingLayer using the ExecutorProcessControl instance's memory manager.
std::function< void(std::unique_ptr< MemoryBuffer >)> ReturnObjectBufferFunction
ObjectLinkingLayer(ExecutionSession &ES, jitlink::JITLinkMemoryManager &MemMgr)
Construct an ObjectLinkingLayer using a custom memory manager.
ObjectLinkingLayer(ExecutionSession &ES, std::unique_ptr< jitlink::JITLinkMemoryManager > MemMgr)
Construct an ObjectLinkingLayer.
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.