jdk/test/java/lang/invoke/VarHandles/VarHandleBaseByteArrayTest.java
author psandoz
Tue, 17 May 2016 12:06:41 +0200
changeset 38328 40435a469d25
parent 36934 590fc47a0aeb
permissions -rw-r--r--
8156485: MethodHandles.varHandleExactInvoker should perform exact checks Reviewed-by: vlivanov
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36934
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     1
/*
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     2
 * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     4
 *
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     7
 * published by the Free Software Foundation.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     8
 *
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    13
 * accompanied this code).
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    14
 *
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    18
 *
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    21
 * questions.
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    22
 */
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    23
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    24
import org.testng.annotations.BeforeClass;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    25
import org.testng.annotations.DataProvider;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    26
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    27
import java.lang.invoke.VarHandle;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    28
import java.nio.ByteBuffer;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    29
import java.nio.ByteOrder;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    30
import java.util.ArrayList;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    31
import java.util.Arrays;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    32
import java.util.EnumSet;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    33
import java.util.List;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    34
import java.util.function.Function;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    35
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    36
public abstract class VarHandleBaseByteArrayTest extends VarHandleBaseTest {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    37
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    38
    enum MemoryMode {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    39
        ALIGNED(0, false), UNALIGNED(0, true),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    40
        BIG_ENDIAN(1, false), LITTLE_ENDIAN(1, true),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    41
        READ_WRITE(2, false), READ_ONLY(2, true),;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    42
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    43
        final int bit;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    44
        final int value;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    45
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    46
        MemoryMode(int bit, boolean value) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    47
            this.bit = bit;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    48
            this.value = value ? 1 << bit : 0;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    49
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    50
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    51
        boolean isSet(int bitSet) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    52
            return (bitSet & (1 << bit)) == value;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    53
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    54
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    55
        static int bitSet(MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    56
            if (modes == null) return 0;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    57
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    58
            int set = 0;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    59
            for (MemoryMode m : modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    60
                set = (set & ~(1 << m.bit)) | m.value;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    61
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    62
            return set;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    63
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    64
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    65
        static EnumSet<MemoryMode> enumSet(int bitSet) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    66
            EnumSet<MemoryMode> es = EnumSet.noneOf(MemoryMode.class);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    67
            for (MemoryMode m : values()) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    68
                if (m.isSet(bitSet)) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    69
                    es.add(m);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    70
                }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    71
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    72
            return es;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    73
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    74
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    75
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    76
    static class Source<T> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    77
        final T s;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    78
        final int memoryModes;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    79
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    80
        public Source(T s, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    81
            this.s = s;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    82
            memoryModes = MemoryMode.bitSet(modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    83
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    84
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    85
        @Override
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    86
        public String toString() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    87
            return s.getClass().getCanonicalName() + " " + MemoryMode.enumSet(memoryModes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    88
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    89
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    90
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    91
    static abstract class ByteArrayViewSource<T> extends Source<T> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    92
        public ByteArrayViewSource(T t, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    93
            super(t, modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    94
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    95
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    96
        abstract void fill(byte value);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    97
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    98
        abstract void fill(byte[] values);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
    99
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   100
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   101
    static class ByteArraySource extends ByteArrayViewSource<byte[]> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   102
        public ByteArraySource(byte[] bytes, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   103
            super(bytes, modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   104
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   105
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   106
        void fill(byte value) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   107
            Arrays.fill(s, value);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   108
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   109
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   110
        void fill(byte[] values) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   111
            for (int i = 0; i < s.length; i++) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   112
                s[i] = values[i % values.length];
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   113
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   114
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   115
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   116
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   117
    static class ByteBufferSource extends ByteArrayViewSource<ByteBuffer> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   118
        public ByteBufferSource(ByteBuffer buffer, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   119
            super(buffer, modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   120
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   121
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   122
        void fill(byte value) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   123
            for (int i = 0; i < s.limit(); i++) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   124
                s.put(i, value);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   125
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   126
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   127
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   128
        void fill(byte[] values) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   129
            for (int i = 0; i < s.limit(); i++) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   130
                s.put(i, values[i % values.length]);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   131
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   132
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   133
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   134
        @Override
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   135
        public String toString() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   136
            return s + " " + MemoryMode.enumSet(memoryModes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   137
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   138
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   139
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   140
    static class ByteBufferReadOnlySource extends ByteBufferSource {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   141
        final ByteBuffer rwSource;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   142
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   143
        public ByteBufferReadOnlySource(ByteBuffer roBuffer, ByteBuffer rwSource, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   144
            super(roBuffer, modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   145
            this.rwSource = rwSource;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   146
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   147
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   148
        void fill(byte value) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   149
            for (int i = 0; i < rwSource.limit(); i++) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   150
                rwSource.put(i, value);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   151
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   152
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   153
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   154
        void fill(byte[] values) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   155
            for (int i = 0; i < rwSource.limit(); i++) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   156
                rwSource.put(i, values[i % values.length]);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   157
            }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   158
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   159
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   160
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   161
    static class VarHandleSource extends Source<VarHandle> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   162
        VarHandleSource(VarHandle vh, MemoryMode... modes) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   163
            super(vh, modes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   164
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   165
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   166
        boolean matches(ByteArrayViewSource<?> bav) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   167
            return s.coordinateTypes().get(0).isAssignableFrom(bav.s.getClass());
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   168
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   169
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   170
        @Override
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   171
        public String toString() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   172
            return " VarHandle " + MemoryMode.enumSet(memoryModes);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   173
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   174
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   175
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   176
    static class VarHandleSourceAccessTestCase extends AccessTestCase<VarHandleSource> {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   177
        final ByteArrayViewSource<?> bs;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   178
        final VarHandleSource vhs;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   179
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   180
        VarHandleSourceAccessTestCase(String desc, ByteArrayViewSource<?> bs, VarHandleSource vhs, AccessTestAction<VarHandleSource> ata) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   181
            this(desc, bs, vhs, ata, true);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   182
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   183
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   184
        VarHandleSourceAccessTestCase(String desc, ByteArrayViewSource<?> bs, VarHandleSource vhs, AccessTestAction<VarHandleSource> ata, boolean loop) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   185
            super(vhs + " -> " + bs + " " + desc, ata, loop);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   186
            this.bs = bs;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   187
            this.vhs = vhs;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   188
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   189
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   190
        @Override
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   191
        VarHandleSource get() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   192
            return vhs;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   193
        }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   194
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   195
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   196
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   197
    static double rotateLeft(double i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   198
        return Double.longBitsToDouble(
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   199
                Long.rotateLeft(Double.doubleToRawLongBits(i), distance));
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   200
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   201
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   202
    static double rotateRight(double i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   203
        return Double.longBitsToDouble(
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   204
                Long.rotateRight(Double.doubleToRawLongBits(i), distance));
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   205
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   206
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   207
    static float rotateLeft(float i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   208
        return Float.intBitsToFloat(
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   209
                Integer.rotateLeft(Float.floatToRawIntBits(i), distance));
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   210
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   211
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   212
    static float rotateRight(float i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   213
        return Float.intBitsToFloat(
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   214
                Integer.rotateRight(Float.floatToRawIntBits(i), distance));
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   215
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   216
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   217
    static long rotateLeft(long i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   218
        return Long.rotateLeft(i, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   219
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   220
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   221
    static long rotateRight(long i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   222
        return Long.rotateRight(i, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   223
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   224
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   225
    static int rotateLeft(int i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   226
        return Integer.rotateLeft(i, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   227
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   228
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   229
    static int rotateRight(int i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   230
        return Integer.rotateRight(i, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   231
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   232
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   233
    static short rotateLeft(short i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   234
        int v = (i << 16) | i;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   235
        v = Integer.rotateLeft(v, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   236
        return (short) v;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   237
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   238
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   239
    static short rotateRight(short i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   240
        int v = (i << 16) | i;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   241
        v = Integer.rotateRight(v, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   242
        return (short) v;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   243
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   244
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   245
    static char rotateLeft(char i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   246
        int v = (i << 16) | i;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   247
        v = Integer.rotateLeft(v, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   248
        return (char) v;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   249
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   250
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   251
    static char rotateRight(char i, int distance) {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   252
        int v = (i << 16) | i;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   253
        v = Integer.rotateRight(v, distance);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   254
        return (char) v;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   255
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   256
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   257
    static final int LENGTH_BYTES = 32;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   258
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   259
    byte[] array;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   260
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   261
    List<ByteArrayViewSource<?>> bavss;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   262
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   263
    List<VarHandleSource> vhss;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   264
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   265
    public void setupByteSources() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   266
        array = new byte[LENGTH_BYTES];
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   267
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   268
        // Native endianess
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   269
        MemoryMode ne = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   270
                        ? MemoryMode.BIG_ENDIAN : MemoryMode.LITTLE_ENDIAN;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   271
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   272
        bavss = new ArrayList<>();
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   273
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   274
        // byte[] source
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   275
        ByteArraySource a =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   276
                new ByteArraySource(array,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   277
                                    ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   278
        bavss.add(a);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   279
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   280
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   281
        // Combinations of ByteBuffer sources
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   282
        ByteBufferSource hbb =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   283
                new ByteBufferSource(ByteBuffer.wrap(array),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   284
                                     MemoryMode.ALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   285
        bavss.add(hbb);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   286
        ByteBufferReadOnlySource hbb_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   287
                new ByteBufferReadOnlySource(hbb.s.asReadOnlyBuffer(), hbb.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   288
                                             MemoryMode.ALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   289
        bavss.add(hbb_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   290
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   291
        ByteBufferSource hbb_offset_aligned =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   292
                new ByteBufferSource(ByteBuffer.wrap(array, array.length / 4, array.length / 2).slice(),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   293
                                     MemoryMode.ALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   294
        bavss.add(hbb_offset_aligned);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   295
        ByteBufferReadOnlySource hbb_offset_aligned_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   296
                new ByteBufferReadOnlySource(hbb_offset_aligned.s.asReadOnlyBuffer(), hbb_offset_aligned.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   297
                                             MemoryMode.ALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   298
        bavss.add(hbb_offset_aligned_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   299
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   300
        ByteBufferSource hbb_offset_unaligned =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   301
                new ByteBufferSource(ByteBuffer.wrap(array, array.length / 4 - 1, array.length / 2).slice(),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   302
                                     MemoryMode.UNALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   303
        bavss.add(hbb_offset_unaligned);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   304
        ByteBufferReadOnlySource hbb_offset_unaligned_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   305
                new ByteBufferReadOnlySource(hbb_offset_unaligned.s.asReadOnlyBuffer(), hbb_offset_unaligned.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   306
                                             MemoryMode.UNALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   307
        bavss.add(hbb_offset_unaligned_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   308
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   309
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   310
        ByteBufferSource dbb =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   311
                new ByteBufferSource(ByteBuffer.allocateDirect(array.length),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   312
                                     MemoryMode.ALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   313
        bavss.add(dbb);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   314
        ByteBufferReadOnlySource dbb_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   315
                new ByteBufferReadOnlySource(dbb.s.asReadOnlyBuffer(), dbb.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   316
                                             MemoryMode.ALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   317
        bavss.add(dbb_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   318
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   319
        ByteBufferSource dbb_offset_aligned =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   320
                new ByteBufferSource(dbb.s.slice().position(array.length / 4).limit(array.length / 4 + array.length / 2).slice(),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   321
                                     MemoryMode.ALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   322
        bavss.add(dbb_offset_aligned);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   323
        ByteBufferReadOnlySource dbb_offset_aligned_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   324
                new ByteBufferReadOnlySource(dbb_offset_aligned.s.asReadOnlyBuffer(), dbb_offset_aligned.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   325
                                             MemoryMode.ALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   326
        bavss.add(dbb_offset_aligned_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   327
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   328
        ByteBufferSource dbb_offset_unaligned =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   329
                new ByteBufferSource(dbb.s.slice().position(array.length / 4 - 1).limit(array.length / 4 - 1 + array.length / 2).slice(),
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   330
                                     MemoryMode.UNALIGNED, ne, MemoryMode.READ_WRITE);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   331
        bavss.add(dbb_offset_unaligned);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   332
        ByteBufferReadOnlySource dbb_offset_unaligned_ro =
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   333
                new ByteBufferReadOnlySource(dbb_offset_unaligned.s.asReadOnlyBuffer(), dbb_offset_unaligned.s,
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   334
                                             MemoryMode.UNALIGNED, ne, MemoryMode.READ_ONLY);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   335
        bavss.add(dbb_offset_unaligned_ro);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   336
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   337
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   338
    @BeforeClass
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   339
    public void setup() {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   340
        setupByteSources();
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   341
        setupVarHandleSources();
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   342
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   343
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   344
    abstract void setupVarHandleSources();
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   345
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   346
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   347
    @DataProvider
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   348
    public Object[][] varHandlesProvider() throws Exception {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   349
        return vhss.stream().map(cvh -> new Object[]{cvh}).toArray(Object[][]::new);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   350
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   351
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   352
    @DataProvider
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   353
    public Object[][] typesProvider() throws Exception {
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   354
        List<java.lang.Class<?>> aepts = Arrays.asList(byte[].class, int.class);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   355
        List<java.lang.Class<?>> bbpts = Arrays.asList(ByteBuffer.class, int.class);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   356
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   357
        Function<VarHandle, List<Class<?>>> vhToPts = vh ->
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   358
                vh.coordinateTypes().get(0) == byte[].class ? aepts : bbpts;
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   359
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   360
        return vhss.stream().map(vh -> new Object[]{vh.s, vhToPts.apply(vh.s)}).toArray(Object[][]::new);
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   361
    }
590fc47a0aeb 8149644: Integrate VarHandles
psandoz
parents:
diff changeset
   362
}