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
