626
627
628 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
629 int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize);
630 return &interpreter_frame_tos_address()[index];
631 }
632
633 #ifndef PRODUCT
634
635 #define DESCRIBE_FP_OFFSET(name) \
636 values.describe(frame_no, fp() + frame::name##_offset, #name)
637
638 void frame::describe_pd(FrameValues& values, int frame_no) {
639 if (is_interpreted_frame()) {
640 DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
641 DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
642 DESCRIBE_FP_OFFSET(interpreter_frame_method);
643 DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
644 DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
645 DESCRIBE_FP_OFFSET(interpreter_frame_cache);
646 DESCRIBE_FP_OFFSET(interpreter_frame_vt_alloc_ptr);
647 DESCRIBE_FP_OFFSET(interpreter_frame_locals);
648 DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
649 DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
650 #ifdef AMD64
651 } else if (is_entry_frame()) {
652 // This could be more descriptive if we use the enum in
653 // stubGenerator to map to real names but it's most important to
654 // claim these frame slots so the error checking works.
655 for (int i = 0; i < entry_frame_after_call_words; i++) {
656 values.describe(frame_no, fp() - i, err_msg("call_stub word fp - %d", i));
657 }
658 #endif // AMD64
659 }
660 }
661 #endif // !PRODUCT
662
663 intptr_t *frame::initial_deoptimization_info() {
664 // used to reset the saved FP
665 return fp();
666 }
|
626
627
628 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
629 int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize);
630 return &interpreter_frame_tos_address()[index];
631 }
632
633 #ifndef PRODUCT
634
635 #define DESCRIBE_FP_OFFSET(name) \
636 values.describe(frame_no, fp() + frame::name##_offset, #name)
637
638 void frame::describe_pd(FrameValues& values, int frame_no) {
639 if (is_interpreted_frame()) {
640 DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
641 DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
642 DESCRIBE_FP_OFFSET(interpreter_frame_method);
643 DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
644 DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
645 DESCRIBE_FP_OFFSET(interpreter_frame_cache);
646 DESCRIBE_FP_OFFSET(interpreter_frame_locals);
647 DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
648 DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
649 #ifdef AMD64
650 } else if (is_entry_frame()) {
651 // This could be more descriptive if we use the enum in
652 // stubGenerator to map to real names but it's most important to
653 // claim these frame slots so the error checking works.
654 for (int i = 0; i < entry_frame_after_call_words; i++) {
655 values.describe(frame_no, fp() - i, err_msg("call_stub word fp - %d", i));
656 }
657 #endif // AMD64
658 }
659 }
660 #endif // !PRODUCT
661
662 intptr_t *frame::initial_deoptimization_info() {
663 // used to reset the saved FP
664 return fp();
665 }
|