RFR: 8212107: VMThread issues and cleanup [v2]

Robbin Ehn rehn at openjdk.java.net
Wed Sep 23 11:27:30 UTC 2020


On Wed, 23 Sep 2020 11:02:54 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> inner_execute(..) is called in the non nested-case here:
>> https://github.com/openjdk/jdk/blob/e49178a4445378fa0b5505ad6e9f1661636f88b8/src/hotspot/share/runtime/vmThread.cpp#L474
>> 
>> Nested case:
>> https://github.com/openjdk/jdk/blob/e49178a4445378fa0b5505ad6e9f1661636f88b8/src/hotspot/share/runtime/vmThread.cpp#L511
>
> Sorry I missed that. Seems odd that inner_execute handles nesting when that is only possible via one of the paths by
> which it is called - that's why I thought it was only for the case where called from execute(). I'd rather see the
> nesting logic handled as before, exclusively on the code path in which it can occur.

That would create a lot of code duplication:
void VMThread::none_nested_inner_execute(VM_Operation* op) {
  Thread* current = Thread::current();
  assert(current->is_VM_thread(), "must be a VM thread");

  _cur_vm_operation = op;

  HandleMark hm(VMThread::vm_thread());
  EventMark em("Executing %s VM operation: %s", op->name());

  // If we are at a safepoint we will evaluate all the operations that
  // follow that also require a safepoint
  log_debug(vmthread)("Evaluating %s %s VM operation: %s",
                      _cur_vm_operation->evaluate_at_safepoint() ? "safepoint" : "non-safepoint",
                      _cur_vm_operation->name());

  bool end_safepoint = false;
  if (_cur_vm_operation->evaluate_at_safepoint()) {
    SafepointSynchronize::begin();
    if (_timeout_task != NULL) {
      _timeout_task->arm();
    }
    end_safepoint = true;
  }

  evaluate_operation(_cur_vm_operation);

  if (end_safepoint) {
    if (_timeout_task != NULL) {
      _timeout_task->disarm();
    }
    SafepointSynchronize::end();
  }

  _cur_vm_operation = NULL;
}
Which 80% the same. (Same minus a few lines)

-------------

PR: https://git.openjdk.java.net/jdk/pull/228


More information about the hotspot-dev mailing list