parrotcode: Parrot Interpreter | |
Contents | PMCs |
src/pmc/parrotinterpreter.pmc - Parrot Interpreter
These are the vtable functions for the ParrotInterpreter base class
getinterp P0
set P1, P0[.IGLOBALS_*] # access interpreter globals
set I0, P0[x] # interpinfo I0, x
set I0, P0[-1] # get interpreter flags
set P0[-1], x # set flags on interpreter
# NOTE: this doesn't restart
void clone_interpreter(Parrot_Interp dest, const Parrot_Interp source, INTVAL flags)
static void create_interp(PMC *self, Parrot_Interp parent)
parent
.void class_init()
void init()
void init_pmc(PMC *parent)
*parent
if parent
is a ParrotInterpreter instance. Otherwise takes the thread ID from parent
and uses that thread.void set_pointer(void *value)
struct_val
to *value
.void *get_pointer()
struct_val
.INTVAL get_integer()
opcode_t *invoke(void *next)
PMC *get_pmc_keyed_int(INTVAL key)
key
.PMC *get_pmc_keyed(PMC *key)
key
can be: "sub" ... return Sub object of this subroutine
"continuation" ... return Continuation PMC
"lexpad" ... return lexpad PMC for this sub
"namespace" ... return namespace PMC for this sub
"outer" ... return outer sub of this closure
"<item>"; level ... same for caller <level>
"outer"; "<item>" ... same for outer level 1
"outer"; "<item>"; level ... same for outer <level>
"globals" ... return global stash
INTVAL get_integer_keyed_int(INTVAL key)
key
.void set_integer_keyed_int(INTVAL key, INTVAL val)
key
to val
.PMC *clone()
Parrot_clone()
and use freeze/thaw.INTVAL is_equal(PMC *val)
*val
.void visit(visit_info *info)
*info
is the visit info, (see include/parrot/pmc_freeze.h).void freeze(visit_info *info)
void thaw(visit_info *info)
void thawfinish(visit_info *info)
|