Integrated: 8254354: Add a withInvokeExactBehavior() VarHandle combinator
Jorn Vernee
jvernee at openjdk.java.net
Tue Nov 10 23:28:57 UTC 2020
On Fri, 23 Oct 2020 17:47:36 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> Hi,
>
> This patch adds an asExact() combinator to VarHandle, that will return a new VarHandle that performs exact type checks, similar to MethodHandle::invokeExact, to help developers catch inexact VarHandle usage, which can lead to performance degradation.
>
> This is implemented using a boolean flag in VarForm. If the flag is set, the exact type of the invocation is checked against the exact type in the VarForm. If there is a mismatch, a WrongMethodTypeException is thrown.
>
> Other than that, there is also an asGeneric() combinator added that does the inverse operation (thanks to Rémi for the suggestion). I've also added The `@Hidden` annotation to the VarHandleGuards methods, as well as a type-checking helper method called from the generic invocation lambda form, so that the stack trace we get points at the location where the VarHandle is being used.
>
> Thanks,
> Jorn
>
> CSR link: https://bugs.openjdk.java.net/browse/JDK-8255375
This pull request has now been integrated.
Changeset: 0a41ca6b
Author: Jorn Vernee <jvernee at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/0a41ca6b
Stats: 1668 lines in 12 files changed: 1263 ins; 62 del; 343 mod
8254354: Add a withInvokeExactBehavior() VarHandle combinator
Reviewed-by: psandoz, chegar
-------------
PR: https://git.openjdk.java.net/jdk/pull/843
More information about the core-libs-dev
mailing list