RFR: 8288327: Executable.hasRealParameterData should not be volatile [v4]

Сергей Цыпанов duke at openjdk.org
Thu Jun 30 12:04:32 UTC 2022


On Wed, 29 Jun 2022 18:11:50 GMT, liach <duke at openjdk.org> wrote:

>> Сергей Цыпанов has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   8288327: Mark ParameterData.parameters as @Stable and rename real -> isReal
>
> src/java.base/share/classes/java/lang/reflect/Executable.java line 413:
> 
>> 411:     }
>> 412: 
>> 413:     boolean hasRealParameterData() {
> 
> Since `privateGetParameters` and `hasRealParameterData` are now both simple methods with only one use site, they can be simply inlined in `getParameters()` and `getAllGenericParameterTypes()` instead:
> 
> 
>     public Parameter[] getParameters() {
>         // Need to copy the cached array to prevent users from messing
>         // with it.  Since parameters are immutable, we can
>         // shallow-copy.
>         return parameterData().parameters.clone();
>     }
> ...
>             final boolean realParamData = parameterData().isReal();
>             final Type[] genericParamTypes = getGenericParameterTypes();
>             final Type[] nonGenericParamTypes = getParameterTypes();

True for `privateGetParameters`, but `hasRealParameterData` is called also from `Parameter.isNamePresent()`, so I suggest to keep it

> src/java.base/share/classes/java/lang/reflect/Executable.java line 777:
> 
>> 775:     }
>> 776: 
>> 777:     record ParameterData(@Stable Parameter[] parameters, boolean isReal) {}
> 
> I recommend declaring this right next to `parameterData` field for the ease of maintenance, like how `EntrySet` in map implementations are declared right next to `entrySet` methods.

Done!

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

PR: https://git.openjdk.org/jdk/pull/9143


More information about the core-libs-dev mailing list