There sure seems to be a lot of confusion about how many stack frames we're getting at the hot end of the stack, e.g.
register intptr_t **fp __asm__ (SPELL_REG_FP); // fp is for this frame (_get_previous_fp). We want the fp 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***)fp; #else return *fp; #endif