lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/lightning.c 21
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/lightning.c b/lib/lightning.c
index ad0fc15..22a1d9b 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -1539,12 +1539,21 @@ _jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address)
{
jit_int32_t mask;
- if (instr->code == jit_code_movi)
- instr->v.p = address;
- else {
- mask = jit_classify(instr->code);
- assert((mask & (jit_cc_a0_reg|jit_cc_a0_jmp)) == jit_cc_a0_jmp);
- instr->u.p = address;
+ switch (instr->code) {
+ case jit_code_movi: case jit_code_ldi_c: case jit_code_ldi_uc:
+ case jit_code_ldi_s: case jit_code_ldi_us: case jit_code_ldi_i:
+ case jit_code_ldi_ui: case jit_code_ldi_l: case jit_code_ldi_f:
+ case jit_code_ldi_d:
+ instr->v.p = address;
+ break;
+ case jit_code_sti_c: case jit_code_sti_s: case jit_code_sti_i:
+ case jit_code_sti_l: case jit_code_sti_f: case jit_code_sti_d:
+ instr->u.p = address;
+ break;
+ default:
+ mask = jit_classify(instr->code);
+ assert((mask & (jit_cc_a0_reg|jit_cc_a0_jmp)) == jit_cc_a0_jmp);
+ instr->u.p = address;
}
}
generated by cgit v1.2.3 (git 2.39.1) at 2025年10月02日 07:49:58 +0000

AltStyle によって変換されたページ (->オリジナル) /