< 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,459 **** #endif } }; VM_Operation* VMThread::no_op_safepoint() { ! // Must check for handshakes first, since ops returns. if (HandshakeALot) { HandshakeALotTC haltc; Handshake::execute(&haltc); } ! // Check for a true cleanup first, trying 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; --- 444,459 ---- #endif } }; VM_Operation* VMThread::no_op_safepoint() { ! // Check for handshakes first since we may need to return a VMop. if (HandshakeALot) { HandshakeALotTC haltc; Handshake::execute(&haltc); } ! // 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,641 **** { 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. ! // if ((_cur_vm_operation = VMThread::no_op_safepoint()) != NULL) { HandleMark hm(VMThread::vm_thread()); SafepointSynchronize::begin(); SafepointSynchronize::end(); _cur_vm_operation = NULL; --- 629,640 ---- { 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 ! // 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 >