diff options
author | Andy Wingo <wingo@pobox.com> | 2019-05-21 16:06:11 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-05-21 16:06:11 +0200 |
commit | 9b4870cad3d24fc74b7001b37849fafb2379bd83 (patch) | |
tree | 9979a4deb1529723a6476ea16ab9e194f0c42e84 /libguile/lightening | |
parent | ec9fa9561b4a90670530aa0e42a3477d9e444177 (diff) | |
parent | b67c4ed1e1d42610e82d1bdbba3a9df44995449d (diff) | |
download | guile-9b4870cad3d24fc74b7001b37849fafb2379bd83.tar.gz |
Merge remote-tracking branch 'lightening/master'
Diffstat (limited to 'libguile/lightening')
-rw-r--r-- | libguile/lightening/lightening/aarch64-cpu.c | 7 | ||||
-rw-r--r-- | libguile/lightening/lightening/lightening.c | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/libguile/lightening/lightening/aarch64-cpu.c b/libguile/lightening/lightening/aarch64-cpu.c index 50f2b9dc3..1e727008c 100644 --- a/libguile/lightening/lightening/aarch64-cpu.c +++ b/libguile/lightening/lightening/aarch64-cpu.c @@ -994,10 +994,11 @@ static void emit_veneer(jit_state_t *_jit, jit_pointer_t target) { jit_gpr_t tmp = get_temp_gpr(_jit); - uint32_t inst = encode_ox19(A64_LDRI_LITERAL, jit_gpr_regno(tmp)); + uint32_t ldr = encode_ox19(A64_LDRI_LITERAL, jit_gpr_regno(tmp)); + uint32_t br = write_Rn_bitfield(A64_BR, jit_gpr_regno(tmp)); uint32_t *loc = _jit->pc.ui; - emit_u32(_jit, inst); - BR(_jit, jit_gpr_regno(tmp)); + emit_u32(_jit, ldr); + emit_u32(_jit, br); unget_temp_gpr(_jit); if (_jit->overflow) return; diff --git a/libguile/lightening/lightening/lightening.c b/libguile/lightening/lightening/lightening.c index 5050a35b0..bf9d9edbd 100644 --- a/libguile/lightening/lightening/lightening.c +++ b/libguile/lightening/lightening/lightening.c @@ -1331,8 +1331,6 @@ emit_literal_pool(jit_state_t *_jit, enum guard_pool guard) if (_jit->overflow) return; - _jit->pool->deadline = -1; - if (!_jit->pool->size) return; @@ -1368,6 +1366,9 @@ emit_literal_pool(jit_state_t *_jit, enum guard_pool guard) } } + if (_jit->overflow) + return; + if (guard == GUARD_NEEDED) patch_jmp_without_veneer(_jit, patch_loc); |