src/hotspot/share/runtime/thread.cpp
changeset 54631 3a3e4e473622
parent 54623 1126f0607c70
child 54645 05aaccf7d558
equal deleted inserted replaced
54630:04b17e84c87d 54631:3a3e4e473622
  2524     thread->java_suspend_self_with_safepoint_check();
  2524     thread->java_suspend_self_with_safepoint_check();
  2525   } else {
  2525   } else {
  2526     SafepointMechanism::block_if_requested(curJT);
  2526     SafepointMechanism::block_if_requested(curJT);
  2527   }
  2527   }
  2528 
  2528 
  2529   if (thread->is_deopt_suspend()) {
       
  2530     thread->clear_deopt_suspend();
       
  2531     RegisterMap map(thread, false);
       
  2532     frame f = thread->last_frame();
       
  2533     while (f.id() != thread->must_deopt_id() && ! f.is_first_frame()) {
       
  2534       f = f.sender(&map);
       
  2535     }
       
  2536     if (f.id() == thread->must_deopt_id()) {
       
  2537       thread->clear_must_deopt_id();
       
  2538       f.deoptimize(thread);
       
  2539     } else {
       
  2540       fatal("missed deoptimization!");
       
  2541     }
       
  2542   }
       
  2543 
       
  2544   JFR_ONLY(SUSPEND_THREAD_CONDITIONAL(thread);)
  2529   JFR_ONLY(SUSPEND_THREAD_CONDITIONAL(thread);)
  2545 }
  2530 }
  2546 
  2531 
  2547 // Slow path when the native==>VM/Java barriers detect a safepoint is in
  2532 // Slow path when the native==>VM/Java barriers detect a safepoint is in
  2548 // progress or when _suspend_flags is non-zero.
  2533 // progress or when _suspend_flags is non-zero.