1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-21 11:10:21 +02:00

Add new test case to check stack integrity on complex stack frames.

* check/stack.ok, check/stack.tst: New files to test data
	integrity on a deep chain of stack frames.

	* lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c,
	lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c,
	lib/jit_x86.c, lib/jit_x86-cpu.c: Calculate _jit->function->stack
	in the emit stage, otherwise it will calculate it wrong if
	need to jit_allocai space to spill registers.

	* lib/lightning.c: Correct wrong offset when updating the
	"current" jit function pointer in the code that may need to
	allocate stack space to spill registers.

	* check/lightning.c: Correct off by one data space check.

	* check/Makefile.am: Update for new test case.
This commit is contained in:
pcpa 2012-12-19 18:07:12 -02:00
parent b43ea1f908
commit a74318a1d7
14 changed files with 387 additions and 29 deletions

View file

@ -322,9 +322,6 @@ void
_jit_epilog(jit_state_t *_jit)
{
assert(_jit->function);
_jit->function->stack = ((_jit->function->self.alen -
/* align stack at 8 bytes */
_jit->function->self.aoff) + 7) & -8;
assert(_jit->function->epilog->next == NULL);
jit_link(_jit->function->epilog);
_jit->function = NULL;