< prev index next >

src/hotspot/cpu/aarch64/frame_aarch64.cpp

Print this page




 414   // this is weird "H" ought to be at a higher address however the
 415   // oopMaps seems to have the "H" regs at the same address and the
 416   // vanilla register.
 417   // XXXX make this go away
 418   if (true) {
 419     map->set_location(rfp->as_VMReg()->next(), (address) link_addr);
 420   }
 421 }
 422 
 423 
 424 //------------------------------------------------------------------------------
 425 // frame::sender_for_interpreter_frame
 426 frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
 427   // SP is the raw SP from the sender after adapter or interpreter
 428   // extension.
 429   intptr_t* sender_sp = this->sender_sp();
 430 
 431   // This is the sp before any possible extension (adapter/locals).
 432   intptr_t* unextended_sp = interpreter_frame_sender_sp();
 433 
 434 #if defined(COMPILER2) || INCLUDE_JVMCI
 435   if (map->update_map()) {
 436     update_map_with_saved_link(map, (intptr_t**) addr_at(link_offset));
 437   }
 438 #endif // COMPILER2 || INCLUDE_JVMCI
 439 
 440   return frame(sender_sp, unextended_sp, link(), sender_pc());
 441 }
 442 
 443 
 444 //------------------------------------------------------------------------------
 445 // frame::sender_for_compiled_frame
 446 frame frame::sender_for_compiled_frame(RegisterMap* map) const {
 447   // we cannot rely upon the last fp having been saved to the thread
 448   // in C2 code but it will have been pushed onto the stack. so we
 449   // have to find it relative to the unextended sp
 450 
 451   assert(_cb->frame_size() >= 0, "must have non-zero frame size");
 452   intptr_t* l_sender_sp = unextended_sp() + _cb->frame_size();
 453   intptr_t* unextended_sp = l_sender_sp;
 454 
 455   // the return_address is always the word on the stack
 456   address sender_pc = (address) *(l_sender_sp-1);
 457 
 458   intptr_t** saved_fp_addr = (intptr_t**) (l_sender_sp - frame::sender_sp_offset);




 414   // this is weird "H" ought to be at a higher address however the
 415   // oopMaps seems to have the "H" regs at the same address and the
 416   // vanilla register.
 417   // XXXX make this go away
 418   if (true) {
 419     map->set_location(rfp->as_VMReg()->next(), (address) link_addr);
 420   }
 421 }
 422 
 423 
 424 //------------------------------------------------------------------------------
 425 // frame::sender_for_interpreter_frame
 426 frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
 427   // SP is the raw SP from the sender after adapter or interpreter
 428   // extension.
 429   intptr_t* sender_sp = this->sender_sp();
 430 
 431   // This is the sp before any possible extension (adapter/locals).
 432   intptr_t* unextended_sp = interpreter_frame_sender_sp();
 433 
 434 #if COMPILER2_OR_JVMCI
 435   if (map->update_map()) {
 436     update_map_with_saved_link(map, (intptr_t**) addr_at(link_offset));
 437   }
 438 #endif // COMPILER2_OR_JVMCI
 439 
 440   return frame(sender_sp, unextended_sp, link(), sender_pc());
 441 }
 442 
 443 
 444 //------------------------------------------------------------------------------
 445 // frame::sender_for_compiled_frame
 446 frame frame::sender_for_compiled_frame(RegisterMap* map) const {
 447   // we cannot rely upon the last fp having been saved to the thread
 448   // in C2 code but it will have been pushed onto the stack. so we
 449   // have to find it relative to the unextended sp
 450 
 451   assert(_cb->frame_size() >= 0, "must have non-zero frame size");
 452   intptr_t* l_sender_sp = unextended_sp() + _cb->frame_size();
 453   intptr_t* unextended_sp = l_sender_sp;
 454 
 455   // the return_address is always the word on the stack
 456   address sender_pc = (address) *(l_sender_sp-1);
 457 
 458   intptr_t** saved_fp_addr = (intptr_t**) (l_sender_sp - frame::sender_sp_offset);


< prev index next >