| parrotcode: compilers/imcc/pbc.c | |
| Contents | Compilers |

compilers/imcc/pbc.c

emit imcc instructions into Parrot interpreter
the e_pbc_emit function is called per instruction
Notes:
I'm using existing data structures here (SymReg*) to store various global items (currently only PMC constants). The index in the constant table is in SymReg* ->color data member. This looks odd, but the register number from imc.c:allocate is also there for variables, so it's a little bit consistent at least.
So when reading color here it's either a constant table index or a Parrot register number, depending on data type.
TODO memory clean up
-lt

static void imcc_globals_destroyint e_pbc_openstatic int old_blocksopcode_t *make_jit_infostatic void make_new_substatic int get_old_sizestatic void store_sub_sizestatic void store_fixupstatic void store_key_conststatic int get_codesizestatic subs_t *find_global_labelstatic void fixup_globalsSTRING *IMCC_string_from_regstatic int add_const_strstatic int add_const_numstatic PMC *mk_multi_sigstatic PMC *create_lexinfostatic PMC *find_outerstatic int add_const_pmc_substatic int add_const_keystatic const char *slice_debstatic opcode_t build_keyINTVAL IMCC_int_from_regstatic void make_pmc_conststatic void add_1_conststatic void constant_foldingint e_pbc_new_subint e_pbc_end_substatic void verify_signature - check if any get_ argument contains constants
- fill in type bits for argument types and constants, if missing
int e_pbc_emitint e_pbc_close
|
|
|