RFR: 8273656: Improve java.lang.invoke.MethodType.parameterList() and its usage
Claes Redestad
redestad at openjdk.java.net
Wed Sep 22 23:53:59 UTC 2021
On Mon, 13 Sep 2021 11:06:15 GMT, Сергей Цыпанов <github.com+10835776+stsypanov at openjdk.org> wrote:
> Currently the method is implemented like
>
> public List<Class<?>> parameterList() {
> return Collections.unmodifiableList(Arrays.asList(ptypes.clone()));
> }
>
> This seems to be excessive, as three objects are allocated here. Instead we can use `List.of(ptypes)` which doesn't allocate anything for empty array and for one of length 1 and 2 it allocates lightweight objects with 2 fields, still copying longer arrays. This is likely to be fruitful as most of methods have 0-2 parameters.
>
> Also there is a couple of cases when `MethodType.parameterLis()` is called to get its size, which is excessive either as we can use `MethodType.parameterCount()` instead.
I think it's OK and even expected to file a CSRs retroactively when you realize post integration that there's a behavior change. I recall doing so at least once in the past.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5489
More information about the core-libs-dev
mailing list