inline frame::frame(intptr_t* sp, intptr_t* fp) { _sp = sp; _fp = fp; switch (zeroframe()->type()) { case ZeroFrame::ENTRY_FRAME: _pc = StubRoutines::call_stub_return_pc(); _cb = NULL; break; case ZeroFrame::INTERPRETER_FRAME: _pc = NULL; _cb = NULL; break; case ZeroFrame::SHARK_FRAME: _pc = zero_sharkframe()->pc(); _cb = CodeCache::find_blob_unsafe(pc()); break; case ZeroFrame::FAKE_STUB_FRAME: _pc = NULL; _cb = NULL; break; default: ShouldNotReachHere(); } _deopt_state = not_deoptimized; }
inline frame::frame(ZeroFrame* zf, intptr_t* sp) { _zeroframe = zf; _sp = sp; switch (zeroframe()->type()) { case ZeroFrame::ENTRY_FRAME: _pc = StubRoutines::call_stub_return_pc(); _cb = NULL; _deopt_state = not_deoptimized; break; case ZeroFrame::INTERPRETER_FRAME: _pc = NULL; _cb = NULL; _deopt_state = not_deoptimized; break; case ZeroFrame::SHARK_FRAME: { _pc = zero_sharkframe()->pc(); _cb = CodeCache::find_blob_unsafe(pc()); address original_pc = nmethod::get_deopt_original_pc(this); if (original_pc != NULL) { _pc = original_pc; _deopt_state = is_deoptimized; } else { _deopt_state = not_deoptimized; } break; } case ZeroFrame::FAKE_STUB_FRAME: _pc = NULL; _cb = NULL; _deopt_state = not_deoptimized; break; default: ShouldNotReachHere(); } }
inline intptr_t* frame::unextended_sp() const { if (zeroframe()->is_shark_frame()) return zero_sharkframe()->unextended_sp(); else return (intptr_t *) -1; }