7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package org.openjdk.bench.java.lang.foreign;
25
26 import java.lang.foreign.ValueLayout;
27 import java.lang.invoke.VarHandle;
28
29 import static java.lang.foreign.ValueLayout.*;
30
31 /**
32 * Some useful Java {@link ValueLayout} and associated {@link ValueLayout#arrayElementVarHandle(int...)} var handles.
33 */
34 public class JavaLayouts {
35
36 static final VarHandle VH_INT_UNALIGNED = JAVA_INT_UNALIGNED.arrayElementVarHandle();
37
38 static final VarHandle VH_INT = JAVA_INT.arrayElementVarHandle();
39 }
|
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package org.openjdk.bench.java.lang.foreign;
25
26 import java.lang.foreign.ValueLayout;
27 import java.lang.invoke.MethodHandles;
28 import java.lang.invoke.VarHandle;
29
30 import static java.lang.foreign.ValueLayout.JAVA_INT;
31 import static java.lang.foreign.ValueLayout.JAVA_INT_UNALIGNED;
32 import static java.lang.foreign.ValueLayout.JAVA_LONG;
33 import static java.lang.foreign.ValueLayout.JAVA_LONG_UNALIGNED;
34
35 /**
36 * Some useful Java {@link ValueLayout} and associated array var handles.
37 */
38 public class JavaLayouts {
39
40 static final VarHandle VH_INT_UNALIGNED = arrayVarHandle(JAVA_INT_UNALIGNED);
41 static final VarHandle VH_INT = arrayVarHandle(JAVA_INT);
42
43 static final VarHandle VH_LONG_UNALIGNED = arrayVarHandle(JAVA_LONG_UNALIGNED);
44 static final VarHandle VH_LONG = arrayVarHandle(JAVA_LONG);
45
46 private static VarHandle arrayVarHandle(ValueLayout layout) {
47 return MethodHandles.collectCoordinates(layout.varHandle(),
48 1, MethodHandles.insertArguments(layout.scaleHandle(), 0, 0L));
49 }
50 }
|