RFR: 8278461: Use Executable.getSharedParameterTypes() instead of Executable.getParameterTypes() in trusted code
Сергей Цыпанов
duke at openjdk.java.net
Mon Jan 10 09:57:29 UTC 2022
On Thu, 6 Jan 2022 16:45:09 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> `Executable.getParameterTypes()` creates a copy of underlying array which is redundant in trusted code when we are sure the action is read-only.
>
> src/java.base/share/classes/java/lang/reflect/Executable.java line 317:
>
>> 315: final boolean realParamData = hasRealParameterData();
>> 316: final Type[] genericParamTypes = getGenericParameterTypes();
>> 317: final Type[] nonGenericParamTypes = getSharedParameterTypes();
>
> (If removing these allocations is important, I note that `ConstructorRepository.getGenericParameterTypes()` lacks an equivalent to `getSharedParameterType` for trusted callers)
>
> Similarly here I'm not sure the win from avoiding the clone is worth delegating the additional responsibility. You could still do this here if you add `.clone()` after `nonGenericParamTypes` on L344
@cl4es Do you think it's worth creating a separate PR for `ConstructorRepository.getGenericParameterTypes()`?
-------------
PR: https://git.openjdk.java.net/jdk/pull/6782
More information about the core-libs-dev
mailing list