[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 01/02: Avoid recursive pool emit for aarch64; add anothe
From: |
Andy Wingo |
Subject: |
[Guile-commits] 01/02: Avoid recursive pool emit for aarch64; add another overflow check |
Date: |
Tue, 21 May 2019 10:07:39 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guile.
commit b67c4ed1e1d42610e82d1bdbba3a9df44995449d
Author: Andy Wingo <address@hidden>
Date: Tue May 21 16:05:03 2019 +0200
Avoid recursive pool emit for aarch64; add another overflow check
---
lightening/aarch64-cpu.c | 7 ++++---
lightening/lightening.c | 5 +++--
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/lightening/aarch64-cpu.c b/lightening/aarch64-cpu.c
index 50f2b9d..1e72700 100644
--- a/lightening/aarch64-cpu.c
+++ b/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/lightening/lightening.c b/lightening/lightening.c
index 5050a35..bf9d9ed 100644
--- a/lightening/lightening.c
+++ b/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);