Allow patching jit_ldi and jit_sti the same way as jit_movi - 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:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2019年09月03日 14:01:48 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2019年09月03日 14:01:48 -0300
commit973b09a187058414a029f3c5230052542ddceb21 (patch)
treecc9570c9a7a78b779fb5fd6dd5f3b70b6a163cf3 /lib
parent36e04d9db3ba152849ac7e9b6ec2117324da1113 (diff)
downloadlightning-973b09a187058414a029f3c5230052542ddceb21.tar.gz
Allow patching jit_ldi and jit_sti the same way as jit_movi
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日 05:13:43 +0000

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