author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2019年09月03日 14:01:48 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2019年09月03日 14:01:48 -0300 |
commit | 973b09a187058414a029f3c5230052542ddceb21 (patch) | |
tree | cc9570c9a7a78b779fb5fd6dd5f3b70b6a163cf3 /lib | |
parent | 36e04d9db3ba152849ac7e9b6ec2117324da1113 (diff) | |
download | lightning-973b09a187058414a029f3c5230052542ddceb21.tar.gz |
-rw-r--r-- | lib/lightning.c | 21 |
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; } } |