summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@igalia.com>2019-05-27 09:03:39 +0200
committerAndy Wingo <wingo@igalia.com>2019-05-27 11:34:13 +0200
commit909c0077cc61b426f8aae609f456819b3ad466b8 (patch)
treea6516cc2000e57f5f0248ddf87983cbb67a33bab
parent7c73f5f949c7cd27766de09f5770c4ac552b97e7 (diff)
downloadguile-909c0077cc61b426f8aae609f456819b3ad466b8.tar.gz
Correctly handle overflow when emitting literal pools
-rw-r--r--lightening/lightening.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/lightening/lightening.c b/lightening/lightening.c
index 4f03851d7..ca5708f0a 100644
--- a/lightening/lightening.c
+++ b/lightening/lightening.c
@@ -96,10 +96,6 @@ static struct jit_literal_pool* alloc_literal_pool(jit_state_t *_jit,
size_t capacity);
static void reset_literal_pool(jit_state_t *_jit,
struct jit_literal_pool *pool);
-static void grow_literal_pool(jit_state_t *_jit);
-static jit_bool_t add_literal_pool_entry(jit_state_t *_jit,
- struct jit_literal_pool_entry entry,
- uint32_t max_offset);
static jit_bool_t add_pending_literal(jit_state_t *_jit, jit_reloc_t src,
uint8_t max_offset_bits);
static void remove_pending_literal(jit_state_t *_jit, jit_reloc_t src);
@@ -1279,9 +1275,11 @@ static jit_bool_t
add_literal_pool_entry(jit_state_t *_jit, struct jit_literal_pool_entry entry,
uint32_t max_offset)
{
+ if (_jit->overflow)
+ return 1;
+
if (max_offset <= literal_pool_byte_size(_jit->pool)) {
emit_literal_pool(_jit, GUARD_NEEDED);
- ASSERT(_jit->pool->size == 0);
return 0;
}