< prev index next >

src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp

Print this page

        

*** 290,308 **** 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(), (intptr_t*)fp, CAST_FROM_FN_PTR(address, os::current_frame)); ! if (os::is_first_C_frame(&myframe)) { // stack is not walkable frame ret; // This will be a null useless frame return ret; } else { ! return os::get_sender_for_C_frame(&myframe); } } #ifndef AMD64 --- 290,312 ---- 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 + // fp is for os::current_frame. We want the fp for our caller. frame myframe((intptr_t*)os::current_stack_pointer(), (intptr_t*)fp, CAST_FROM_FN_PTR(address, os::current_frame)); ! frame caller_frame = os::get_sender_for_C_frame(&myframe); ! ! if (os::is_first_C_frame(&caller_frame)) { // stack is not walkable frame ret; // This will be a null useless frame return ret; } else { ! // return frame for our caller's caller ! return os::get_sender_for_C_frame(&caller_frame); } } #ifndef AMD64
< prev index next >