14#ifndef LLVM_EXECUTIONENGINE_ORC_OBJECTLINKINGLAYER_H
15#define LLVM_EXECUTIONENGINE_ORC_OBJECTLINKINGLAYER_H
29class EHFrameRegistrar;
42 public RTTIExtends<ObjectLinkingLayer, ObjectLayer> {
50 std::function<void(std::unique_ptr<MemoryBuffer>)>;
67 std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr)
85 void emit(std::unique_ptr<MaterializationResponsibility> R,
86 std::unique_ptr<MemoryBuffer> O)
override;
Inheritance utility for extensible RTTI.
Manages allocations of JIT memory.
An ExecutionSession represents a running JIT program.
ExecutionSession & getExecutionSession()
virtual Error add(ResourceTrackerSP RT, std::unique_ptr< jitlink::LinkGraph > G, MaterializationUnit::Interface I)
Adds a LinkGraph to the JITDylib for the given ResourceTracker.
LinkGraphLinkingLayer links LinkGraphs into the Executor using JITLink.
void emit(std::unique_ptr< MaterializationResponsibility > R, std::unique_ptr< jitlink::LinkGraph > G) override
Emit a LinkGraph.
std::function< void(std::unique_ptr< MemoryBuffer >)> ReturnObjectBuffer
virtual Error add(ResourceTrackerSP RT, std::unique_ptr< MemoryBuffer > O, MaterializationUnit::Interface I)
Adds a MaterializationUnit for the object file in the given memory buffer to the JITDylib for the giv...
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
void emit(std::unique_ptr< MaterializationResponsibility > R, std::unique_ptr< MemoryBuffer > O) override
Emit an object file.
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.