82 inline address* frame::O7_addr() const { return (address*) &younger_sp()[ I7->sp_offset_in_saved_window()]; } 83 inline address* frame::O0_addr() const { return (address*) &younger_sp()[ I0->sp_offset_in_saved_window()]; } 84 85 inline intptr_t* frame::sender_sp() const { return fp(); } 86 87 inline intptr_t* frame::real_fp() const { return fp(); } 88 89 inline intptr_t** frame::interpreter_frame_locals_addr() const { 90 return (intptr_t**) sp_addr_at( Llocals->sp_offset_in_saved_window()); 91 } 92 93 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 94 return (intptr_t*) sp_addr_at( Lbcp->sp_offset_in_saved_window()); 95 } 96 97 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 98 // %%%%% reinterpreting ImethodDataPtr as a mdx 99 return (intptr_t*) sp_addr_at( ImethodDataPtr->sp_offset_in_saved_window()); 100 } 101 102 inline jint frame::interpreter_frame_expression_stack_direction() { return -1; } 103 104 // bottom(base) of the expression stack (highest address) 105 inline intptr_t* frame::interpreter_frame_expression_stack() const { 106 return (intptr_t*)interpreter_frame_monitors() - 1; 107 } 108 109 // top of expression stack (lowest address) 110 inline intptr_t* frame::interpreter_frame_tos_address() const { 111 return *interpreter_frame_esp_addr() + 1; 112 } 113 114 inline BasicObjectLock** frame::interpreter_frame_monitors_addr() const { 115 return (BasicObjectLock**) sp_addr_at(Lmonitors->sp_offset_in_saved_window()); 116 } 117 inline intptr_t** frame::interpreter_frame_esp_addr() const { 118 return (intptr_t**)sp_addr_at(Lesp->sp_offset_in_saved_window()); 119 } 120 121 inline void frame::interpreter_frame_set_tos_address( intptr_t* x ) { 122 *interpreter_frame_esp_addr() = x - 1; 123 } | 82 inline address* frame::O7_addr() const { return (address*) &younger_sp()[ I7->sp_offset_in_saved_window()]; } 83 inline address* frame::O0_addr() const { return (address*) &younger_sp()[ I0->sp_offset_in_saved_window()]; } 84 85 inline intptr_t* frame::sender_sp() const { return fp(); } 86 87 inline intptr_t* frame::real_fp() const { return fp(); } 88 89 inline intptr_t** frame::interpreter_frame_locals_addr() const { 90 return (intptr_t**) sp_addr_at( Llocals->sp_offset_in_saved_window()); 91 } 92 93 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 94 return (intptr_t*) sp_addr_at( Lbcp->sp_offset_in_saved_window()); 95 } 96 97 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 98 // %%%%% reinterpreting ImethodDataPtr as a mdx 99 return (intptr_t*) sp_addr_at( ImethodDataPtr->sp_offset_in_saved_window()); 100 } 101 102 // bottom(base) of the expression stack (highest address) 103 inline intptr_t* frame::interpreter_frame_expression_stack() const { 104 return (intptr_t*)interpreter_frame_monitors() - 1; 105 } 106 107 // top of expression stack (lowest address) 108 inline intptr_t* frame::interpreter_frame_tos_address() const { 109 return *interpreter_frame_esp_addr() + 1; 110 } 111 112 inline BasicObjectLock** frame::interpreter_frame_monitors_addr() const { 113 return (BasicObjectLock**) sp_addr_at(Lmonitors->sp_offset_in_saved_window()); 114 } 115 inline intptr_t** frame::interpreter_frame_esp_addr() const { 116 return (intptr_t**)sp_addr_at(Lesp->sp_offset_in_saved_window()); 117 } 118 119 inline void frame::interpreter_frame_set_tos_address( intptr_t* x ) { 120 *interpreter_frame_esp_addr() = x - 1; 121 } |