RFR: 8194312: Support parallel and concurrent JNI global handle processing
Kim Barrett
kim.barrett at oracle.com
Wed Jan 10 21:10:44 UTC 2018
> On Jan 10, 2018, at 8:56 AM, coleen.phillimore at oracle.com wrote:
>
>
>
> On 1/8/18 10:44 PM, Kim Barrett wrote:
>>> I feel like BasicParState should be in an oopStorage.inline.hpp file to be included by the GCs that need it. Runtime code only needs to include oopStorage.hpp and doesn't need this code.
>> I forgot to deal with your pre-review suggestion of moving some stuff
>> to oopStorage.inline.hpp. I'd like to defer making such a change
>> until this review is (mostly) done, rather than clutter up diffs.
>>
>> I think all (or very nearly all) of the inline definitions in
>> oopStorage.hpp could be moved. I think they're all related to
>> iteration, and I think most clients (other than GC) won't be using
>> iteration at all.
>>
>> I think having the parallel iteration support wrapped with
>> #ifdef INCLUDE_ALL_GCS (as is already the case) deals with the
>> conditional GC usage; I think that all except Serial will eventually
>> use it.
>>
>> The parallel iteration support could be split out into another file,
>> so places that only use serial iteration (like jvmti) wouldn't include
>> it, but I think the number of such places doesn't warrant another
>> file.
>
> I would like that it be split out into another file. A lot of places in the runtime will only create and add oops to OopStorage and shouldn't care about iteration. I'm fine with making this change as a further improvement.
I'm unclear on what you are asking for. Do you want
A. Two files:
(1) oopStorage.hpp - contains just class OopStorage.
(2) oopStorage.inline.hpp - contains all the inline definitions
presently in oopStorage.hpp.
or
B. Three files:
(1) oopStorage.hpp - contains just class OopStorage.
(2) oopStorage.inline.hpp - contains all the inline definitions
presently in oopStorage.hpp, except for the ParState stuff.
(3) oopStorageParState.inline.hpp - contains the ParState stuff.
or
C. Two files:
(1) oopStorage.hpp - contains class OopStorage and all the inline
definitions presently in oopStorage.hpp, except for the ParState
stuff.
(2) oopStorage.inline.hpp - contains the ParState stuff.
I'm fine with option (A). Option (B) is unusual, but plausible; among
other things, inclusion of the ParState header by non-GC code is
suspicious. I'm not sure that's worth another file. Option (C)
doesn't seem like what you are asking for, but included for
completeness.
More information about the hotspot-dev
mailing list