Browse Source

2006-03-12 Klaus Treichel <ktreichel@web.de>


			
			
				cache-refactoring
			
			
		
Klaus Treichel 19 years ago
parent
commit
b2ac404a2e
  1. 11
      ChangeLog
  2. 34
      jit/jit-insn.c

11
ChangeLog

@ -1,3 +1,14 @@
2006-03-12 Klaus Treichel <ktreichel@web.de>
* jit/jit-insn.c: Pop the setjump context on return from functions with
a catcher.
2006-03-11 Kirill Kononenko <Kirill.Kononenko@gmail.com>
* jit/jit-insn.c (create_call_setup_insn): fix tail calls, work
if the called function is not the callee function
(thanks klausT for finding the bug).
2006-02-27 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (jit_insn_convert): fix int->uint and uint->int

34
jit/jit-insn.c

@ -5202,8 +5202,8 @@ static int create_call_setup_insns
args = new_args;
}
/* If we are calling ourselves, then store back to our own parameters */
if((flags & JIT_CALL_TAIL) != 0 && func == callee)
/* If we are performing a tail call, then store back to our own parameters */
if((flags & JIT_CALL_TAIL) != 0)
{
for(arg_num = 0; arg_num < num_args; ++arg_num)
{
@ -6608,6 +6608,21 @@ int jit_insn_return(jit_function_t func, jit_value_t value)
return 0;
}
/* We need to pop the "setjmp" context */
if(func->has_try)
{
type = jit_type_create_signature
(jit_abi_cdecl, jit_type_void, 0, 0, 1);
if(!type)
{
return 0;
}
jit_insn_call_native
(func, "_jit_unwind_pop_setjmp",
(void *)_jit_unwind_pop_setjmp, type, 0, 0, JIT_CALL_NOTHROW);
jit_type_free(type);
}
/* This function has an ordinary return path */
func->builder->ordinary_return = 1;
@ -6761,6 +6776,21 @@ int jit_insn_return_ptr
return 0;
}
/* We need to pop the "setjmp" context */
if(func->has_try)
{
type = jit_type_create_signature
(jit_abi_cdecl, jit_type_void, 0, 0, 1);
if(!type)
{
return 0;
}
jit_insn_call_native
(func, "_jit_unwind_pop_setjmp",
(void *)_jit_unwind_pop_setjmp, type, 0, 0, JIT_CALL_NOTHROW);
jit_type_free(type);
}
/* This function has an ordinary return path */
func->builder->ordinary_return = 1;

Loading…
Cancel
Save