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 use the annotation to construct control-flow, which is then used by liveness analysis and other tools to prepare ground for register allocation.

Public Members

Member Functions

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().