< prev index next >

src/os_cpu/linux_x86/vm/os_linux_x86.cpp

Print this page

        

*** 162,182 **** } return epc; } ! frame os::fetch_frame_from_context(void* ucVoid) { intptr_t* sp; intptr_t* fp; ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp); ! return frame(sp, fp, epc.pc()); } // By default, gcc always save frame pointer (%ebp/%rbp) on stack. It may get // turned off by -fomit-frame-pointer, ! frame os::get_sender_for_C_frame(frame* fr) { ! return frame(fr->sender_sp(), fr->link(), fr->sender_pc()); } intptr_t* _get_previous_fp() { #ifdef SPARC_WORKS register intptr_t **ebp; --- 162,182 ---- } return epc; } ! frame os::fetch_frame_from_context(Thread* thread, void* ucVoid) { intptr_t* sp; intptr_t* fp; ExtendedPC epc = fetch_frame_from_context(ucVoid, &sp, &fp); ! return frame(thread, sp, fp, epc.pc()); } // By default, gcc always save frame pointer (%ebp/%rbp) on stack. It may get // turned off by -fomit-frame-pointer, ! frame os::get_sender_for_C_frame(Thread* thread, frame* fr) { ! return frame(thread, fr->sender_sp(), fr->link(), fr->sender_pc()); } intptr_t* _get_previous_fp() { #ifdef SPARC_WORKS register intptr_t **ebp;
*** 190,208 **** return (intptr_t*) *ebp; // we want what it points to. } frame os::current_frame() { intptr_t* fp = _get_previous_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 return frame(); } else { ! return os::get_sender_for_C_frame(&myframe); } } // Utility functions --- 190,210 ---- return (intptr_t*) *ebp; // we want what it points to. } frame os::current_frame() { + Thread* thread = Thread::current(); intptr_t* fp = _get_previous_fp(); ! frame myframe(thread, ! (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 return frame(); } else { ! return os::get_sender_for_C_frame(thread, &myframe); } } // Utility functions
< prev index next >