On Thu, 19 Oct 2023 20:49:13 GMT, Maurizio Cimadamore <[email protected]> wrote:
>> 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 Marked as reviewed by pminborg (Committer). ------------- PR Review: https://git.openjdk.org/jdk/pull/16272#pullrequestreview-1689323317
