Skip to content
tcr edited this page Oct 16, 2014 · 1 revision

LuaJIT

Porting the JITer

lj_target_arm.h (included by lj_target.h) — Defines for ARM cpu registers, instructions. ARM-specifics are used in following two files.

  • Need to update ARMIns with Thumb instructions.

See https://gist.github.com/tcr/858e5d2000a13375ec15 for distinction between two files:

lj_emit_arm.h (included by lj_asm.c) — Emits instructions.

  • emit_invai diffs two instrs. crafts instrs from lj_target_arm.h.

lj_asm_arm.h (included by lj_asm.c) — ARM IR assembler.

  • Lots of references to ARM
  • Why is int32_t used everywhere?
  • Very rarely modifies MCode except for specific grouped functions. That seems to be entirely in emit.

These functions are contained in the specialized lj_asm_*.h header:

asm_head_root_base
asm_head_side_base
asm_stack_check
asm_stack_restore
asm_setup_call_slots
asm_setup_target
asm_tail_prep
asm_ir
asm_tail_fixup
asm_gencall
asm_setupresult
asm_gc_check
asm_loop_fixup

These are used by the header and not elsewhere:

ra_evictset
ra_destreg
ra_leftov
ra_destpair
asm_collectargs
ir_khash
asm_snew
asm_tnew
asm_tdup
asm_gcstep
asm_phi
asm_loop

Goals:

Find all sections which use tracing code and fix them.

Clone this wiki locally