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:
parent
d2239c223a
commit
e98ff58a7e
1 changed files with 1 additions and 1 deletions
|
@ -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)), \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue