Mac OS X i486 ABI -- 16-byte stack alignment

Paul Hohensee Paul.Hohensee at Sun.COM
Fri Nov 9 09:14:36 PST 2007

I didn't say it'd be easy. :)

btw, Steve of course knows this :) , but sparc doesn't cut back the 
stack on calls
because of the register save area at the top of the frame, which latter 
exist on x86.


steve goldman wrote:
> Paul Hohensee wrote:
>> You're right about x64.  My bad.
>> Another possibility is to adopt the sparc paradigm whereby the max size
>> java expression stack is allocated in the top interpreter frame and 
>> cut back
>> on calls.  You can maintain 16-byte stack alignment at all times in 
>> the interpreter
>> that way, which would allow you to properly align the stack at call 
>> sites before
>> you push arguments onto the stack, rather than in the call_VM wrappers.
> Ack. This would be exceedingly painful on 32bit because sp takes on 
> the role of SP and Lesp from sparc. It's not like 32bit has any spare 
> registers laying around to become the equivalent of Lesp. Now if you 
> were using the c++ based interpreter that would be another story. :-)
> (BTW sparc doesn't cut back the stack on interpreter calls except when 
> using the c++ interpreter. sparc is an interpreter stack space hog.)

More information about the hotspot-dev mailing list