< prev index next >
src/hotspot/share/runtime/vmThread.cpp
Print this page
rev 54213 : [mq]: 8220774-handshakealot-v3
rev 54214 : [mq]: 8220774-handshakealot-v4
@@ -444,16 +444,16 @@
#endif
}
};
VM_Operation* VMThread::no_op_safepoint() {
- // Must check for handshakes first, since ops returns.
+ // Check for handshakes first since we may need to return a VMop.
if (HandshakeALot) {
HandshakeALotTC haltc;
Handshake::execute(&haltc);
}
- // Check for a true cleanup first, trying to keep stats correct.
+ // Check for a cleanup before SafepointALot to keep stats correct.
long interval_ms = SafepointTracing::time_since_last_safepoint_ms();
bool max_time_exceeded = GuaranteedSafepointInterval != 0 &&
(interval_ms >= GuaranteedSafepointInterval);
if (max_time_exceeded && SafepointSynchronize::is_cleanup_needed()) {
return &cleanup_op;
@@ -629,13 +629,12 @@
{ MutexLockerEx mu(VMOperationRequest_lock,
Mutex::_no_safepoint_check_flag);
VMOperationRequest_lock->notify_all();
}
- //
- // We want to make sure that we get to a safepoint regularly.
- //
+ // We want to make sure that we get to a safepoint regularly
+ // even when executing VMops that don't require safepoints.
if ((_cur_vm_operation = VMThread::no_op_safepoint()) != NULL) {
HandleMark hm(VMThread::vm_thread());
SafepointSynchronize::begin();
SafepointSynchronize::end();
_cur_vm_operation = NULL;
< prev index next >