LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::jitlink::BlockAddressMap Class Reference

Enables easy lookup of blocks by addresses. More...

#include "llvm/ExecutionEngine/JITLink/JITLink.h"

Public Types

using AddrToBlockMap = std::map< orc::ExecutorAddr, Block * >
 
using const_iterator = AddrToBlockMap::const_iterator
 

Public Member Functions

 BlockAddressMap ()=default
 
template<typename PredFn = decltype(includeAllBlocks)>
Error addBlock (Block &B, PredFn Pred=includeAllBlocks)
 Add a block to the map.
 
void addBlockWithoutChecking (Block &B)
 Add a block to the map without checking for overlap with existing blocks.
 
template<typename BlockPtrRange , typename PredFn = decltype(includeAllBlocks)>
Error addBlocks (BlockPtrRange &&Blocks, PredFn Pred=includeAllBlocks)
 Add a range of blocks to the map.
 
template<typename BlockPtrRange >
void addBlocksWithoutChecking (BlockPtrRange &&Blocks)
 Add a range of blocks to the map without checking for overlap with existing blocks.
 
const_iterator begin () const
 Iterates over (Address, Block*) pairs in ascending order of address.
 
const_iterator end () const
 
BlockgetBlockAt (orc::ExecutorAddr Addr) const
 Returns the block starting at the given address, or nullptr if no such block exists.
 
BlockgetBlockCovering (orc::ExecutorAddr Addr) const
 Returns the block covering the given address, or nullptr if no such block exists.
 

Static Public Member Functions

static bool includeAllBlocks (const Block &B)
 A block predicate that always adds all blocks.
 
static bool includeNonNull (const Block &B)
 A block predicate that always includes blocks with non-null addresses.
 

Detailed Description

Enables easy lookup of blocks by addresses.

Definition at line 1560 of file JITLink.h.

Member Typedef Documentation

◆ AddrToBlockMap

Definition at line 1562 of file JITLink.h.

◆ const_iterator

using llvm::jitlink::BlockAddressMap::const_iterator = AddrToBlockMap::const_iterator

Definition at line 1563 of file JITLink.h.

Constructor & Destructor Documentation

◆ BlockAddressMap()

llvm::jitlink::BlockAddressMap::BlockAddressMap ( )
default

Member Function Documentation

◆ addBlock()

template<typename PredFn = decltype(includeAllBlocks)>
Error llvm::jitlink::BlockAddressMap::addBlock ( Block B,
PredFn  Pred = includeAllBlocks 
)
inline

Add a block to the map.

Returns an error if the block overlaps with any existing block.

Definition at line 1576 of file JITLink.h.

References B, I, and llvm::Error::success().

Referenced by addBlocks().

◆ addBlocks()

template<typename BlockPtrRange , typename PredFn = decltype(includeAllBlocks)>
Error llvm::jitlink::BlockAddressMap::addBlocks ( BlockPtrRange &&  Blocks,
PredFn  Pred = includeAllBlocks 
)
inline

Add a range of blocks to the map.

Returns an error if any block in the range overlaps with any other block in the range, or with any existing block in the map.

Definition at line 1611 of file JITLink.h.

References addBlock(), B, Blocks, and llvm::Error::success().

◆ addBlocksWithoutChecking()

template<typename BlockPtrRange >
void llvm::jitlink::BlockAddressMap::addBlocksWithoutChecking ( BlockPtrRange &&  Blocks)
inline

Add a range of blocks to the map without checking for overlap with existing blocks.

The client is responsible for ensuring that the block added does not overlap with any existing block.

Definition at line 1622 of file JITLink.h.

References addBlockWithoutChecking(), B, and Blocks.

◆ addBlockWithoutChecking()

void llvm::jitlink::BlockAddressMap::addBlockWithoutChecking ( Block B)
inline

Add a block to the map without checking for overlap with existing blocks.

The client is responsible for ensuring that the block added does not overlap with any existing block.

Definition at line 1604 of file JITLink.h.

References B.

Referenced by addBlocksWithoutChecking().

◆ begin()

const_iterator llvm::jitlink::BlockAddressMap::begin ( ) const
inline

Iterates over (Address, Block*) pairs in ascending order of address.

Definition at line 1628 of file JITLink.h.

◆ end()

const_iterator llvm::jitlink::BlockAddressMap::end ( ) const
inline

Definition at line 1629 of file JITLink.h.

◆ getBlockAt()

Block * llvm::jitlink::BlockAddressMap::getBlockAt ( orc::ExecutorAddr  Addr) const
inline

Returns the block starting at the given address, or nullptr if no such block exists.

Definition at line 1633 of file JITLink.h.

References Addr, and I.

◆ getBlockCovering()

Block * llvm::jitlink::BlockAddressMap::getBlockCovering ( orc::ExecutorAddr  Addr) const
inline

Returns the block covering the given address, or nullptr if no such block exists.

Definition at line 1642 of file JITLink.h.

References Addr, B, getAddress(), and I.

◆ includeAllBlocks()

static bool llvm::jitlink::BlockAddressMap::includeAllBlocks ( const Block B)
inlinestatic

A block predicate that always adds all blocks.

Definition at line 1566 of file JITLink.h.

◆ includeNonNull()

static bool llvm::jitlink::BlockAddressMap::includeNonNull ( const Block B)
inlinestatic

A block predicate that always includes blocks with non-null addresses.

Definition at line 1569 of file JITLink.h.

References B.

Referenced by llvm::jitlink::EHFrameEdgeFixer::operator()().


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