On Thu, 9 Sep 2021 20:07:25 GMT, Per Liden <pli...@openjdk.org> wrote:

>> 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
>
> Per Liden has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Remove asserts

The reason I've added this was, that for the shenandoah GC the heap iteration 
would run into assertions if not called from the VM thread. Maybe this has 
changed in the meantime.

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

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

Reply via email to