diff options
author | Andy Wingo <wingo@igalia.com> | 2019-05-27 09:03:39 +0200 |
---|---|---|
committer | Andy Wingo <wingo@igalia.com> | 2019-05-27 11:34:13 +0200 |
commit | 909c0077cc61b426f8aae609f456819b3ad466b8 (patch) | |
tree | a6516cc2000e57f5f0248ddf87983cbb67a33bab | |
parent | 7c73f5f949c7cd27766de09f5770c4ac552b97e7 (diff) | |
download | guile-909c0077cc61b426f8aae609f456819b3ad466b8.tar.gz |
Correctly handle overflow when emitting literal pools
-rw-r--r-- | lightening/lightening.c | 8 |
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; } |