src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
Print this page
rev 3149 : 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:
*** 235,244 ****
--- 235,250 ----
frame os::get_sender_for_C_frame(frame* fr) {
return frame(fr->sender_sp(), fr->link(), fr->sender_pc());
}
+ extern "C" intptr_t *_get_current_sp(); // in .il file
+
+ address os::current_stack_pointer() {
+ return (address)_get_current_sp();;
+ }
+
extern "C" intptr_t *_get_current_fp(); // in .il file
frame os::current_frame() {
intptr_t* fp = _get_current_fp(); // it's inlined so want current fp
frame myframe((intptr_t*)os::current_stack_pointer(),
*** 952,956 ****
--- 958,970 ----
void os::setup_fpu() {
address fpu_cntrl = StubRoutines::addr_fpu_cntrl_wrd_std();
_solaris_raw_setup_fpu(fpu_cntrl);
}
#endif // AMD64
+
+ #ifndef PRODUCT
+ void os::verify_stack_alignment() {
+ #ifdef AMD64
+ assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment");
+ #endif
+ }
+ #endif