210 } 211 212 inline oop* frame::interpreter_frame_temp_oop_addr() const { 213 return (oop *)(fp() + interpreter_frame_oop_temp_offset); 214 } 215 216 inline int frame::interpreter_frame_monitor_size() { 217 return BasicObjectLock::size(); 218 } 219 220 221 // expression stack 222 // (the max_stack arguments are used by the GC; see class FrameClosure) 223 224 inline intptr_t* frame::interpreter_frame_expression_stack() const { 225 intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end(); 226 return monitor_end-1; 227 } 228 229 230 inline jint frame::interpreter_frame_expression_stack_direction() { return -1; } 231 232 233 // Entry frames 234 235 inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const { 236 return (JavaCallWrapper**)addr_at(entry_frame_call_wrapper_offset); 237 } 238 239 240 // Compiled frames 241 242 inline oop frame::saved_oop_result(RegisterMap* map) const { 243 oop* result_adr = (oop *)map->location(r0->as_VMReg()); 244 guarantee(result_adr != NULL, "bad register save location"); 245 246 return (*result_adr); 247 } 248 249 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) { 250 oop* result_adr = (oop *)map->location(r0->as_VMReg()); 251 guarantee(result_adr != NULL, "bad register save location"); 252 | 210 } 211 212 inline oop* frame::interpreter_frame_temp_oop_addr() const { 213 return (oop *)(fp() + interpreter_frame_oop_temp_offset); 214 } 215 216 inline int frame::interpreter_frame_monitor_size() { 217 return BasicObjectLock::size(); 218 } 219 220 221 // expression stack 222 // (the max_stack arguments are used by the GC; see class FrameClosure) 223 224 inline intptr_t* frame::interpreter_frame_expression_stack() const { 225 intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end(); 226 return monitor_end-1; 227 } 228 229 230 // Entry frames 231 232 inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const { 233 return (JavaCallWrapper**)addr_at(entry_frame_call_wrapper_offset); 234 } 235 236 237 // Compiled frames 238 239 inline oop frame::saved_oop_result(RegisterMap* map) const { 240 oop* result_adr = (oop *)map->location(r0->as_VMReg()); 241 guarantee(result_adr != NULL, "bad register save location"); 242 243 return (*result_adr); 244 } 245 246 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) { 247 oop* result_adr = (oop *)map->location(r0->as_VMReg()); 248 guarantee(result_adr != NULL, "bad register save location"); 249 |