asmjit::JumpAnnotation Class Reference

Jump annotation used to annotate jumps.

BaseCompiler allows to emit jumps where the target is either register or memory operand. Such jumps cannot be trivially inspected, so instead of doing heuristics AsmJit allows to annotate such jumps with possible targets. Register allocator then uses the annotation to construct control-flow, which is then used by liveness analysis and other tools to prepare ground for register allocation.

Public Members

Members

Member Functions

Construction & Destruction
Accessors
Annotation Building API

Member Function Documentation

BaseCompiler* JumpAnnotation::compiler() constnoexcept◆ 

Returns the compiler that owns this JumpAnnotation.

uint32_t JumpAnnotation::annotationId() constnoexcept◆ 

Returns the annotation id.

const ZoneVector<uint32_t>& JumpAnnotation::labelIds() constnoexcept◆ 

Returns a vector of label identifiers that lists all targets of the jump.

bool JumpAnnotation::hasLabel(const Label& label) constnoexcept◆ 

Tests whether the given label is a target of this JumpAnnotation.

bool JumpAnnotation::hasLabelId(uint32_t labelId) constnoexcept◆ 

Tests whether the given labelId is a target of this JumpAnnotation.

Error JumpAnnotation::addLabel(const Label& label)noexcept◆ 

Adds the label to the list of targets of this JumpAnnotation.

Error JumpAnnotation::addLabelId(uint32_t labelId)noexcept◆ 

Adds the labelId to the list of targets of this JumpAnnotation.

Member Data Documentation

BaseCompiler* JumpAnnotation::_compiler◆ 

Compiler that owns this JumpAnnotation.

uint32_t JumpAnnotation::_annotationId◆ 

Annotation identifier.

ZoneVector<uint32_t>JumpAnnotation::_labelIds◆ 

Vector of label identifiers, see labelIds().