RFR: 8331865: Consolidate size and alignment checks in LayoutPath [v2]

Maurizio Cimadamore mcimadamore at openjdk.org
Mon May 20 18:29:02 UTC 2024


On Mon, 20 May 2024 16:42:19 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:

> some additional overhead e.g.,
> 
> ```
>         if (derefAdapters.length == 0) {
>             // insert align check for the root layout on the initial MS + offset
>             List<Class<?>> coordinateTypes = handle.coordinateTypes();
>             MethodHandle alignCheck = MethodHandles.insertArguments(MH_CHECK_ENCL_LAYOUT, 2, rootLayout());
>             handle = MethodHandles.collectCoordinates(handle, 0, alignCheck);
>             int[] reorder = IntStream.concat(IntStream.of(0, 1), IntStream.range(0, coordinateTypes.size())).toArray();
>             handle = MethodHandles.permuteCoordinates(handle, coordinateTypes, reorder);
>         }
> ```

True, the chain for segment var handle is quite long (and that is not a result of this patch, it has always been more or less like that). Funnily, I was staring at this piece of code the other day, and I think this can be dealt with morally with a `foldArguments`, but we don't have the equivalent of that in the VH/coordinates world. Maybe we should add that (or at least implement internally) as that would simplify the adaptation, avoiding the permute step (which is typically rather heavy).

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

PR Comment: https://git.openjdk.org/jdk/pull/19251#issuecomment-2120979087


More information about the core-libs-dev mailing list