< prev index next >

src/hotspot/cpu/arm/frame_arm.cpp

Print this page

308   map->clear();
309   assert(map->include_argument_oops(), "should be set by clear");
310   if (jfa->last_Java_pc() != nullptr) {
311     frame fr(jfa->last_Java_sp(), jfa->last_Java_fp(), jfa->last_Java_pc());
312     return fr;
313   }
314   frame fr(jfa->last_Java_sp(), jfa->last_Java_fp());
315   return fr;
316 }
317 
318 UpcallStub::FrameData* UpcallStub::frame_data_for_frame(const frame& frame) const {
319   ShouldNotCallThis();
320   return nullptr;
321 }
322 
323 bool frame::upcall_stub_frame_is_first() const {
324   ShouldNotCallThis();
325   return false;
326 }
327 





328 //------------------------------------------------------------------------------
329 // frame::verify_deopt_original_pc
330 //
331 // Verifies the calculated original PC of a deoptimization PC for the
332 // given unextended SP.  The unextended SP might also be the saved SP
333 // for MethodHandle call sites.
334 #ifdef ASSERT
335 void frame::verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp, bool is_method_handle_return) {
336   frame fr;
337 
338   // This is ugly but it's better than to change {get,set}_original_pc
339   // to take an SP value as argument.  And it's only a debugging
340   // method anyway.
341   fr._unextended_sp = unextended_sp;
342 
343   address original_pc = nm->get_original_pc(&fr);
344   assert(nm->insts_contains_inclusive(original_pc),
345          "original PC must be in the main code section of the compiled method (or must be immediately following it)");
346   assert(nm->is_method_handle_return(original_pc) == is_method_handle_return, "must be");
347 }

308   map->clear();
309   assert(map->include_argument_oops(), "should be set by clear");
310   if (jfa->last_Java_pc() != nullptr) {
311     frame fr(jfa->last_Java_sp(), jfa->last_Java_fp(), jfa->last_Java_pc());
312     return fr;
313   }
314   frame fr(jfa->last_Java_sp(), jfa->last_Java_fp());
315   return fr;
316 }
317 
318 UpcallStub::FrameData* UpcallStub::frame_data_for_frame(const frame& frame) const {
319   ShouldNotCallThis();
320   return nullptr;
321 }
322 
323 bool frame::upcall_stub_frame_is_first() const {
324   ShouldNotCallThis();
325   return false;
326 }
327 
328 JavaThread** frame::saved_thread_address(const frame& f) {
329   Unimplemented();
330   return nullptr;
331 }
332 
333 //------------------------------------------------------------------------------
334 // frame::verify_deopt_original_pc
335 //
336 // Verifies the calculated original PC of a deoptimization PC for the
337 // given unextended SP.  The unextended SP might also be the saved SP
338 // for MethodHandle call sites.
339 #ifdef ASSERT
340 void frame::verify_deopt_original_pc(nmethod* nm, intptr_t* unextended_sp, bool is_method_handle_return) {
341   frame fr;
342 
343   // This is ugly but it's better than to change {get,set}_original_pc
344   // to take an SP value as argument.  And it's only a debugging
345   // method anyway.
346   fr._unextended_sp = unextended_sp;
347 
348   address original_pc = nm->get_original_pc(&fr);
349   assert(nm->insts_contains_inclusive(original_pc),
350          "original PC must be in the main code section of the compiled method (or must be immediately following it)");
351   assert(nm->is_method_handle_return(original_pc) == is_method_handle_return, "must be");
352 }
< prev index next >