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; |