RFR: 8264288: Performance issue with MethodHandle.asCollector [v3]
jvernee at openjdk.java.net
Mon Apr 5 14:23:39 UTC 2021
On Mon, 5 Apr 2021 12:48:07 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
>> Jorn Vernee has updated the pull request incrementally with one additional commit since the last revision:
>> - Revert back to injected constructor handle
>> - Add lambda form sharing
>> - Add test case for collecting a custom class
> src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java line 1883:
>> 1882: MethodHandle newArray = MethodHandles.arrayConstructor(arrayType);
>> 1883: MethodHandle storeFunc = ArrayAccessor.getAccessor(arrayType, ArrayAccess.SET);
> I'd move `storeFunc` into `makeCollectorForm()` and use erased accessor there (`ArrayAccessor.OBJECT_ARRAY_SETTER`).
> (It is interesting that `OBJECT_ARRAY_SETTER` is `ARRAY_STORE` intrinsic.)
Done. I think it's also more obvious this way that the erased setter is being used. Good suggestion.
More information about the core-libs-dev