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

Paul Sandoz psandoz at openjdk.org
Mon May 20 16:45:02 UTC 2024


On Mon, 20 May 2024 16:31:18 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> 
> Ah, got it. You mean more support in VarHandleGuards. Yes, I have a separate patch for that (actually had that for quite a while), but we're not super sure how to evaluate what impact it has :-)

Ah, i did not realize that. Yes its tricky, it was designed for VHs to fields/arrays, to really minimize their overhead. With segments there is already 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);
        }

So perhaps it does not make much difference.

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

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


More information about the core-libs-dev mailing list