LLVM  15.0.0git
llvm::orc::MaterializationResponsibility Class Reference

Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and JDs. More...

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

## Public Member Functions

MaterializationResponsibility (MaterializationResponsibility &&)=delete

MaterializationResponsibilityoperator= (MaterializationResponsibility &&)=delete

~MaterializationResponsibility ()
Destruct a MaterializationResponsibility instance. More...

template<typename Func >
Error withResourceKeyDo (Func &&F) const
Returns the ResourceTracker for this instance. More...

JITDylibgetTargetJITDylib () const
Returns the target JITDylib that these symbols are being materialized into. More...

ExecutionSessiongetExecutionSession () const
Returns the ExecutionSession for this instance. More...

const SymbolFlagsMapgetSymbols () const
Returns the symbol flags map for this responsibility instance. More...

const SymbolStringPtrgetInitializerSymbol () const
Returns the initialization pseudo-symbol, if any. More...

SymbolNameSet getRequestedSymbols () const
Returns the names of any symbols covered by this MaterializationResponsibility object that have queries pending. More...

Error notifyResolved (const SymbolMap &Symbols)
Notifies the target JITDylib that the given symbols have been resolved. More...

Error notifyEmitted ()
Notifies the target JITDylib (and any pending queries on that JITDylib) that all symbols covered by this MaterializationResponsibility instance have been emitted. More...

Error defineMaterializing (SymbolFlagsMap SymbolFlags)
Attempt to claim responsibility for new definitions. More...

void defineNonExistent (ArrayRef< SymbolStringPtr > Symbols)
Define the given symbols as non-existent, removing it from the symbol table and notifying any pending queries. More...

void failMaterialization ()
Notify all not-yet-emitted covered by this MaterializationResponsibility instance that an error has occurred. More...

Error replace (std::unique_ptr< MaterializationUnit > MU)
Transfers responsibility to the given MaterializationUnit for all symbols defined by that MaterializationUnit. More...

Expected< std::unique_ptr< MaterializationResponsibility > > delegate (const SymbolNameSet &Symbols)
Delegates responsibility for the given symbols to the returned materialization responsibility. More...

void addDependencies (const SymbolStringPtr &Name, const SymbolDependenceMap &Dependencies)

Add dependencies that apply to all symbols covered by this instance. More...

## Friends

class ExecutionSession

class JITDylib

## Detailed Description

Tracks responsibility for materialization, and mediates interactions between MaterializationUnits and JDs.

An instance of this class is passed to MaterializationUnits when their materialize method is called. It allows MaterializationUnits to resolve and emit symbols, or abandon materialization by notifying any unmaterialized symbols of an error.

Definition at line 519 of file Core.h.

## ◆ MaterializationResponsibility()

 llvm::orc::MaterializationResponsibility::MaterializationResponsibility ( MaterializationResponsibility && )
delete

## ◆ ~MaterializationResponsibility()

 llvm::orc::MaterializationResponsibility::~MaterializationResponsibility ( )
inline

Destruct a MaterializationResponsibility instance.

In debug mode this asserts that all symbols being tracked have been either emitted or notified of an error.

Definition at line 1911 of file Core.h.

References getExecutionSession().

## Member Function Documentation

 void llvm::orc::MaterializationResponsibility::addDependencies ( const SymbolStringPtr & Name, const SymbolDependenceMap & Dependencies )
inline

Definition at line 1948 of file Core.h.

References getExecutionSession().

 void llvm::orc::MaterializationResponsibility::addDependenciesForAll ( const SymbolDependenceMap & Dependencies )
inline

Add dependencies that apply to all symbols covered by this instance.

Definition at line 1953 of file Core.h.

References getExecutionSession().

## ◆ defineMaterializing()

 Error llvm::orc::MaterializationResponsibility::defineMaterializing ( SymbolFlagsMap SymbolFlags )
inline

Attempt to claim responsibility for new definitions.

This method can be used to claim responsibility for symbols that are added to a materialization unit during the compilation process (e.g. literal pool symbols). Symbol linkage rules are the same as for symbols that are defined up front: duplicate strong definitions will result in errors. Duplicate weak definitions will be discarded (in which case they will not be added to this responsibility instance).

This method can be used by materialization units that want to add additional symbols at materialization time (e.g. stubs, compile callbacks, metadata).

Definition at line 1928 of file Core.h.

References getExecutionSession(), and move.

## ◆ defineNonExistent()

 void llvm::orc::MaterializationResponsibility::defineNonExistent ( ArrayRef< SymbolStringPtr > Symbols )

Define the given symbols as non-existent, removing it from the symbol table and notifying any pending queries.

Queries that lookup up the symbol using the SymbolLookupFlags::WeaklyReferencedSymbol flag will behave as if the symbol had not been matched in the first place. Queries that required this symbol will fail with a missing symbol definition error.

This method is intended to support cleanup of special symbols like initializer symbols: Queries using SymbolLookupFlags::WeaklyReferencedSymbol can be used to trigger their emission, and this method can be used to remove them from the JITDylib once materialization is complete.

## ◆ delegate()

 Expected< std::unique_ptr< MaterializationResponsibility > > llvm::orc::MaterializationResponsibility::delegate ( const SymbolNameSet & Symbols )
inline

Delegates responsibility for the given symbols to the returned materialization responsibility.

Useful for breaking up work between threads, or different kinds of materialization processes.

Definition at line 1944 of file Core.h.

References getExecutionSession().

## ◆ failMaterialization()

 void llvm::orc::MaterializationResponsibility::failMaterialization ( )
inline

Notify all not-yet-emitted covered by this MaterializationResponsibility instance that an error has occurred.

This will remove all symbols covered by this MaterializationResponsibilty from the target JITDylib, and send an error to any queries waiting on these symbols.

Definition at line 1934 of file Core.h.

References getExecutionSession().

## ◆ getExecutionSession()

 ExecutionSession & llvm::orc::MaterializationResponsibility::getExecutionSession ( ) const
inline

Returns the ExecutionSession for this instance.

Definition at line 1767 of file Core.h.

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

## ◆ getInitializerSymbol()

 const SymbolStringPtr& llvm::orc::MaterializationResponsibility::getInitializerSymbol ( ) const
inline

Returns the initialization pseudo-symbol, if any.

This symbol will also be present in the SymbolFlagsMap for this MaterializationResponsibility object.

Definition at line 552 of file Core.h.

## ◆ getRequestedSymbols()

 SymbolNameSet llvm::orc::MaterializationResponsibility::getRequestedSymbols ( ) const
inline

Returns the names of any symbols covered by this MaterializationResponsibility object that have queries pending.

This information can be used to return responsibility for unrequested symbols back to the JITDylib via the delegate method.

Definition at line 1915 of file Core.h.

References getExecutionSession().

## ◆ getSymbols()

 const SymbolFlagsMap& llvm::orc::MaterializationResponsibility::getSymbols ( ) const
inline

Returns the symbol flags map for this responsibility instance.

Note: The returned flags may have transient flags (Lazy, Materializing) set. These should be stripped with JITSymbolFlags::stripTransientFlags before using.

Definition at line 547 of file Core.h.

## ◆ getTargetJITDylib()

 JITDylib& llvm::orc::MaterializationResponsibility::getTargetJITDylib ( ) const
inline

Returns the target JITDylib that these symbols are being materialized into.

Definition at line 538 of file Core.h.

## ◆ notifyEmitted()

 Error llvm::orc::MaterializationResponsibility::notifyEmitted ( )
inline

Notifies the target JITDylib (and any pending queries on that JITDylib) that all symbols covered by this MaterializationResponsibility instance have been emitted.

This method will return an error if any symbols being resolved have been moved to the error state due to the failure of a dependency. If this method returns an error then clients should log it and call failMaterialize. If no dependencies have been registered for the symbols covered by this MaterializationResponsibiility then this method is guaranteed to return Error::success() and can be wrapped with cantFail.

Definition at line 1924 of file Core.h.

References getExecutionSession().

## ◆ notifyResolved()

 Error llvm::orc::MaterializationResponsibility::notifyResolved ( const SymbolMap & Symbols )
inline

Notifies the target JITDylib that the given symbols have been resolved.

This will update the given symbols' addresses in the JITDylib, and notify any pending queries on the given symbols of their resolution. The given symbols must be ones covered by this MaterializationResponsibility instance. Individual calls to this method may resolve a subset of the symbols, but all symbols must have been resolved prior to calling emit.

This method will return an error if any symbols being resolved have been moved to the error state due to the failure of a dependency. If this method returns an error then clients should log it and call failMaterialize. If no dependencies have been registered for the symbols covered by this MaterializationResponsibiility then this method is guaranteed to return Error::success() and can be wrapped with cantFail.

Definition at line 1919 of file Core.h.

References getExecutionSession().

## ◆ operator=()

 MaterializationResponsibility& llvm::orc::MaterializationResponsibility::operator= ( MaterializationResponsibility && )
delete

## ◆ replace()

 Error llvm::orc::MaterializationResponsibility::replace ( std::unique_ptr< MaterializationUnit > MU )
inline

Transfers responsibility to the given MaterializationUnit for all symbols defined by that MaterializationUnit.

This allows materializers to break up work based on run-time information (e.g. by introspecting which symbols have actually been looked up and materializing only those).

Definition at line 1938 of file Core.h.

References getExecutionSession(), and move.

## ◆ withResourceKeyDo()

template<typename Func >
 Error llvm::orc::MaterializationResponsibility::withResourceKeyDo ( Func && F ) const

Returns the ResourceTracker for this instance.

Definition at line 1772 of file Core.h.

## ◆ ExecutionSession

 friend class ExecutionSession
friend

Definition at line 520 of file Core.h.

## ◆ JITDylib

 friend class JITDylib
friend

Definition at line 521 of file Core.h.

The documentation for this class was generated from the following file:
• include/llvm/ExecutionEngine/Orc/Core.h