< 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 >