475 return is_compiled_frame() ? unextended_sp() : sp();
476 }
477
478 #ifndef PRODUCT
479 // This is a generic constructor which is only used by pns() in debug.cpp.
480 // fp is dropped and gets determined by backlink.
481 frame::frame(void* sp, void* fp, void* pc) : frame((intptr_t*)sp, (address)pc, kind::unknown) {}
482 #endif
483
484 BasicObjectLock* frame::interpreter_frame_monitor_end() const {
485 BasicObjectLock* result = (BasicObjectLock*) at_relative(ijava_idx(monitors));
486 // make sure the pointer points inside the frame
487 assert(sp() <= (intptr_t*) result, "monitor end should be above the stack pointer");
488 assert((intptr_t*) result < fp(), "monitor end should be strictly below the frame pointer: result: " INTPTR_FORMAT " fp: " INTPTR_FORMAT, p2i(result), p2i(fp()));
489 return result;
490 }
491
492 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
493 return &interpreter_frame_tos_address()[offset];
494 }
|
475 return is_compiled_frame() ? unextended_sp() : sp();
476 }
477
478 #ifndef PRODUCT
479 // This is a generic constructor which is only used by pns() in debug.cpp.
480 // fp is dropped and gets determined by backlink.
481 frame::frame(void* sp, void* fp, void* pc) : frame((intptr_t*)sp, (address)pc, kind::unknown) {}
482 #endif
483
484 BasicObjectLock* frame::interpreter_frame_monitor_end() const {
485 BasicObjectLock* result = (BasicObjectLock*) at_relative(ijava_idx(monitors));
486 // make sure the pointer points inside the frame
487 assert(sp() <= (intptr_t*) result, "monitor end should be above the stack pointer");
488 assert((intptr_t*) result < fp(), "monitor end should be strictly below the frame pointer: result: " INTPTR_FORMAT " fp: " INTPTR_FORMAT, p2i(result), p2i(fp()));
489 return result;
490 }
491
492 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
493 return &interpreter_frame_tos_address()[offset];
494 }
495
496 intptr_t* frame::repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const {
497 Unimplemented();
498 return nullptr;
499 }
500
501 intptr_t* frame::repair_sender_sp(nmethod* nm, intptr_t* sp, intptr_t** saved_fp_addr) {
502 Unimplemented();
503 return nullptr;
504 }
505
506 bool frame::was_augmented_on_entry(int& real_size) const {
507 Unimplemented();
508 return false;
509 }
|