< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp

Print this page




 196 }
 197 
 198 // top of expression stack
 199 inline intptr_t* frame::interpreter_frame_tos_address() const {
 200   intptr_t* last_sp = interpreter_frame_last_sp();
 201   if (last_sp == NULL) {
 202     return sp();
 203   } else {
 204     // sp() may have been extended or shrunk by an adapter.  At least
 205     // check that we don't fall behind the legal region.
 206     // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
 207     assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
 208     return last_sp;
 209   }
 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::pd_oop_map_offset_adjustment() const {
 217   return 0;
 218 }
 219 
 220 inline int frame::interpreter_frame_monitor_size() {
 221   return BasicObjectLock::size();
 222 }
 223 
 224 
 225 // expression stack
 226 // (the max_stack arguments are used by the GC; see class FrameClosure)
 227 
 228 inline intptr_t* frame::interpreter_frame_expression_stack() const {
 229   intptr_t* monitor_end = (intptr_t*) interpreter_frame_monitor_end();
 230   return monitor_end-1;
 231 }
 232 
 233 
 234 inline jint frame::interpreter_frame_expression_stack_direction() { return -1; }
 235 
 236 
 237 // Entry frames
 238 
 239 inline JavaCallWrapper** frame::entry_frame_call_wrapper_addr() const {
 240  return (JavaCallWrapper**)addr_at(entry_frame_call_wrapper_offset);
 241 }
 242 
 243 
 244 // Compiled frames
 245 
 246 inline int frame::local_offset_for_compiler(int local_index, int nof_args, int max_nof_locals, int max_nof_monitors) {
 247   return (nof_args - local_index + (local_index < nof_args ? 1: -1));
 248 }
 249 
 250 inline int frame::monitor_offset_for_compiler(int local_index, int nof_args, int max_nof_locals, int max_nof_monitors) {
 251   return local_offset_for_compiler(local_index, nof_args, max_nof_locals, max_nof_monitors);
 252 }
 253 
 254 inline int frame::min_local_offset_for_compiler(int nof_args, int max_nof_locals, int max_nof_monitors) {
 255   return (nof_args - (max_nof_locals + max_nof_monitors*2) - 1);
 256 }
 257 
 258 inline bool frame::volatile_across_calls(Register reg) {
 259   return true;
 260 }
 261 
 262 
 263 
 264 inline oop frame::saved_oop_result(RegisterMap* map) const {
 265   oop* result_adr = (oop *)map->location(r0->as_VMReg());
 266   guarantee(result_adr != NULL, "bad register save location");
 267 
 268   return (*result_adr);
 269 }
 270 
 271 inline void frame::set_saved_oop_result(RegisterMap* map, oop obj) {
 272   oop* result_adr = (oop *)map->location(r0->as_VMReg());
 273   guarantee(result_adr != NULL, "bad register save location");
 274 
 275   *result_adr = obj;
 276 }
 277 
 278 #endif // CPU_AARCH64_VM_FRAME_AARCH64_INLINE_HPP


 196 }
 197 
 198 // top of expression stack
 199 inline intptr_t* frame::interpreter_frame_tos_address() const {
 200   intptr_t* last_sp = interpreter_frame_last_sp();
 201   if (last_sp == NULL) {
 202     return sp();
 203   } else {
 204     // sp() may have been extended or shrunk by an adapter.  At least
 205     // check that we don't fall behind the legal region.
 206     // For top deoptimized frame last_sp == interpreter_frame_monitor_end.
 207     assert(last_sp <= (intptr_t*) interpreter_frame_monitor_end(), "bad tos");
 208     return last_sp;
 209   }
 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 
 253   *result_adr = obj;
 254 }
 255 
 256 #endif // CPU_AARCH64_VM_FRAME_AARCH64_INLINE_HPP
< prev index next >