< prev index next >

src/cpu/x86/vm/frame_x86.cpp

Print this page




 625 
 626 
 627 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
 628   int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize);
 629   return &interpreter_frame_tos_address()[index];
 630 }
 631 
 632 #ifndef PRODUCT
 633 
 634 #define DESCRIBE_FP_OFFSET(name) \
 635   values.describe(frame_no, fp() + frame::name##_offset, #name)
 636 
 637 void frame::describe_pd(FrameValues& values, int frame_no) {
 638   if (is_interpreted_frame()) {
 639     DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
 640     DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
 641     DESCRIBE_FP_OFFSET(interpreter_frame_method);
 642     DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
 643     DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
 644     DESCRIBE_FP_OFFSET(interpreter_frame_cache);

 645     DESCRIBE_FP_OFFSET(interpreter_frame_locals);
 646     DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
 647     DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
 648 #ifdef AMD64
 649   } else if (is_entry_frame()) {
 650     // This could be more descriptive if we use the enum in
 651     // stubGenerator to map to real names but it's most important to
 652     // claim these frame slots so the error checking works.
 653     for (int i = 0; i < entry_frame_after_call_words; i++) {
 654       values.describe(frame_no, fp() - i, err_msg("call_stub word fp - %d", i));
 655     }
 656 #endif // AMD64
 657   }
 658 }
 659 #endif // !PRODUCT
 660 
 661 intptr_t *frame::initial_deoptimization_info() {
 662   // used to reset the saved FP
 663   return fp();
 664 }




 625 
 626 
 627 intptr_t* frame::interpreter_frame_tos_at(jint offset) const {
 628   int index = (Interpreter::expr_offset_in_bytes(offset)/wordSize);
 629   return &interpreter_frame_tos_address()[index];
 630 }
 631 
 632 #ifndef PRODUCT
 633 
 634 #define DESCRIBE_FP_OFFSET(name) \
 635   values.describe(frame_no, fp() + frame::name##_offset, #name)
 636 
 637 void frame::describe_pd(FrameValues& values, int frame_no) {
 638   if (is_interpreted_frame()) {
 639     DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
 640     DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
 641     DESCRIBE_FP_OFFSET(interpreter_frame_method);
 642     DESCRIBE_FP_OFFSET(interpreter_frame_mirror);
 643     DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
 644     DESCRIBE_FP_OFFSET(interpreter_frame_cache);
 645     DESCRIBE_FP_OFFSET(interpreter_frame_vt_alloc_ptr);
 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 }


< prev index next >