< prev index next >

test/jdk/java/lang/invoke/VarHandles/VarHandleTestAccessBoolean.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 21,31 **** * questions. */ /* * @test ! * @run testng/othervm -Diters=10 -Xint VarHandleTestAccessBoolean * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 VarHandleTestAccessBoolean * @run testng/othervm -Diters=20000 VarHandleTestAccessBoolean * @run testng/othervm -Diters=20000 -XX:-TieredCompilation VarHandleTestAccessBoolean */ --- 21,34 ---- * questions. */ /* * @test ! * @compile -XDenableValueTypes Value.java ! * @run testng/othervm -Xverify:none -Diters=10 -Xint VarHandleTestAccessBoolean ! */ ! /* Disabled temporarily for lworld * @run testng/othervm -Diters=20000 -XX:TieredStopAtLevel=1 VarHandleTestAccessBoolean * @run testng/othervm -Diters=20000 VarHandleTestAccessBoolean * @run testng/othervm -Diters=20000 -XX:-TieredCompilation VarHandleTestAccessBoolean */
*** 58,67 **** --- 61,72 ---- VarHandle vhStaticFinalField; VarHandle vhArray; + VarHandle vhValueTypeField; + @BeforeClass public void setup() throws Exception { vhFinalField = MethodHandles.lookup().findVarHandle( VarHandleTestAccessBoolean.class, "final_v", boolean.class);
*** 73,82 **** --- 78,90 ---- vhStaticField = MethodHandles.lookup().findStaticVarHandle( VarHandleTestAccessBoolean.class, "static_v", boolean.class); vhArray = MethodHandles.arrayElementVarHandle(boolean[].class); + + vhValueTypeField = MethodHandles.lookup().findVarHandle( + Value.class, "boolean_v", boolean.class); } @DataProvider public Object[][] varHandlesProvider() throws Exception {
*** 208,217 **** --- 216,230 ---- vhArray, VarHandleTestAccessBoolean::testArrayUnsupported, false)); cases.add(new VarHandleAccessTestCase("Array index out of bounds", vhArray, VarHandleTestAccessBoolean::testArrayIndexOutOfBounds, false)); + cases.add(new VarHandleAccessTestCase("Value type field", + vhValueTypeField, vh -> testValueTypeField(Value.VT, vh))); + cases.add(new VarHandleAccessTestCase("Value type field unsupported", + vhValueTypeField, vh -> testValueTypeFieldUnsupported(Value.VT, vh), + false)); // Work around issue with jtreg summary reporting which truncates // the String result of Object.toString to 30 characters, hence // the first dummy argument return cases.stream().map(tc -> new Object[]{tc.toString(), tc}).toArray(Object[][]::new);
*** 286,295 **** --- 299,321 ---- boolean o = (boolean) vh.getAndAddRelease(recv, true); }); } + static void testValueTypeField(Value recv, VarHandle vh) { + // Plain + { + boolean x = (boolean) vh.get(recv); + assertEquals(x, true, "get boolean value"); + } + } + + static void testValueTypeFieldUnsupported(Value recv, VarHandle vh) { + checkUOE(() -> { + vh.set(recv, false); + }); + } static void testStaticFinalField(VarHandle vh) { // Plain { boolean x = (boolean) vh.get();
< prev index next >