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_SOURCE
JIT_BRANCH_TARGET
static 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.
|