From: Aleksey Demakov Date: Tue, 29 Aug 2006 13:29:35 +0000 (+0000) Subject: delete extra popping of setjmp context for interpreter X-Git-Tag: before.move.to.git~201 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=bcc4d64c56357749bb90ff0f7f3b4748476c562e;p=francis%2Flibjit.git delete extra popping of setjmp context for interpreter --- diff --git a/ChangeLog b/ChangeLog index a39fd3a..69dcfb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2006-08-29 Aleksey Demakov + * jit/jit-insn.c (jit_insn_return, jit_insn_return_ptr): do not pop + the setjmp context for the interpreter backend because it takes care + of this by itself. + * jit/jit-rules.h, jit/jit-rules-alpha.c, jit/jit-rules-arm.c, * jit/jit-rules-interp.c, jit/jit-rules-x86.c, jit/jit-reg-alloc.c: move part of the _jit_gen_exch_top() functionality into a separate diff --git a/jit/jit-insn.c b/jit/jit-insn.c index fa37ecb..1f031d2 100644 --- a/jit/jit-insn.c +++ b/jit/jit-insn.c @@ -6737,6 +6737,7 @@ int jit_insn_return(jit_function_t func, jit_value_t value) return 0; } +#if !defined(JIT_BACKEND_INTERP) /* We need to pop the "setjmp" context */ if(func->has_try) { @@ -6751,6 +6752,7 @@ int jit_insn_return(jit_function_t func, jit_value_t value) (void *)_jit_unwind_pop_setjmp, type, 0, 0, JIT_CALL_NOTHROW); jit_type_free(type); } +#endif /* This function has an ordinary return path */ func->builder->ordinary_return = 1; @@ -6905,6 +6907,7 @@ int jit_insn_return_ptr return 0; } +#if !defined(JIT_BACKEND_INTERP) /* We need to pop the "setjmp" context */ if(func->has_try) { @@ -6919,6 +6922,7 @@ int jit_insn_return_ptr (void *)_jit_unwind_pop_setjmp, type, 0, 0, JIT_CALL_NOTHROW); jit_type_free(type); } +#endif /* This function has an ordinary return path */ func->builder->ordinary_return = 1; @@ -8009,7 +8013,7 @@ int jit_insn_move_blocks_to_start int jit_insn_mark_offset(jit_function_t func, jit_int offset) { #if 1 - /*|| !USE_NEW_REG_ALLOC*/ +/*!USE_NEW_REG_ALLOC*/ if(!jit_insn_new_block(func)) { return 0;