src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp

changeset 3606
da4be62fb889
parent 2708
1d1603768966
child 4136
bf2edd3c9b0f
equal deleted inserted replaced
3605:c7987cbaf2ca 3606: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

mercurial