void PcDesc::print(nmethod* code) { #ifndef PRODUCT ResourceMark rm; tty->print_cr("PcDesc(pc=0x%lx offset=%x bits=%x):", real_pc(code), pc_offset(), _flags); if (scope_decode_offset() == DebugInformationRecorder::serialized_null) { return; } for (ScopeDesc* sd = code->scope_desc_at(real_pc(code)); sd != NULL; sd = sd->sender()) { tty->print(" "); sd->method()->print_short_name(tty); tty->print(" @%d", sd->bci()); if (sd->should_reexecute()) tty->print(" reexecute=true"); tty->cr(); } #endif }
inline address ThreadCodeBuffer::compute_adjusted_pc(address pc) { assert(contains(pc), "pc must point into codebuffer") pc = real_pc() + (pc - code_begin()); assert(method()->contains(pc), "result must be in nmethod"); return pc; }
inline address ThreadCodeBuffer::capture_pc(address pc) { assert(captures(pc), "pc must point into original code for codebuffer") pc = code_begin() + (pc - real_pc()); assert(contains(pc), "result must be in codebuffer"); return pc; }
bool captures(address pc) const { return (real_pc() <= pc && pc < real_pc() + size()); }