< prev index next >

src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp

Print this page

        

*** 415,425 **** register intptr_t **ebp; __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); #else register intptr_t **ebp __asm__ (SPELL_REG_FP); #endif ! return (intptr_t*) *ebp; // we want what it points to. } frame os::current_frame() { intptr_t* fp = _get_previous_fp(); --- 415,433 ---- register intptr_t **ebp; __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp)); #else register intptr_t **ebp __asm__ (SPELL_REG_FP); #endif ! // ebp is for this frame (_get_previous_fp). We want the ebp for the ! // caller of os::current_frame*(), so go up two frames. However, for ! // optimized builds, _get_previous_fp() will be inlined, so only go ! // up 1 frame in that case. ! #ifdef _NMT_NOINLINE_ ! return **(intptr_t***)ebp; ! #else ! return *ebp; ! #endif } frame os::current_frame() { intptr_t* fp = _get_previous_fp();
< prev index next >