Changeset 11421


Ignore:
Timestamp:
Nov 24, 2008, 8:11:06 PM (11 years ago)
Author:
rme
Message:

In ALLOC-C-FRAME and ALLOC-VARIABLE-C-FRAME, work around a Darwin bug
by leaving an extra word of space in the parameter area.

(Supersedes r11414, which reserved even more extra space.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/X8632/x8632-vinsns.lisp

    r11414 r11421  
    36863686                                   ((temp :imm)))
    36873687  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
    3688   ;; make frame at least 24 bytes long
    3689   (subl (:$l (:apply ash (:apply max 6 nwords) x8632::word-shift))
     3688  ;; Work around Apple bug number 6386516 (open stub may clobber stack)
     3689  ;; by leaving an extra word of space in the parameter area.
     3690  (subl (:$l (:apply ash (:apply 1+ nwords) x8632::word-shift))
    36903691        (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
    36913692  ;; align stack to 16-byte boundary
     
    37003701                                            ((temp :imm)))
    37013702  (movd (:@ (:%seg :rcontext) x8632::tcr.foreign-sp) (:%mmx x8632::stack-temp))
    3702   ;; make frame at least 24 bytes long (note that nwords is a fixnum)
    3703   (movl (:$l 24) (:%l temp))
    3704   (rcmpl (:%l nwords) (:%l temp))
    3705   (cmoval (:%l nwords) (:%l temp))
     3703  ;; Work around Apple bug number 6386516 (open stub may clobber stack)
     3704  ;; by leaving an extra word of space in the parameter area.
     3705  ;; Note that nwords is a fixnum.
     3706  (leal (:@ 4 (:%l nwords)) (:%l temp))
    37063707  (subl (:%l temp) (:@ (:%seg :rcontext) x8632::tcr.foreign-sp))
    37073708  ;; align stack to 16-byte boundary
Note: See TracChangeset for help on using the changeset viewer.