Mercurial > hg > truffle
comparison src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp @ 5903:da4be62fb889
7147740: add assertions to check stack alignment on VM entry from generated code (x64)
Summary: check stack alignment on VM entry on x64.
Reviewed-by: kvn, never
author | roland |
---|---|
date | Mon, 27 Feb 2012 09:17:44 +0100 |
parents | 1d1603768966 |
children | bf2edd3c9b0f |
comparison
equal
deleted
inserted
replaced
5902:c7987cbaf2ca | 5903:da4be62fb889 |
---|---|
249 | 249 |
250 frame os::get_sender_for_C_frame(frame* fr) { | 250 frame os::get_sender_for_C_frame(frame* fr) { |
251 return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc()); | 251 return frame(fr->sender_sp(), frame::unpatchable, fr->sender_pc()); |
252 } | 252 } |
253 | 253 |
254 // Returns an estimate of the current stack pointer. Result must be guaranteed to | |
255 // point into the calling threads stack, and be no lower than the current stack | |
256 // pointer. | |
257 address os::current_stack_pointer() { | |
258 volatile int dummy; | |
259 address sp = (address)&dummy + 8; // %%%% need to confirm if this is right | |
260 return sp; | |
261 } | |
262 | |
254 frame os::current_frame() { | 263 frame os::current_frame() { |
255 intptr_t* sp = StubRoutines::Sparc::flush_callers_register_windows_func()(); | 264 intptr_t* sp = StubRoutines::Sparc::flush_callers_register_windows_func()(); |
256 frame myframe(sp, frame::unpatchable, | 265 frame myframe(sp, frame::unpatchable, |
257 CAST_FROM_FN_PTR(address, os::current_frame)); | 266 CAST_FROM_FN_PTR(address, os::current_frame)); |
258 if (os::is_first_C_frame(&myframe)) { | 267 if (os::is_first_C_frame(&myframe)) { |
813 // For compiler1 the architecture is v8 and frps isn't present in v8 | 822 // For compiler1 the architecture is v8 and frps isn't present in v8 |
814 extern "C" void _mark_fpu_nosave() { | 823 extern "C" void _mark_fpu_nosave() { |
815 __asm__ __volatile__ ("wr %%g0, 0, %%fprs \n\t" : : :); | 824 __asm__ __volatile__ ("wr %%g0, 0, %%fprs \n\t" : : :); |
816 } | 825 } |
817 #endif //defined(__sparc) && defined(COMPILER2) | 826 #endif //defined(__sparc) && defined(COMPILER2) |
827 | |
828 #ifndef PRODUCT | |
829 void os::verify_stack_alignment() { | |
830 } | |
831 #endif |