RFR: 8265135: Reduce work initializing VarForms [v3]
psandoz at openjdk.java.net
Wed Apr 14 15:18:39 UTC 2021
On Wed, 14 Apr 2021 11:31:55 GMT, Claes Redestad <redestad at openjdk.org> wrote:
>> No, since VarHandles are not publicly extensible, the exception should not occur unless something has gone very wrong (the correspondence between access mode and implementing method is broken).
> Unfortunately the change to InternalError breaks a number of tests, since the UOE does bubble up through the public API. I also found a few failing tests I had overlooked due VarHandle.isAccessModeSupported throwing rather than returning false, so I had to slightly rework the patch.
Oops, my bad. I got confused and forgot that VH implementations can avoid implementing access mode methods that would just throw UOE. This slightly complicates lazily resolution.
We don't cache the result of a failed method resolution, which would require a non-null sentinel value, probably does not matter.
Using `resolveOrNull` seems a better fit rather than catching and dropping ROE, less work performed too.
More information about the core-libs-dev