LLVM  14.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::JITSymbolFlags Class Reference

Flags for symbols in the JIT. More...

#include "llvm/ExecutionEngine/JITSymbol.h"

Public Types

enum  FlagNames : UnderlyingType {
  None = 0, HasError = 1U << 0, Weak = 1U << 1, Common = 1U << 2,
  Absolute = 1U << 3, Exported = 1U << 4, Callable = 1U << 5, MaterializationSideEffectsOnly = 1U << 6,
  LLVM_MARK_AS_BITMASK_ENUM
}
 
using UnderlyingType = uint8_t
 
using TargetFlagsType = uint8_t
 

Public Member Functions

 JITSymbolFlags ()=default
 Default-construct a JITSymbolFlags instance. More...
 
 JITSymbolFlags (FlagNames Flags)
 Construct a JITSymbolFlags instance from the given flags. More...
 
 JITSymbolFlags (FlagNames Flags, TargetFlagsType TargetFlags)
 Construct a JITSymbolFlags instance from the given flags and target flags. More...
 
 operator bool () const
 Implicitly convert to bool. Returs true if any flag is set. More...
 
bool operator== (const JITSymbolFlags &RHS) const
 Compare for equality. More...
 
JITSymbolFlagsoperator&= (const FlagNames &RHS)
 Bitwise AND-assignment for FlagNames. More...
 
JITSymbolFlagsoperator|= (const FlagNames &RHS)
 Bitwise OR-assignment for FlagNames. More...
 
bool hasError () const
 Return true if there was an error retrieving this symbol. More...
 
bool isWeak () const
 Returns true if the Weak flag is set. More...
 
bool isCommon () const
 Returns true if the Common flag is set. More...
 
bool isStrong () const
 Returns true if the symbol isn't weak or common. More...
 
bool isExported () const
 Returns true if the Exported flag is set. More...
 
bool isCallable () const
 Returns true if the given symbol is known to be callable. More...
 
bool hasMaterializationSideEffectsOnly () const
 Returns true if this symbol is a materialization-side-effects-only symbol. More...
 
UnderlyingType getRawFlagsValue () const
 Get the underlying flags value as an integer. More...
 
TargetFlagsTypegetTargetFlags ()
 Return a reference to the target-specific flags. More...
 
const TargetFlagsTypegetTargetFlags () const
 Return a reference to the target-specific flags. More...
 

Static Public Member Functions

static JITSymbolFlags fromGlobalValue (const GlobalValue &GV)
 Construct a JITSymbolFlags value based on the flags of the given global value. More...
 
static JITSymbolFlags fromSummary (GlobalValueSummary *S)
 Construct a JITSymbolFlags value based on the flags of the given global value summary. More...
 
static Expected< JITSymbolFlagsfromObjectSymbol (const object::SymbolRef &Symbol)
 Construct a JITSymbolFlags value based on the flags of the given libobject symbol. More...
 

Detailed Description

Flags for symbols in the JIT.

Definition at line 74 of file JITSymbol.h.

Member Typedef Documentation

◆ TargetFlagsType

Definition at line 77 of file JITSymbol.h.

◆ UnderlyingType

Definition at line 76 of file JITSymbol.h.

Member Enumeration Documentation

◆ FlagNames

Enumerator
None 
HasError 
Weak 
Common 
Absolute 
Exported 
Callable 
MaterializationSideEffectsOnly 
LLVM_MARK_AS_BITMASK_ENUM 

Definition at line 79 of file JITSymbol.h.

Constructor & Destructor Documentation

◆ JITSymbolFlags() [1/3]

llvm::JITSymbolFlags::JITSymbolFlags ( )
default

Default-construct a JITSymbolFlags instance.

◆ JITSymbolFlags() [2/3]

llvm::JITSymbolFlags::JITSymbolFlags ( FlagNames  Flags)
inline

Construct a JITSymbolFlags instance from the given flags.

Definition at line 96 of file JITSymbol.h.

◆ JITSymbolFlags() [3/3]

llvm::JITSymbolFlags::JITSymbolFlags ( FlagNames  Flags,
TargetFlagsType  TargetFlags 
)
inline

Construct a JITSymbolFlags instance from the given flags and target flags.

Definition at line 100 of file JITSymbol.h.

Member Function Documentation

◆ fromGlobalValue()

JITSymbolFlags llvm::JITSymbolFlags::fromGlobalValue ( const GlobalValue GV)
static

◆ fromObjectSymbol()

Expected< JITSymbolFlags > llvm::JITSymbolFlags::fromObjectSymbol ( const object::SymbolRef Symbol)
static

◆ fromSummary()

JITSymbolFlags llvm::JITSymbolFlags::fromSummary ( GlobalValueSummary S)
static

◆ getRawFlagsValue()

UnderlyingType llvm::JITSymbolFlags::getRawFlagsValue ( ) const
inline

Get the underlying flags value as an integer.

Definition at line 167 of file JITSymbol.h.

◆ getTargetFlags() [1/2]

TargetFlagsType& llvm::JITSymbolFlags::getTargetFlags ( )
inline

Return a reference to the target-specific flags.

Definition at line 172 of file JITSymbol.h.

Referenced by llvm::RuntimeDyldMachOARM::modifyAddressBasedOnFlags().

◆ getTargetFlags() [2/2]

const TargetFlagsType& llvm::JITSymbolFlags::getTargetFlags ( ) const
inline

Return a reference to the target-specific flags.

Definition at line 175 of file JITSymbol.h.

◆ hasError()

bool llvm::JITSymbolFlags::hasError ( ) const
inline

◆ hasMaterializationSideEffectsOnly()

bool llvm::JITSymbolFlags::hasMaterializationSideEffectsOnly ( ) const
inline

Returns true if this symbol is a materialization-side-effects-only symbol.

Such symbols do not have a real address. They exist to trigger and support synchronization of materialization side effects, e.g. for collecting initialization information. These symbols will vanish from the symbol table immediately upon reaching the ready state, and will appear to queries as if they were never defined (except that query callback execution will be delayed until they reach the ready state). MaterializationSideEffectOnly symbols should only be queried using the SymbolLookupFlags::WeaklyReferencedSymbol flag (see llvm/include/llvm/ExecutionEngine/Orc/Core.h).

Definition at line 161 of file JITSymbol.h.

References MaterializationSideEffectsOnly.

Referenced by llvm::orc::AsynchronousSymbolQuery::notifySymbolMetRequiredState().

◆ isCallable()

bool llvm::JITSymbolFlags::isCallable ( ) const
inline

Returns true if the given symbol is known to be callable.

Definition at line 149 of file JITSymbol.h.

References Callable.

Referenced by llvm::orc::operator<<().

◆ isCommon()

bool llvm::JITSymbolFlags::isCommon ( ) const
inline

Returns true if the Common flag is set.

Definition at line 134 of file JITSymbol.h.

References Common.

Referenced by isStrong(), and llvm::orc::operator<<().

◆ isExported()

bool llvm::JITSymbolFlags::isExported ( ) const
inline

Returns true if the Exported flag is set.

Definition at line 144 of file JITSymbol.h.

References Exported.

Referenced by llvm::orc::operator<<().

◆ isStrong()

bool llvm::JITSymbolFlags::isStrong ( ) const
inline

Returns true if the symbol isn't weak or common.

Definition at line 139 of file JITSymbol.h.

References isCommon(), and isWeak().

◆ isWeak()

bool llvm::JITSymbolFlags::isWeak ( ) const
inline

Returns true if the Weak flag is set.

Definition at line 129 of file JITSymbol.h.

References Weak.

Referenced by isStrong(), and llvm::orc::operator<<().

◆ operator bool()

llvm::JITSymbolFlags::operator bool ( ) const
inlineexplicit

Implicitly convert to bool. Returs true if any flag is set.

Definition at line 104 of file JITSymbol.h.

References None.

◆ operator&=()

JITSymbolFlags& llvm::JITSymbolFlags::operator&= ( const FlagNames RHS)
inline

Bitwise AND-assignment for FlagNames.

Definition at line 112 of file JITSymbol.h.

◆ operator==()

bool llvm::JITSymbolFlags::operator== ( const JITSymbolFlags RHS) const
inline

Compare for equality.

Definition at line 107 of file JITSymbol.h.

◆ operator|=()

JITSymbolFlags& llvm::JITSymbolFlags::operator|= ( const FlagNames RHS)
inline

Bitwise OR-assignment for FlagNames.

Definition at line 118 of file JITSymbol.h.


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