> The 21 iteration of the FFM API used to contain a method, namely 
> `ValueLayout::arrayElementVarHandle`. This var handle factory was useful when 
> accessing elements in a flat array of variable size.
> 
> In 22, this method has been removed because:
> * It was not general enough (it only worked with value layouts)
> * A more useful/general version could be obtained with the following code:
> 
> 
> MethodHandles.collectCoordinates(varHandle(elements), 1, scaleHandle());
> 
> 
> Given that accessing variable-length array is rather common, and given that 
> combining var handles is perceived as hard, we noticed that developers often 
> tried to workaround by creating a sequence layout of maximal size, and then 
> deriving a var handle from it. This feels suboptimal (as a new layout is 
> created just so that we can select from it, and using this layout for 
> anything else will likely lead to exceptions, because of its size).
> 
> For these reasons, we would like to expose this functionality as a new method 
> in the `MemoryLayout` interface, namely 
> `MemoryLayout::arrayElementVarHandle`. This method generalizes the old method 
> in the 21 API, and is implemented in the obvious way, using a combinator (see 
> above).
> 
> This PR also adds a lot of narrative text to describe how to deal with 
> variable-length arrays, which should clarify the role of the new method.

Maurizio Cimadamore has updated the pull request incrementally with one 
additional commit since the last revision:

  Address review comments

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/16272/files
  - new: https://git.openjdk.org/jdk/pull/16272/files/31934027..ee6c3579

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=16272&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16272&range=00-01

  Stats: 2 lines in 2 files changed: 0 ins; 1 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/16272.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16272/head:pull/16272

PR: https://git.openjdk.org/jdk/pull/16272

Reply via email to