| parrotcode: JIT | |
| Contents | C |

src/jit.c - JIT

JIT (Just In Time) compilation converts bytecode to native machine code instructions and executes the generated instruction sequence directly.

static void insert_fixup_targets(Interp *interpreter, char *branch, size_t limit)static void make_branch_list(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *cur_op, opcode_t *code_start, opcode_t *code_end)optimizer->map_branch parallels the opcodes with a list of branch information and register mapping informationJIT_BRANCH_SOURCEJIT_BRANCH_TARGETstatic void set_register_usage(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, Parrot_jit_optimizer_section_ptr cur_section, op_info_t *op_info, opcode_t *cur_op, opcode_t *code_start)static void make_sections(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *cur_op, opcode_t *code_start, opcode_t *code_end)Parrot_jit_vtable_n_op() does use register mappings.static void make_branch_targets(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *code_start)static void sort_registers(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *code_start)static void assign_registers(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, Parrot_jit_optimizer_section_ptr cur_section, opcode_t *code_start, int from_imcc)map_registers() to actually assign the Parrot registers to hardware registers.static void map_registers(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *code_start)static void debug_sections(Interp *interpreter, Parrot_jit_optimizer_t *optimizer, opcode_t *code_start)static Parrot_jit_optimizer_t *optimize_jit(Interp *interpreter, opcode_t *cur_op, opcode_t *code_start, opcode_t *code_end)build_asm() to initialize the optimizer.static Parrot_jit_optimizer_t *optimize_imcc_jit(Interp *interpreter, opcode_t *cur_op, opcode_t *code_start, opcode_t *code_end, struct PackFile_Segment *jit_seg)_JIT section in the packfile.static char *reg_addr(Interp *interpreter, int typ, int i)typ[i].static void Parrot_jit_load_registers(Parrot_jit_info_t *jit_info, Interp *interpreter)static void Parrot_jit_save_registers(Parrot_jit_info_t *jit_info, Interp *interpreter)void Parrot_destroy_jit(void *ptr)jit_f build_asm(Interp *interpreter, opcode_t *pc, opcode_t *code_start, opcode_t *code_end, void *objfile)void Parrot_jit_newfixup(Parrot_jit_info_t *jit_info)
include/parrot/jit.h, docs/jit.pod and src/jit_debug.c.
|
|
|