LLVM  8.0.1
Public Member Functions | List of all members
llvm::orc::IRLayer Class Referenceabstract

Interface for layers that accept LLVM IR. More...

#include "llvm/ExecutionEngine/Orc/Layer.h"

Inheritance diagram for llvm::orc::IRLayer:
Inheritance graph
[legend]

Public Member Functions

 IRLayer (ExecutionSession &ES)
 
virtual ~IRLayer ()
 
ExecutionSessiongetExecutionSession ()
 Returns the ExecutionSession for this layer. More...
 
void setCloneToNewContextOnEmit (bool CloneToNewContextOnEmit)
 Sets the CloneToNewContextOnEmit flag (false by default). More...
 
bool getCloneToNewContextOnEmit () const
 Returns the current value of the CloneToNewContextOnEmit flag. More...
 
virtual Error add (JITDylib &JD, ThreadSafeModule TSM, VModuleKey K=VModuleKey())
 Adds a MaterializationUnit representing the given IR to the given JITDylib. More...
 
virtual void emit (MaterializationResponsibility R, ThreadSafeModule TSM)=0
 Emit should materialize the given IR. More...
 

Detailed Description

Interface for layers that accept LLVM IR.

Definition at line 26 of file Layer.h.

Constructor & Destructor Documentation

◆ IRLayer()

llvm::orc::IRLayer::IRLayer ( ExecutionSession ES)

Definition at line 19 of file Layer.cpp.

◆ ~IRLayer()

llvm::orc::IRLayer::~IRLayer ( )
virtual

Definition at line 20 of file Layer.cpp.

Member Function Documentation

◆ add()

Error llvm::orc::IRLayer::add ( JITDylib JD,
ThreadSafeModule  TSM,
VModuleKey  K = VModuleKey() 
)
virtual

Adds a MaterializationUnit representing the given IR to the given JITDylib.

Definition at line 22 of file Layer.cpp.

References llvm::orc::JITDylib::define().

Referenced by getCloneToNewContextOnEmit(), and llvm::orc::ObjectLayer::getExecutionSession().

◆ emit()

virtual void llvm::orc::IRLayer::emit ( MaterializationResponsibility  R,
ThreadSafeModule  TSM 
)
pure virtual

◆ getCloneToNewContextOnEmit()

bool llvm::orc::IRLayer::getCloneToNewContextOnEmit ( ) const
inline

Returns the current value of the CloneToNewContextOnEmit flag.

Definition at line 48 of file Layer.h.

References add(), and emit().

Referenced by llvm::orc::BasicIRLayerMaterializationUnit::BasicIRLayerMaterializationUnit().

◆ getExecutionSession()

ExecutionSession& llvm::orc::IRLayer::getExecutionSession ( )
inline

◆ setCloneToNewContextOnEmit()

void llvm::orc::IRLayer::setCloneToNewContextOnEmit ( bool  CloneToNewContextOnEmit)
inline

Sets the CloneToNewContextOnEmit flag (false by default).

When set, IR modules added to this layer will be cloned on to a new context before emit is called. This can be used by clients who want to load all IR using one LLVMContext (to save memory via type and constant uniquing), but want to move Modules to fresh contexts before compiling them to enable concurrent compilation. Single threaded clients, or clients who load every module on a new context, need not set this.

Definition at line 43 of file Layer.h.

Referenced by llvm::orc::LLJIT::LLJIT().


The documentation for this class was generated from the following files: