LLVM  13.0.0git
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 >
decltype(auto) withModuleDo (Func &&F)
 Locks the associated ThreadSafeContext and calls the given function on the contained Module. More...
 
template<typename Func >
decltype(auto) withModuleDo (Func &&F) const
 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.

References M.

◆ 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.

References M.

◆ ~ThreadSafeModule()

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

Definition at line 112 of file ThreadSafeModule.h.

References llvm::orc::ThreadSafeContext::getLock().

Member Function Documentation

◆ getContext()

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

Returns the context for this ThreadSafeModule.

Definition at line 153 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 147 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 150 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(), and llvm::orc::ThreadSafeContext::getContext().

◆ operator=()

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

Definition at line 85 of file ThreadSafeModule.h.

References llvm::orc::ThreadSafeContext::getLock(), move, and Other.

◆ withModuleDo() [1/2]

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

◆ withModuleDo() [2/2]

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

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

Definition at line 141 of file ThreadSafeModule.h.

References F, llvm::orc::ThreadSafeContext::getLock(), and llvm::Lock.


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