On Fri, 2 Jun 2023 19:09:49 GMT, Mandy Chung <mch...@openjdk.org> wrote:

> > I wonder if it is possible to transition from an lazy (indirect) VH to a 
> > direct VH once initialized i.e., `checkAccessModeThenIsDirect` returns the 
> > value of `initialized`.
> 
> Sounds a good idea. Once the class is initialized, the lazy VH becomes a 
> direct VH that may help the performance. In that case, the VarHandleGuards 
> would need to ensure it links with the direct VH not the lazy VH.

I believe instead of changing the guards we can change the implementation of 
the static methods on the concrete static VHs to call `asDirect()` (lets also 
add `@ForceInline` on `asDirect`), since `linkToStatic` will pass the args to 
the static method described by the member name (since the lazy and direct VH 
handles share the same var form).

That has the nice effect of pushing the complexity closer to where it is 
needed. Its subtle but i think can be explained. Thereby we can reduce the 
memory footprint for subsequent access modes. Perhaps we can even "zero" out 
the MH cache on initialization?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13821#issuecomment-1579476316

Reply via email to