parrotcode: compilers/imcc/pcc.c | |
Contents | Compilers |
compilers/imcc/pcc.c
Parrot calling convention implementation.
see: docs/pdds/pdd03_calling_conventions.pod
PCC Implementation by Leopold Toetsch
static Instruction *insINS(PARROT_INTERP, IMC_Unit *unit, NOTNULL(Instruction *ins), char *name, SymReg **regs, int n)
SymReg *get_pasm_reg(PARROT_INTERP, const char *name)
SymReg *get_const(PARROT_INTERP, const char *name, int type)
static Instruction *pcc_get_args(PARROT_INTERP, IMC_Unit *unit, NOTNULL(Instruction *ins), char *op_name, int n, SymReg **args, int *arg_flags)
static void unshift_self(NOTNULL(SymReg *sub), SymReg *obj)
void expand_pcc_sub(PARROT_INTERP, NOTNULL(NOTNULL(IMC_Unit *unit)), NOTNULL(NOTNULL(Instruction *ins)))
void expand_pcc_sub_ret(PARROT_INTERP, NOTNULL(IMC_Unit *unit), NOTNULL(Instruction *ins))
static int pcc_reg_mov(PARROT_INTERP, unsigned char d, unsigned char s, NOTNULL(void *vinfo))
static Instruction *move_regs(PARROT_INTERP, IMC_Unit *unit, NOTNULL(Instruction *ins), int n, SymReg **dest, SymReg **src)
static int recursive_tail_call(PARROT_INTERP, NOTNULL(NOTNULL(IMC_Unit *unit)), NOTNULL(NOTNULL(Instruction *ins)), NOTNULL(SymReg *sub))
static void insert_tail_call(PARROT_INTERP, NOTNULL(IMC_Unit *unit), NOTNULL(NOTNULL(Instruction *ins)), NOTNULL(SymReg *sub), NULLOK(SymReg *meth))
void expand_pcc_sub_call(PARROT_INTERP, NOTNULL(IMC_Unit *unit), NOTNULL(Instruction *ins))
|