LLVM  15.0.0git

An Addressable with content and edges. More...

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

[legend]
[legend]

## 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

Blockoperator= (const Block &)=delete

Block (Block &&)=delete

Blockoperator= (Block &&)=delete

SectiongetSection () const
Return the parent section for this block. More...

bool isZeroFill () const
Returns true if this is a zero-fill block. More...

size_t getSize () const
Returns the size of this defined addressable. More...

ArrayRef< char > getContent () const
Get the content for this block. Block must not be a zero-fill block. More...

void setContent (ArrayRef< char > Content)
Set the content for this block. More...

MutableArrayRef< char > getMutableContent (LinkGraph &G)
Get mutable content for this block. More...

Get mutable content for this block. More...

void setMutableContent (MutableArrayRef< char > MutableContent)
Set mutable content for this block. More...

bool isContentMutable () const
Returns true if this block's content is mutable. More...

uint64_t getAlignment () const
Get the alignment for this content. More...

void setAlignment (uint64_t Alignment)
Set the alignment for this content. More...

uint64_t getAlignmentOffset () const
Get the alignment offset for this content. More...

void setAlignmentOffset (uint64_t AlignmentOffset)
Set the alignment offset for this content. More...

Add an edge to this block. More...

Add an edge by copying an existing one. More...

iterator_range< edge_iteratoredges ()
Return the list of edges attached to this content. More...

iterator_range< const_edge_iteratoredges () const
Returns the list of edges attached to this content. More...

size_t edges_size () const
Return the size of the edges list. More...

bool edges_empty () const
Returns true if the list of edges is empty. More...

edge_iterator removeEdge (edge_iterator I)
Remove the edge pointed to by the given iterator. More...

Returns the address of the fixup for the given edge, which is equal to this block's address plus the edge's offset. More...

## Detailed Description

An Addressable with content and edges.

Definition at line 150 of file JITLink.h.

## ◆ const_edge_iterator

Definition at line 207 of file JITLink.h.

## ◆ edge_iterator

Definition at line 206 of file JITLink.h.

## ◆ EdgeVector

Definition at line 205 of file JITLink.h.

## ◆ Block() [1/2]

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

delete

## Member Function Documentation

inline

Add an edge by copying an existing one.

This is typically used when moving edges between blocks.

Definition at line 312 of file JITLink.h.

References E.

inline

Add an edge to this block.

Definition at line 304 of file JITLink.h.

References assert(), isZeroFill(), and Offset.

## ◆ edges() [1/2]

inline

Return the list of edges attached to this content.

Definition at line 315 of file JITLink.h.

References llvm::make_range().

## ◆ edges() [2/2]

inline

Returns the list of edges attached to this content.

Definition at line 320 of file JITLink.h.

References llvm::make_range().

## ◆ edges_empty()

inline

Returns true if the list of edges is empty.

Definition at line 328 of file JITLink.h.

## ◆ edges_size()

inline

Return the size of the edges list.

Definition at line 325 of file JITLink.h.

## ◆ getAlignment()

inline

Get the alignment for this content.

Definition at line 285 of file JITLink.h.

## ◆ getAlignmentOffset()

inline

Get the alignment offset for this content.

Definition at line 294 of file JITLink.h.

inline

Get mutable content for this block.

This block's content must already be mutable. It is a programmatic error to call this on a block with immutable content – consider using getMutableContent instead.

Definition at line 259 of file JITLink.h.

## ◆ getContent()

inline

Get the content for this block. Block must not be a zero-fill block.

Definition at line 232 of file JITLink.h.

References assert(), llvm::Data, and llvm::Check::Size.

inline

Returns the address of the fixup for the given edge, which is equal to this block's address plus the edge's offset.

Definition at line 336 of file JITLink.h.

## ◆ getMutableContent()

inline

Get mutable content for this block.

If this Block's content is not already mutable this will trigger a copy of the existing immutable content to a new, mutable buffer allocated using LinkGraph::allocateContent.

Definition at line 1430 of file JITLink.h.

## ◆ getRange()

inline

Definition at line 227 of file JITLink.h.

## ◆ getSection()

inline

Return the parent section for this block.

Definition at line 215 of file JITLink.h.

## ◆ getSize()

inline

Returns the size of this defined addressable.

Definition at line 224 of file JITLink.h.

References llvm::Check::Size.

## ◆ isContentMutable()

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 282 of file JITLink.h.

## ◆ isZeroFill()

inline

Returns true if this is a zero-fill block.

If true, getSize is callable but getContent is not (the content is defined to be a sequence of zero bytes of length Size).

Definition at line 221 of file JITLink.h.

References llvm::Data.

## ◆ operator=() [1/2]

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

## ◆ operator=() [2/2]

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

## ◆ removeEdge()

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

Remove the edge pointed to by the given iterator.

Returns an iterator to the new next element.

Definition at line 332 of file JITLink.h.

References I.

## ◆ setAlignment()

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

Set the alignment for this content.

Definition at line 288 of file JITLink.h.

## ◆ setAlignmentOffset()

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

Set the alignment offset for this content.

Definition at line 297 of file JITLink.h.

## ◆ setContent()

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

Set the content for this block.

Caller is responsible for ensuring the underlying bytes are not deallocated while pointed to by this block.

Definition at line 240 of file JITLink.h.

## ◆ setMutableContent()

 void llvm::jitlink::Block::setMutableContent ( MutableArrayRef< char > MutableContent )
inline

Set mutable content for this block.

The caller is responsible for ensuring that the memory pointed to by MutableContent is not deallocated while pointed to by this block.

Definition at line 269 of file JITLink.h.

Referenced by getMutableContent().