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

Also reset alloca_slack after jit_prolog in i386.

There is no guarantee of order of jit_function calls, so, it must
reset it for every function. This should correct possible issues in
OS/X, and will be required when i386 code is updated to use MMX/SSE*
registers, possibly as some kind of extended interface, and then,
would require 16 bytes aligned stack. This is already an issue if
calling C code that uses SSE, and currently requires "manually"
padding the stack by using jit_allocai.
This commit is contained in:
PCPA 2010-08-28 15:15:55 -03:00 committed by Paolo Bonzini
parent d2239c223a
commit e98ff58a7e

View file

@ -52,7 +52,7 @@ struct jit_local_state {
/* Whether a register is used for the user-accessible registers. */
#define jit_save(reg) 1
#define jit_base_prolog() (_jitl.framesize = 20, _jitl.alloca_offset = 0, \
#define jit_base_prolog() (_jitl.framesize = 20, _jitl.alloca_offset = _jitl.alloca_slack = 0, \
PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI), PUSHLr(_EBP), MOVLrr(_ESP, _EBP))
#define jit_base_ret(ofs) \
(((ofs) < 0 ? LEAVE_() : POPLr(_EBP)), \