Parrot calling convention implementation.

see: docs/pdds/pdd03_calling_conventions.pod

PCC Implementation by Leopold Toetsch

Functions ^

static Instruction *insINS

Utility instruction routine. Creates and inserts an instruction into the current block in one call.

SymReg *get_pasm_reg

get or create the SymReg

SymReg *get_const

get or create a constant

static Instruction *pcc_get_args

set arguments or return values get params or results used by expand_pcc_sub_call and expand_pcc_sub

static void unshift_self

prepend the object to args or self to params

void expand_pcc_sub

Expand a PCC (Parrot Calling Convention) subroutine by generating the appropriate prologue and epilogue for parameter passing/returning.

void expand_pcc_sub_ret

Expand a PCC sub return directive into its PASM instructions

static int pcc_reg_mov

RT #48260: Not yet documented!!!

static Instruction *move_regs

RT #48260: Not yet documented!!!

static int recursive_tail_call

convert a recursive tailcall into a loop

static void insert_tail_call

RT #48260: Not yet documented!!!

void expand_pcc_sub_call

Expand a PCC subroutine call (IMC) into its PASM instructions This is the nuts and bolts of pdd03 routine call style