731
732 #endif // !PRODUCT
733
734 intptr_t *frame::initial_deoptimization_info() {
735 // `this` is the caller of the deoptee. We want to trim it, if compiled, to
736 // unextended_sp. This is necessary if the deoptee frame is the bottom frame
737 // of a continuation on stack (more frames could be in a StackChunk) as it
738 // will pop its stack args. Otherwise the recursion in
739 // FreezeBase::recurse_freeze_java_frame() would not stop at the bottom frame.
740 return is_compiled_frame() ? unextended_sp() : sp();
741 }
742
743 BasicObjectLock* frame::interpreter_frame_monitor_end() const {
744 return interpreter_frame_monitors();
745 }
746
747 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
748 return &interpreter_frame_tos_address()[offset];
749 }
750
|
731
732 #endif // !PRODUCT
733
734 intptr_t *frame::initial_deoptimization_info() {
735 // `this` is the caller of the deoptee. We want to trim it, if compiled, to
736 // unextended_sp. This is necessary if the deoptee frame is the bottom frame
737 // of a continuation on stack (more frames could be in a StackChunk) as it
738 // will pop its stack args. Otherwise the recursion in
739 // FreezeBase::recurse_freeze_java_frame() would not stop at the bottom frame.
740 return is_compiled_frame() ? unextended_sp() : sp();
741 }
742
743 BasicObjectLock* frame::interpreter_frame_monitor_end() const {
744 return interpreter_frame_monitors();
745 }
746
747 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
748 return &interpreter_frame_tos_address()[offset];
749 }
750
751 intptr_t* frame::repair_sender_sp(intptr_t* sender_sp, intptr_t** saved_fp_addr) const {
752 Unimplemented();
753 return nullptr;
754 }
755
756 intptr_t* frame::repair_sender_sp(nmethod* nm, intptr_t* sp, intptr_t** saved_fp_addr) {
757 Unimplemented();
758 return nullptr;
759 }
760
761 bool frame::was_augmented_on_entry(int& real_size) const {
762 Unimplemented();
763 return false;
764 }
|