RFR (M): 8247819: G1: Process strong OopStorage entries in parallel
Kim Barrett
kim.barrett at oracle.com
Thu Jun 25 18:38:58 UTC 2020
> On Jun 25, 2020, at 7:53 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
>
> Hi Stefan,
>
> thanks for your review.
>
> On 25.06.20 13:28, Stefan Karlsson wrote:
>> The formatting looked weird. I'll try again:
>> Hi Thomas,
>> This isn't needed after we rewrote the OopStorageSetParState:
>> +// Needed by _oop_storage_set_strong_par_state as the definition is in the
>> +// .inline.hpp file.
>> +G1RootProcessor::~G1RootProcessor() {}
>
> Removed.
>
>> ---
>> This doesn't seem to be used:
>> +
>> + template <typename Closure>
>> + static void strong_oops_do(Closure* cl); };
>
> The method is still used by Parallel and Serial GC.
>
>> ---
>> Just a suggestion to lower the noise:
>> + G1GCPhaseTimes::GCParPhases phase = G1GCPhaseTimes::GCParPhases(G1GCPhaseTimes::StrongOopStorageSetRoots + i);
>> could be changed to:
>> + G1GCPhaseTimes::GCParPhases phase(G1GCPhaseTimes::StrongOopStorageSetRoots + i);
>
> This does not work (compile). G1GCPhaseTimes::GCParPhases is an enum, not a class.
>
> New webrevs:
> http://cr.openjdk.java.net/~tschatzl/8247819/webrev.0_to_1/ (diff)
> http://cr.openjdk.java.net/~tschatzl/8247819/webrev.1/ (full)
>
> Testing:
> recompilation
>
> Thanks,
> Thomas
Looks good.
One minor thing, for which I don’t need a new webrev if you take this suggestion:
------------------------------------------------------------------------------
src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp
69 int counter = 0;
70 for (OopStorageSet::Iterator it = OopStorageSet::strong_iterator(); !it.is_end(); ++it, ++counter) {
...
75 uint index = G1GCPhaseTimes::StrongOopStorageSetRoots + counter;
Rather than separate counter and index, maybe
uint index = G1GCPhaseTimes::StrongOopStorageSetRoots;
for (... ++index) {
------------------------------------------------------------------------------
More information about the hotspot-gc-dev
mailing list