< prev index next >

src/hotspot/cpu/x86/frame_x86.cpp

Print this page




 419   // oopMaps seems to have the "H" regs at the same address and the
 420   // vanilla register.
 421   // XXXX make this go away
 422   if (true) {
 423     map->set_location(rbp->as_VMReg()->next(), (address) link_addr);
 424   }
 425 #endif // AMD64
 426 }
 427 
 428 
 429 //------------------------------------------------------------------------------
 430 // frame::sender_for_interpreter_frame
 431 frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
 432   // SP is the raw SP from the sender after adapter or interpreter
 433   // extension.
 434   intptr_t* sender_sp = this->sender_sp();
 435 
 436   // This is the sp before any possible extension (adapter/locals).
 437   intptr_t* unextended_sp = interpreter_frame_sender_sp();
 438 
 439 #if defined(COMPILER2) || INCLUDE_JVMCI
 440   if (map->update_map()) {
 441     update_map_with_saved_link(map, (intptr_t**) addr_at(link_offset));
 442   }
 443 #endif // COMPILER2 || INCLUDE_JVMCI
 444 
 445   return frame(sender_sp, unextended_sp, link(), sender_pc());
 446 }
 447 
 448 
 449 //------------------------------------------------------------------------------
 450 // frame::sender_for_compiled_frame
 451 frame frame::sender_for_compiled_frame(RegisterMap* map) const {
 452   assert(map != NULL, "map must be set");
 453 
 454   // frame owned by optimizing compiler
 455   assert(_cb->frame_size() >= 0, "must have non-zero frame size");
 456   intptr_t* sender_sp = unextended_sp() + _cb->frame_size();
 457   intptr_t* unextended_sp = sender_sp;
 458 
 459   // On Intel the return_address is always the word on the stack
 460   address sender_pc = (address) *(sender_sp-1);
 461 
 462   // This is the saved value of EBP which may or may not really be an FP.
 463   // It is only an FP if the sender is an interpreter frame (or C1?).




 419   // oopMaps seems to have the "H" regs at the same address and the
 420   // vanilla register.
 421   // XXXX make this go away
 422   if (true) {
 423     map->set_location(rbp->as_VMReg()->next(), (address) link_addr);
 424   }
 425 #endif // AMD64
 426 }
 427 
 428 
 429 //------------------------------------------------------------------------------
 430 // frame::sender_for_interpreter_frame
 431 frame frame::sender_for_interpreter_frame(RegisterMap* map) const {
 432   // SP is the raw SP from the sender after adapter or interpreter
 433   // extension.
 434   intptr_t* sender_sp = this->sender_sp();
 435 
 436   // This is the sp before any possible extension (adapter/locals).
 437   intptr_t* unextended_sp = interpreter_frame_sender_sp();
 438 
 439 #if COMPILER2_OR_JVMCI
 440   if (map->update_map()) {
 441     update_map_with_saved_link(map, (intptr_t**) addr_at(link_offset));
 442   }
 443 #endif // COMPILER2_OR_JVMCI
 444 
 445   return frame(sender_sp, unextended_sp, link(), sender_pc());
 446 }
 447 
 448 
 449 //------------------------------------------------------------------------------
 450 // frame::sender_for_compiled_frame
 451 frame frame::sender_for_compiled_frame(RegisterMap* map) const {
 452   assert(map != NULL, "map must be set");
 453 
 454   // frame owned by optimizing compiler
 455   assert(_cb->frame_size() >= 0, "must have non-zero frame size");
 456   intptr_t* sender_sp = unextended_sp() + _cb->frame_size();
 457   intptr_t* unextended_sp = sender_sp;
 458 
 459   // On Intel the return_address is always the word on the stack
 460   address sender_pc = (address) *(sender_sp-1);
 461 
 462   // This is the saved value of EBP which may or may not really be an FP.
 463   // It is only an FP if the sender is an interpreter frame (or C1?).


< prev index next >