From bc0f1265c5ad0cb825a4adead15cd2e32b74912c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 31 Jan 2006 21:23:35 +0000 Subject: [PATCH] fix aliasing bug in jit-buffer comparison svn: r2063 --- src/mzscheme/src/jit.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index f353892840..f54d14e683 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -59,7 +59,7 @@ static void *stack_cache_pop_code; typedef struct { jit_state js; - unsigned long limit; + char *limit; int extra_pushed, max_extra_pushed; int depth, max_depth; int *mappings; /* low bit indicates mode: orig pushed (0) or new pushed (1); @@ -129,7 +129,7 @@ int stack_cache_stack_pos = 0; /*========================================================================*/ #define _jit (jitter->js) -#define PAST_LIMIT() ((unsigned long)jit_get_ip().ptr > jitter->limit) +#define PAST_LIMIT() (jit_get_ip().ptr > jitter->limit) #define CHECK_LIMIT() if (PAST_LIMIT()) return 0; #define JIT_CACHE_SIZE_LIMIT 65536 @@ -198,7 +198,7 @@ static void *generate_one(mz_jit_state *old_jitter, /* this is a recursive generate, so use leftover space in old_jitter's buffer */ buffer = get_end_pointer(old_jitter); - size = (old_jitter->limit - (unsigned long)buffer); + size = ((char *)old_jitter->limit - (char *)buffer); if (size < JIT_BUFFER_INIT_SIZE) { old_jitter = NULL; buffer = NULL; @@ -221,7 +221,7 @@ static void *generate_one(mz_jit_state *old_jitter, } (void)jit_set_ip(buffer).ptr; - jitter->limit = (unsigned long)buffer + size_pre_retained - padding; + jitter->limit = (char *)buffer + size_pre_retained - padding; if (known_size) jitter->retain_start = (void *)jitter->limit; else @@ -239,7 +239,7 @@ static void *generate_one(mz_jit_state *old_jitter, mz_retain_it(jitter, save_ptr); } - jitter->limit += padding; + jitter->limit = (char *)jitter->limit + padding; if (PAST_LIMIT() || (jitter->retain_start && (jitter->retained > num_retained))) { scheme_console_printf("JIT buffer overflow!!\n");