On Fri, 23 Oct 2020 17:47:36 GMT, Jorn Vernee <jver...@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 <jver...@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

Reply via email to