< prev index next >

src/hotspot/cpu/x86/frame_x86.cpp

Print this page




 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 }


< prev index next >