658 659 void frame::describe_pd(FrameValues& values, int frame_no) { 660 if (is_interpreted_frame()) { 661 DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp); 662 DESCRIBE_FP_OFFSET(interpreter_frame_last_sp); 663 DESCRIBE_FP_OFFSET(interpreter_frame_method); 664 DESCRIBE_FP_OFFSET(interpreter_frame_mdx); 665 DESCRIBE_FP_OFFSET(interpreter_frame_cache); 666 DESCRIBE_FP_OFFSET(interpreter_frame_locals); 667 DESCRIBE_FP_OFFSET(interpreter_frame_bcx); 668 DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp); 669 } 670 671 } 672 #endif 673 674 intptr_t *frame::initial_deoptimization_info() { 675 // used to reset the saved FP 676 return fp(); 677 } | 658 659 void frame::describe_pd(FrameValues& values, int frame_no) { 660 if (is_interpreted_frame()) { 661 DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp); 662 DESCRIBE_FP_OFFSET(interpreter_frame_last_sp); 663 DESCRIBE_FP_OFFSET(interpreter_frame_method); 664 DESCRIBE_FP_OFFSET(interpreter_frame_mdx); 665 DESCRIBE_FP_OFFSET(interpreter_frame_cache); 666 DESCRIBE_FP_OFFSET(interpreter_frame_locals); 667 DESCRIBE_FP_OFFSET(interpreter_frame_bcx); 668 DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp); 669 } 670 671 } 672 #endif 673 674 intptr_t *frame::initial_deoptimization_info() { 675 // used to reset the saved FP 676 return fp(); 677 } 678 679 intptr_t* frame::real_fp() const { 680 if (_cb != NULL) { 681 // use the frame size if valid 682 int size = _cb->frame_size(); 683 if ((size > 0) && 684 (! is_ricochet_frame())) { 685 // Work-around: ricochet explicitly excluded because frame size is not 686 // constant for the ricochet blob but its frame_size could not, for 687 // some reasons, be declared as <= 0. This potentially confusing 688 // size declaration should be fixed as another CR. 689 return unextended_sp() + size; 690 } 691 } 692 // else rely on fp() 693 assert(! is_compiled_frame(), "unknown compiled frame size"); 694 return fp(); 695 } |