158 return (intptr_t*) callers_abi()->callers_sp; 159 } 160 161 inline intptr_t** frame::interpreter_frame_locals_addr() const { 162 return (intptr_t**) &(ijava_state()->locals); 163 } 164 165 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 166 return (intptr_t*) &(ijava_state()->bcp); 167 } 168 169 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 170 return (intptr_t*) &(ijava_state()->mdx); 171 } 172 173 // Bottom(base) of the expression stack (highest address). 174 inline intptr_t* frame::interpreter_frame_expression_stack() const { 175 return (intptr_t*)interpreter_frame_monitor_end() - 1; 176 } 177 178 inline jint frame::interpreter_frame_expression_stack_direction() { 179 return -1; 180 } 181 182 inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const { 183 return &interpreter_frame_tos_address()[offset]; 184 } 185 186 187 // monitor elements 188 189 // End is lower in memory than begin, and beginning element is oldest element. 190 // Also begin is one past last monitor. 191 192 inline intptr_t* frame::interpreter_frame_top_frame_sp() { 193 return (intptr_t*)ijava_state()->top_frame_sp; 194 } 195 196 inline void frame::interpreter_frame_set_top_frame_sp(intptr_t* top_frame_sp) { 197 ijava_state()->top_frame_sp = (intptr_t) top_frame_sp; 198 } 199 200 inline void frame::interpreter_frame_set_sender_sp(intptr_t* sender_sp) { 201 ijava_state()->sender_sp = (intptr_t) sender_sp; | 158 return (intptr_t*) callers_abi()->callers_sp; 159 } 160 161 inline intptr_t** frame::interpreter_frame_locals_addr() const { 162 return (intptr_t**) &(ijava_state()->locals); 163 } 164 165 inline intptr_t* frame::interpreter_frame_bcp_addr() const { 166 return (intptr_t*) &(ijava_state()->bcp); 167 } 168 169 inline intptr_t* frame::interpreter_frame_mdp_addr() const { 170 return (intptr_t*) &(ijava_state()->mdx); 171 } 172 173 // Bottom(base) of the expression stack (highest address). 174 inline intptr_t* frame::interpreter_frame_expression_stack() const { 175 return (intptr_t*)interpreter_frame_monitor_end() - 1; 176 } 177 178 inline intptr_t* frame::interpreter_frame_tos_at(jint offset) const { 179 return &interpreter_frame_tos_address()[offset]; 180 } 181 182 183 // monitor elements 184 185 // End is lower in memory than begin, and beginning element is oldest element. 186 // Also begin is one past last monitor. 187 188 inline intptr_t* frame::interpreter_frame_top_frame_sp() { 189 return (intptr_t*)ijava_state()->top_frame_sp; 190 } 191 192 inline void frame::interpreter_frame_set_top_frame_sp(intptr_t* top_frame_sp) { 193 ijava_state()->top_frame_sp = (intptr_t) top_frame_sp; 194 } 195 196 inline void frame::interpreter_frame_set_sender_sp(intptr_t* sender_sp) { 197 ijava_state()->sender_sp = (intptr_t) sender_sp; |