IndexCompilerasmjit::FuncNode
asmjit::FuncNode Class Reference
Inheritance diagram for asmjit::FuncNode:
asmjit::LabelNode asmjit::BaseNode

Function node represents a function used by BaseCompiler.

A function is composed of the following:

In a node list, the function and its body looks like the following:

[...] - Anything before the function.
[FuncNode] - Entry point of the function, acts as a label as well.
<Prolog> - Prolog inserted by the register allocator.
{...} - Function body - user code basically.
[ExitLabel] - Exit label
<Epilog> - Epilog inserted by the register allocator.
<Return> - Return inserted by the register allocator.
{...} - Can contain data or user code (error handling, special cases, ...).
[FuncEnd] - End sentinel
[...] - Anything after the function.

When a function is added to the instruction stream by BaseCompiler::addFunc() it actually inserts 3 nodes (FuncNode, ExitLabel, and FuncEnd) and sets the current cursor to be FuncNode. When BaseCompiler::endFunc() is called the cursor is set to FuncEnd. This guarantees that user can use ExitLabel as a marker after additional code or data can be placed, which is a common practice.

Public Members

Members
- Public Attributes inherited from asmjit::LabelNode
- Public Attributes inherited from asmjit::BaseNode

Classes

Member Functions

Construction & Destruction
Accessors
- Public Member Functions inherited from asmjit::LabelNode
- Public Member Functions inherited from asmjit::BaseNode

FuncNode::FuncNode()noexcept[¶]

Creates a new FuncNode instance.

Always use BaseCompiler::addFunc() to create a new FuncNode.

LabelNode* FuncNode::exitNode() constnoexcept[¶]

Returns function exit LabelNode.

Label FuncNode::exitLabel() constnoexcept[¶]

Returns function exit label.

SentinelNode* FuncNode::endNode() constnoexcept[¶]

Returns "End of Func" sentinel node.

FuncDetail& FuncNode::detail()noexcept[1/2][¶]

Returns function detail.

const FuncDetail& FuncNode::detail() constnoexcept[2/2][¶]

Returns function detail.

FuncFrame& FuncNode::frame()noexcept[1/2][¶]

Returns function frame.

const FuncFrame& FuncNode::frame() constnoexcept[2/2][¶]

Returns function frame.

FuncAttributes FuncNode::attributes() constnoexcept[¶]

Returns function attributes.

void FuncNode::addAttributes()noexcept[¶]

Adds attrs to the function attributes.

uint32_t FuncNode::argCount() constnoexcept[¶]

Returns arguments count.

ArgPack* FuncNode::argPacks() constnoexcept[¶]

Returns argument packs.

bool FuncNode::hasRet() constnoexcept[¶]

Tests whether the function has a return value.

ArgPack& FuncNode::argPack(
size_t argIndex
) constnoexcept[¶]

Returns argument pack at argIndex.

void FuncNode::setArg(
size_t argIndex,
const BaseReg& vReg
)noexcept[1/4][¶]

Sets argument at argIndex.

void FuncNode::setArg(
size_t argIndex,
const RegOnly& vReg
)noexcept[2/4][¶]

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void FuncNode::setArg(
size_t argIndex,
size_t valueIndex,
const BaseReg& vReg
)noexcept[3/4][¶]

Sets argument at argIndex and valueIndex.

void FuncNode::setArg(
size_t argIndex,
size_t valueIndex,
const RegOnly& vReg
)noexcept[4/4][¶]

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

void FuncNode::resetArg(
size_t argIndex
)noexcept[1/2][¶]

Resets argument pack at argIndex.

void FuncNode::resetArg(
size_t argIndex,
size_t valueIndex
)noexcept[2/2][¶]

Resets argument pack at argIndex.

FuncDetail FuncNode::_funcDetail[¶]

Function detail.

FuncFrame FuncNode::_frame[¶]

Function frame.

LabelNode* FuncNode::_exitNode[¶]

Function exit label.

SentinelNode* FuncNode::_end[¶]

Function end (sentinel).

ArgPack* FuncNode::_args[¶]

Argument packs.