< prev index next >

src/cpu/arm/vm/frame_arm.cpp

Print this page




 604     DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
 605 #ifdef AARCH64
 606     DESCRIBE_FP_OFFSET(interpreter_frame_stack_top);
 607     DESCRIBE_FP_OFFSET(interpreter_frame_extended_sp);
 608 #else
 609     DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
 610 #endif // AARCH64
 611     DESCRIBE_FP_OFFSET(interpreter_frame_method);
 612     DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
 613     DESCRIBE_FP_OFFSET(interpreter_frame_cache);
 614     DESCRIBE_FP_OFFSET(interpreter_frame_locals);
 615     DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
 616     DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
 617   }
 618 }
 619 
 620 // This is a generic constructor which is only used by pns() in debug.cpp.
 621 frame::frame(void* sp, void* fp, void* pc) {
 622   init((intptr_t*)sp, (intptr_t*)fp, (address)pc);
 623 }


 624 #endif
 625 
 626 intptr_t *frame::initial_deoptimization_info() {
 627   // used to reset the saved FP
 628   return fp();
 629 }
 630 
 631 intptr_t* frame::real_fp() const {
 632 #ifndef AARCH64
 633   if (is_entry_frame()) {
 634     // Work-around: FP (currently) does not conform to the ABI for entry
 635     // frames (see generate_call_stub). Might be worth fixing as another CR.
 636     // Following code assumes (and asserts) this has not yet been fixed.
 637     assert(frame::entry_frame_call_wrapper_offset == 0, "adjust this code");
 638     intptr_t* new_fp = fp();
 639     new_fp += 5; // saved R0,R1,R2,R4,R10
 640 #ifndef __SOFTFP__
 641     new_fp += 8*2; // saved D8..D15
 642 #endif
 643     return new_fp;


 604     DESCRIBE_FP_OFFSET(interpreter_frame_sender_sp);
 605 #ifdef AARCH64
 606     DESCRIBE_FP_OFFSET(interpreter_frame_stack_top);
 607     DESCRIBE_FP_OFFSET(interpreter_frame_extended_sp);
 608 #else
 609     DESCRIBE_FP_OFFSET(interpreter_frame_last_sp);
 610 #endif // AARCH64
 611     DESCRIBE_FP_OFFSET(interpreter_frame_method);
 612     DESCRIBE_FP_OFFSET(interpreter_frame_mdp);
 613     DESCRIBE_FP_OFFSET(interpreter_frame_cache);
 614     DESCRIBE_FP_OFFSET(interpreter_frame_locals);
 615     DESCRIBE_FP_OFFSET(interpreter_frame_bcp);
 616     DESCRIBE_FP_OFFSET(interpreter_frame_initial_sp);
 617   }
 618 }
 619 
 620 // This is a generic constructor which is only used by pns() in debug.cpp.
 621 frame::frame(void* sp, void* fp, void* pc) {
 622   init((intptr_t*)sp, (intptr_t*)fp, (address)pc);
 623 }
 624 
 625 void frame::pd_ps() {}
 626 #endif
 627 
 628 intptr_t *frame::initial_deoptimization_info() {
 629   // used to reset the saved FP
 630   return fp();
 631 }
 632 
 633 intptr_t* frame::real_fp() const {
 634 #ifndef AARCH64
 635   if (is_entry_frame()) {
 636     // Work-around: FP (currently) does not conform to the ABI for entry
 637     // frames (see generate_call_stub). Might be worth fixing as another CR.
 638     // Following code assumes (and asserts) this has not yet been fixed.
 639     assert(frame::entry_frame_call_wrapper_offset == 0, "adjust this code");
 640     intptr_t* new_fp = fp();
 641     new_fp += 5; // saved R0,R1,R2,R4,R10
 642 #ifndef __SOFTFP__
 643     new_fp += 8*2; // saved D8..D15
 644 #endif
 645     return new_fp;
< prev index next >