hotspot/src/cpu/sparc/vm/frame_sparc.cpp
changeset 40337 0e9a027b0f8a
parent 40332 a52d1e719c4d
parent 40336 4f31bb2b0a5a
child 42051 0264f170da65
equal deleted inserted replaced
40333:0dc2e9be4855 40337:0e9a027b0f8a
   337   assert(pc == NULL && cb == NULL || pc != NULL, "can't have a cb and no pc!");
   337   assert(pc == NULL && cb == NULL || pc != NULL, "can't have a cb and no pc!");
   338   if (_cb == NULL && _pc != NULL ) {
   338   if (_cb == NULL && _pc != NULL ) {
   339     _cb = CodeCache::find_blob(_pc);
   339     _cb = CodeCache::find_blob(_pc);
   340   }
   340   }
   341   _deopt_state = unknown;
   341   _deopt_state = unknown;
   342 #ifdef ASSERT
       
   343   if ( _cb != NULL && _cb->is_compiled()) {
       
   344     // Without a valid unextended_sp() we can't convert the pc to "original"
       
   345     assert(!((CompiledMethod*)_cb)->is_deopt_pc(_pc), "invariant broken");
       
   346   }
       
   347 #endif // ASSERT
       
   348 }
   342 }
   349 
   343 
   350 frame::frame(intptr_t* sp, unpatchable_t, address pc, CodeBlob* cb) {
   344 frame::frame(intptr_t* sp, unpatchable_t, address pc, CodeBlob* cb) {
   351   init(sp, pc, cb);
   345   init(sp, pc, cb);
   352 }
   346 }
   514   return frame(sp, younger_sp, frame_is_interpreted);
   508   return frame(sp, younger_sp, frame_is_interpreted);
   515 }
   509 }
   516 
   510 
   517 
   511 
   518 void frame::patch_pc(Thread* thread, address pc) {
   512 void frame::patch_pc(Thread* thread, address pc) {
       
   513   vmassert(_deopt_state != unknown, "frame is unpatchable");
   519   if(thread == Thread::current()) {
   514   if(thread == Thread::current()) {
   520    StubRoutines::Sparc::flush_callers_register_windows_func()();
   515    StubRoutines::Sparc::flush_callers_register_windows_func()();
   521   }
   516   }
   522   if (TracePcPatching) {
   517   if (TracePcPatching) {
   523     // QQQ this assert is invalid (or too strong anyway) sice _pc could
   518     // QQQ this assert is invalid (or too strong anyway) sice _pc could