LLVM  10.0.0svn
Public Member Functions | List of all members
llvm::orc::ThreadSafeModule Class Reference

An LLVM Module together with a shared ThreadSafeContext. More...

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

Public Member Functions

 ThreadSafeModule ()=default
 Default construct a ThreadSafeModule. More...
 
 ThreadSafeModule (ThreadSafeModule &&Other)=default
 
ThreadSafeModuleoperator= (ThreadSafeModule &&Other)
 
 ThreadSafeModule (std::unique_ptr< Module > M, std::unique_ptr< LLVMContext > Ctx)
 Construct a ThreadSafeModule from a unique_ptr<Module> and a unique_ptr<LLVMContext>. More...
 
 ThreadSafeModule (std::unique_ptr< Module > M, ThreadSafeContext TSCtx)
 Construct a ThreadSafeModule from a unique_ptr<Module> and an existing ThreadSafeContext. More...
 
 ~ThreadSafeModule ()
 
 operator bool () const
 Boolean conversion: This ThreadSafeModule will evaluate to true if it wraps a non-null module. More...
 
template<typename Func >
auto withModuleDo (Func &&F) -> decltype(F(std::declval< Module &>()))
 Locks the associated ThreadSafeContext and calls the given function on the contained Module. More...
 
template<typename Func >
auto withModuleDo (Func &&F) const -> decltype(F(std::declval< const Module &>()))
 Locks the associated ThreadSafeContext and calls the given function on the contained Module. More...
 
ModulegetModuleUnlocked ()
 Get a raw pointer to the contained module without locking the context. More...
 
const ModulegetModuleUnlocked () const
 Get a raw pointer to the contained module without locking the context. More...
 
ThreadSafeContext getContext () const
 Returns the context for this ThreadSafeModule. More...
 

Detailed Description

An LLVM Module together with a shared ThreadSafeContext.

Definition at line 77 of file ThreadSafeModule.h.

Constructor & Destructor Documentation

◆ ThreadSafeModule() [1/4]

llvm::orc::ThreadSafeModule::ThreadSafeModule ( )
default

Default construct a ThreadSafeModule.

This results in a null module and null context.

◆ ThreadSafeModule() [2/4]

llvm::orc::ThreadSafeModule::ThreadSafeModule ( ThreadSafeModule &&  Other)
default

◆ ThreadSafeModule() [3/4]

llvm::orc::ThreadSafeModule::ThreadSafeModule ( std::unique_ptr< Module M,
std::unique_ptr< LLVMContext Ctx 
)
inline

Construct a ThreadSafeModule from a unique_ptr<Module> and a unique_ptr<LLVMContext>.

This creates a new ThreadSafeContext from the given context.

Definition at line 104 of file ThreadSafeModule.h.

◆ ThreadSafeModule() [4/4]

llvm::orc::ThreadSafeModule::ThreadSafeModule ( std::unique_ptr< Module M,
ThreadSafeContext  TSCtx 
)
inline

Construct a ThreadSafeModule from a unique_ptr<Module> and an existing ThreadSafeContext.

Definition at line 109 of file ThreadSafeModule.h.

◆ ~ThreadSafeModule()

llvm::orc::ThreadSafeModule::~ThreadSafeModule ( )
inline

Definition at line 112 of file ThreadSafeModule.h.

Member Function Documentation

◆ getContext()

ThreadSafeContext llvm::orc::ThreadSafeModule::getContext ( ) const
inline

Returns the context for this ThreadSafeModule.

Definition at line 156 of file ThreadSafeModule.h.

Referenced by llvm::orc::IRSpeculationLayer::emit().

◆ getModuleUnlocked() [1/2]

Module* llvm::orc::ThreadSafeModule::getModuleUnlocked ( )
inline

Get a raw pointer to the contained module without locking the context.

Definition at line 150 of file ThreadSafeModule.h.

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

◆ getModuleUnlocked() [2/2]

const Module* llvm::orc::ThreadSafeModule::getModuleUnlocked ( ) const
inline

Get a raw pointer to the contained module without locking the context.

Definition at line 153 of file ThreadSafeModule.h.

◆ operator bool()

llvm::orc::ThreadSafeModule::operator bool ( ) const
inlineexplicit

Boolean conversion: This ThreadSafeModule will evaluate to true if it wraps a non-null module.

Definition at line 122 of file ThreadSafeModule.h.

References assert().

◆ operator=()

ThreadSafeModule& llvm::orc::ThreadSafeModule::operator= ( ThreadSafeModule &&  Other)
inline

Definition at line 85 of file ThreadSafeModule.h.

References Other.

◆ withModuleDo() [1/2]

template<typename Func >
auto llvm::orc::ThreadSafeModule::withModuleDo ( Func &&  F) -> decltype(F(std::declval<Module &>()))
inline

◆ withModuleDo() [2/2]

template<typename Func >
auto llvm::orc::ThreadSafeModule::withModuleDo ( Func &&  F) const -> decltype(F(std::declval<const Module &>()))
inline

Locks the associated ThreadSafeContext and calls the given function on the contained Module.

Definition at line 143 of file ThreadSafeModule.h.

References F(), and llvm::Lock.


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