equal
deleted
inserted
replaced
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. |