JDK-8237354 introduced the concept of "foreground work" in WorkGang, as a 
special case for use by the HeapDumper. I propose that we remove this code, 
since this special use case can be solved without the need for the concept of 
"foreground work" in WorkGang.

As far as I can tell, there's no reason why it must be the VM thread that takes 
on the task of writing the header, iterating over roots, etc. So, in 
VM_HeapDumper::work(), instead of checking if the current thread is the VM 
thread we can just check if the worker_id is non-zero. That way, a single 
worker thread will take on the task of writing the header, iterating over 
roots, etc, and all other worker threads will continue to call worker_loop().

Testing:
 - Passed Tier1-3
 - Passed multiple runs of test/hotspot/jtreg/serviceability/dcmd/gc/
 - Manually ran jcmd GC.heap_dump with various GCs enabled

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

Commit messages:
 - 8273482: Remove "foreground work" concept from WorkGang

Changes: https://git.openjdk.java.net/jdk/pull/5410/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5410&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8273482
  Stats: 21 lines in 3 files changed: 0 ins; 14 del; 7 mod
  Patch: https://git.openjdk.java.net/jdk/pull/5410.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/5410/head:pull/5410

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

Reply via email to