LLVM: llvm::jitlink::Block Class Reference (original) (raw)

An Addressable with content and edges. More...

#include "[llvm/ExecutionEngine/JITLink/JITLink.h](JITLink%5F8h%5Fsource.html)"

Public Types
using EdgeVector = std::vector<Edge>
using edge_iterator = EdgeVector::iterator
using const_edge_iterator = EdgeVector::const_iterator
Public Member Functions
Block (const Block &)=delete
Block & operator= (const Block &)=delete
Block (Block &&)=delete
Block & operator= (Block &&)=delete
Section & getSection () const
Return the parent section for this block.
bool isZeroFill () const
Returns true if this is a zero-fill block.
size_t getSize () const
Returns the size of this defined addressable.
void setZeroFillSize (size_t Size)
Turns this block into a zero-fill block of the given size.
orc::ExecutorAddrRange getRange () const
Returns the address range of this defined addressable.
ArrayRef< char > getContent () const
Get the content for this block. Block must not be a zero-fill block.
void setContent (ArrayRef< char > Content)
Set the content for this block.
MutableArrayRef< char > getMutableContent (LinkGraph &G)
Get mutable content for this block.
MutableArrayRef< char > getAlreadyMutableContent ()
Get mutable content for this block.
void setMutableContent (MutableArrayRef< char > MutableContent)
Set mutable content for this block.
bool isContentMutable () const
Returns true if this block's content is mutable.
uint64_t getAlignment () const
Get the alignment for this content.
void setAlignment (uint64_t Alignment)
Set the alignment for this content.
uint64_t getAlignmentOffset () const
Get the alignment offset for this content.
void setAlignmentOffset (uint64_t AlignmentOffset)
Set the alignment offset for this content.
void addEdge (Edge::Kind K, Edge::OffsetT Offset, Symbol &Target, Edge::AddendT Addend)
Add an edge to this block.
void addEdge (const Edge &E)
Add an edge by copying an existing one.
iterator_range< edge_iterator > edges ()
Return the list of edges attached to this content.
iterator_range< const_edge_iterator > edges () const
Returns the list of edges attached to this content.
auto edges_at (Edge::OffsetT O)
Returns an iterator over all edges at the given offset within the block.
auto edges_at (Edge::OffsetT O) const
Returns an iterator over all edges at the given offset within the block.
size_t edges_size () const
Return the size of the edges list.
bool edges_empty () const
Returns true if the list of edges is empty.
edge_iterator removeEdge (edge_iterator I)
Remove the edge pointed to by the given iterator.
orc::ExecutorAddr getFixupAddress (const Edge &E) const
Returns the address of the fixup for the given edge, which is equal to this block's address plus the edge's offset.
Public Member Functions inherited from llvm::jitlink::Addressable
Addressable (const Addressable &)=delete
Addressable & operator= (const Addressable &)=default
Addressable (Addressable &&)=delete
Addressable & operator= (Addressable &&)=default
orc::ExecutorAddr getAddress () const
void setAddress (orc::ExecutorAddr Address)
bool isDefined () const
Returns true if this is a defined addressable, in which case you can downcast this to a Block.
bool isAbsolute () const
Additional Inherited Members
Protected Member Functions inherited from llvm::jitlink::Addressable
Addressable (orc::ExecutorAddr Address, bool IsDefined)
Addressable (orc::ExecutorAddr Address)
Protected Attributes inherited from llvm::jitlink::Addressable
uint64_t ContentMutable: 1
uint64_t P2Align: 5
uint64_t AlignmentOffset: 56

An Addressable with content and edges.

Definition at line 159 of file JITLink.h.

const_edge_iterator

using llvm::jitlink::Block::const_edge_iterator = EdgeVector::const_iterator

edge_iterator

using llvm::jitlink::Block::edge_iterator = EdgeVector::iterator

EdgeVector

Block() [1/2]

llvm::jitlink::Block::Block ( const Block & ) delete

Block() [2/2]

llvm::jitlink::Block::Block ( Block && ) delete

addEdge() [1/2]

void llvm::jitlink::Block::addEdge ( const Edge & E) inline

Add an edge by copying an existing one.

This is typically used when moving edges between blocks.

Definition at line 328 of file JITLink.h.

References E().

addEdge() [2/2]

void llvm::jitlink::Block::addEdge ( Edge::Kind K, Edge::OffsetT Offset, Symbol & Target, Edge::AddendT Addend ) inline

edges() [1/2]

edges() [2/2]

edges_at() [1/2]

auto llvm::jitlink::Block::edges_at ( Edge::OffsetT O) inline

edges_at() [2/2]

auto llvm::jitlink::Block::edges_at ( Edge::OffsetT O) const inline

edges_empty()

bool llvm::jitlink::Block::edges_empty ( ) const inline

Returns true if the list of edges is empty.

Definition at line 356 of file JITLink.h.

edges_size()

size_t llvm::jitlink::Block::edges_size ( ) const inline

Return the size of the edges list.

Definition at line 353 of file JITLink.h.

getAlignment()

uint64_t llvm::jitlink::Block::getAlignment ( ) const inline

getAlignmentOffset()

uint64_t llvm::jitlink::Block::getAlignmentOffset ( ) const inline

getAlreadyMutableContent()

getContent()

ArrayRef< char > llvm::jitlink::Block::getContent ( ) const inline

getFixupAddress()

getMutableContent()

getRange()

getSection()

Section & llvm::jitlink::Block::getSection ( ) const inline

getSize()

size_t llvm::jitlink::Block::getSize ( ) const inline

isContentMutable()

bool llvm::jitlink::Block::isContentMutable ( ) const inline

Returns true if this block's content is mutable.

This is primarily useful for asserting that a block is already in a mutable state prior to modifying the content. E.g. when applying fixups we expect the block to already be mutable as it should have been copied to working memory.

Definition at line 297 of file JITLink.h.

References llvm::jitlink::Addressable::ContentMutable.

isZeroFill()

bool llvm::jitlink::Block::isZeroFill ( ) const inline

operator=() [1/2]

Block & llvm::jitlink::Block::operator= ( Block && ) delete

operator=() [2/2]

removeEdge()

edge_iterator llvm::jitlink::Block::removeEdge ( edge_iterator I) inline

setAlignment()

void llvm::jitlink::Block::setAlignment ( uint64_t Alignment) inline

setAlignmentOffset()

void llvm::jitlink::Block::setAlignmentOffset ( uint64_t AlignmentOffset) inline

setContent()

void llvm::jitlink::Block::setContent ( ArrayRef< char > Content) inline

setMutableContent()

setZeroFillSize()

void llvm::jitlink::Block::setZeroFillSize ( size_t Size) inline

Turns this block into a zero-fill block of the given size.

Definition at line 236 of file JITLink.h.

LinkGraph


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