NAME
Parrot::OpTrans::CPrederef - C Predereferenced Transform
DESCRIPTION
Parrot::OpTrans::CPrederef
inherits from Parrot::OpTrans::C
to provide predereferenced register addressing run loop.
Instance Methods
core_type()
-
The core type is
PARROT_PREDEREF_CORE
. prefix()
-
The prefix is
'Parrot_pred_'
.This is used in
Parrot::Op
'sfunc_name()
. defines()
-
Returns the C
#define
macros required by the ops. suffix()
-
The suffix is
'_prederef'
. opsarraytype()
-
The ops array type is
void *
. gen_goto($where)
-
TODO - This is the same implementation as in
Parrot::OpTrans
. It should not be duplicated. expr_pop()
-
Addresses on the stack are pointers into the bytecode array, and so must be converted to pointers into the prederef array.
expr_address($address)
-
Same logic as
expr_pop()
. expr_offset($offset)
goto_offset($offset)
goto_address($address)
-
CPrederef is funky in that expr OFFSET(n) uses a pointer to the original bytecode, but goto OFFSET(n) returns a pointer into the prederef array. (see expr_pop(), above, for a description of why this works.)
access_arg($type, $num, $op)
-
Returns the C code for the specified op argument type (see
Parrot::OpTrans
) and value.$op
is an instance ofParrot::Op
.
SEE ALSO
Parrot::OpTrans
Parrot::OpTrans::C
Parrot::OpTrans::CGP
Parrot::OpTrans::CGoto
Parrot::OpTrans::CSwitch
Parrot::OpTrans::Compiled
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 217:
=over without closing =back