IndexFunctionasmjit::FuncDetail
asmjit::FuncDetail Class Reference

Function detail - CallConv and expanded FuncSignature.

Function detail is architecture and OS dependent representation of a function. It contains a materialized calling convention and expanded function signature so all arguments have assigned either register type/id or stack address.

Static Public Attributes

Constants

Member Functions

Construction & Destruction
Overloaded Operators
Reset
Accessors

FuncDetail::FuncDetail()noexcept[1/2][¶]

Creates a default constructed FuncDetail.

FuncDetail::FuncDetail(
const FuncDetail& other
)defaultnoexcept[2/2][¶]

Copy constructor.

Function details are copyable.

Error FuncDetail::init(
const FuncSignature& signature,
const Environment& environment
)noexcept[¶]

Initializes this FuncDetail to the given signature.

FuncDetail& FuncDetail::operator=(
const FuncDetail& other
)defaultnoexcept[¶]

Assignment operator, copies other to this FuncDetail.

void FuncDetail::reset()noexcept[¶]

Resets the function detail to its default constructed state.

const CallConv& FuncDetail::callConv() constnoexcept[¶]

Returns the function's calling convention, see CallConv.

CallConvFlags FuncDetail::flags() constnoexcept[¶]

Returns the associated calling convention flags, see CallConv::Flags.

bool FuncDetail::hasFlag() constnoexcept[¶]

Checks whether a CallConv flag is set, see CallConv::Flags.

bool FuncDetail::hasRet() constnoexcept[¶]

Tests whether the function has a return value.

uint32_t FuncDetail::argCount() constnoexcept[¶]

Returns the number of function arguments.

FuncValuePack& FuncDetail::retPack()noexcept[1/2][¶]

Returns function return values.

const FuncValuePack& FuncDetail::retPack() constnoexcept[2/2][¶]

Returns function return values.

FuncValue& FuncDetail::ret(
size_t valueIndex = 0
)noexcept[1/2][¶]

Returns a function return value associated with the given valueIndex.

const FuncValue& FuncDetail::ret(
size_t valueIndex = 0
) constnoexcept[2/2][¶]

Returns a function return value associated with the given valueIndex (const).

FuncValuePack* FuncDetail::argPacks()noexcept[1/2][¶]

Returns function argument packs array.

const FuncValuePack* FuncDetail::argPacks() constnoexcept[2/2][¶]

Returns function argument packs array (const).

FuncValuePack& FuncDetail::argPack(
size_t argIndex
)noexcept[1/2][¶]

Returns function argument pack at the given argIndex.

const FuncValuePack& FuncDetail::argPack(
size_t argIndex
) constnoexcept[2/2][¶]

Returns function argument pack at the given argIndex (const).

FuncValue& FuncDetail::arg(
size_t argIndex,
size_t valueIndex = 0
)noexcept[1/2][¶]

Returns an argument at valueIndex from the argument pack at the given argIndex.

const FuncValue& FuncDetail::arg(
size_t argIndex,
size_t valueIndex = 0
) constnoexcept[2/2][¶]

Returns an argument at valueIndex from the argument pack at the given argIndex (const).

void FuncDetail::resetArg(
size_t argIndex
)noexcept[¶]

Resets an argument at the given argIndex.

If the argument is a parameter pack (has multiple values) all values are reset.

bool FuncDetail::hasVarArgs() constnoexcept[¶]

Tests whether the function has variable arguments.

uint32_t FuncDetail::vaIndex() constnoexcept[¶]

Returns an index of a first variable argument.

bool FuncDetail::hasStackArgs() constnoexcept[¶]

Tests whether the function passes one or more argument by stack.

uint32_t FuncDetail::argStackSize() constnoexcept[¶]

Returns stack size needed for function arguments passed on the stack.

uint32_t FuncDetail::redZoneSize() constnoexcept[¶]

Returns red zone size.

uint32_t FuncDetail::spillZoneSize() constnoexcept[¶]

Returns spill zone size.

uint32_t FuncDetail::naturalStackAlignment() constnoexcept[¶]

Returns natural stack alignment.

RegMask FuncDetail::passedRegs(
RegGroup group
) constnoexcept[¶]

Returns a mask of all passed registers of the given register group.

RegMask FuncDetail::preservedRegs(
RegGroup group
) constnoexcept[¶]

Returns a mask of all preserved registers of the given register group.

RegMask FuncDetail::usedRegs(
RegGroup group
) constnoexcept[¶]

Returns a mask of all used registers of the given register group.

void FuncDetail::addUsedRegs(
RegGroup group,
RegMask regs
)noexcept[¶]

Adds regs to the mask of used registers of the given register group.

uint8_t FuncDetail::kNoVarArgs = 0xFFuconstexprstatic[¶]

Function doesn't have a variable number of arguments (...).

CallConv FuncDetail::_callConv {}[¶]

Calling convention.

uint8_t FuncDetail::_argCount = 0[¶]

Number of function arguments.

uint8_t FuncDetail::_vaIndex = 0[¶]

Variable arguments index of kNoVarArgs.

uint16_t FuncDetail::_reserved = 0[¶]

Reserved for future use.

Support::Array<RegMask, Globals::kNumVirtGroups>FuncDetail::_usedRegs {}[¶]

Registers that contain arguments.

uint32_t FuncDetail::_argStackSize = 0[¶]

Size of arguments passed by stack.

FuncValuePack FuncDetail::_rets {}[¶]

Function return value(s).

FuncValuePack FuncDetail::_args[Globals::kMaxFuncArgs] {}[¶]

Function arguments.