RFR: 8244684: G1 abuses StarTask to also include partial objarray scan tasks
Kim Barrett
kim.barrett at oracle.com
Thu May 14 11:52:11 UTC 2020
> On May 12, 2020, at 6:26 AM, stefan.johansson at oracle.com wrote:
> On 2020-05-11 20:11, Kim Barrett wrote:
>> Please review this cleanup of the parallel task queue usage by G1 non-full
>> collections. It currently uses queues with StarTask elements, except not
>> really. […]
>> CR:
>> https://bugs.openjdk.java.net/browse/JDK-8244684
>> Webrev:
>> https://cr.openjdk.java.net/~kbarrett/8244684/open.00/
> Really nice cleanup. Looks good in general, just a few small things:
>
> gc/g1/g1ParScanThreadState.inline.hpp
> ---
> 139 void G1ParScanThreadState::steal_and_trim_queue(ScannerTasksQueueSet *task_queues) {
> 140 ScannerTask stolen_task;
> 141 while (task_queues->steal(_worker_id, stolen_task)) {
> 142 verify_task(stolen_task);
> 143 dispatch_task(stolen_task);
>
> First thing in dispatch_task() is verify_task() so this one on line 142 could be removed.
Done.
> ---
>
> gc/shared/taskqueue.hpp
> ---
> 570 class PartialArrayScanTask {
> 571 void* _p;
> ...
> 578 oop to_source_array() const { return oop(_p); }
>
> I see no reason not to use oop instead of void* here and the getter could be obj() as in the ObjArrayTask above. If you don't like obj() or want it to be more like the ScannerTask, maybe to_obj() or to_array() is better.
I think I just made it void* for consistency with the other tasks. But using oop here
does seem better, so sure. Done.
New webrevs:
full: https://cr.openjdk.java.net/~kbarrett/8244684/open.01/
incr: https://cr.openjdk.java.net/~kbarrett/8244684/open.01.inc/
More information about the hotspot-gc-dev
mailing list