added assertion in the JIT compiler which checks that we are not going outside of the compilation window

This commit is contained in:
kr.angelov
2013-09-25 07:53:10 +00:00
parent b2b5bda43d
commit be8bf64eb2

View File

@@ -14,6 +14,7 @@ struct PgfJitState {
GuPool* pool;
jit_state jit;
jit_insn *buf;
char *save_ip_ptr;
GuBuf* patches;
};
@@ -71,10 +72,10 @@ pgf_jit_init(GuPool* tmp_pool, GuPool* pool)
PgfJitState* state = gu_new(PgfJitState, tmp_pool);
state->tmp_pool = tmp_pool;
state->pool = pool;
state->buf = NULL;
state->patches = gu_new_buf(PgfCallPatch, tmp_pool);
pgf_jit_alloc_page(state);
state->save_ip_ptr = jit_get_ip().ptr;
return state;
}
@@ -82,11 +83,15 @@ pgf_jit_init(GuPool* tmp_pool, GuPool* pool)
static void
pgf_jit_make_space(PgfJitState* state)
{
assert (state->save_ip_ptr + JIT_CODE_WINDOW > jit_get_ip().ptr);
size_t page_size = getpagesize();
if (jit_get_ip().ptr + JIT_CODE_WINDOW > ((char*) state->buf) + page_size) {
jit_flush_code(state->buf, jit_get_ip().ptr);
pgf_jit_alloc_page(state);
}
state->save_ip_ptr = jit_get_ip().ptr;
}
void