TestUseRTMDeoptOptionOnSupportedConfig.java revision 12158:0fe2815ffa74
155682Smarkm/* 2102644Snectar * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. 355682Smarkm * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 455682Smarkm * 555682Smarkm * This code is free software; you can redistribute it and/or modify it 655682Smarkm * under the terms of the GNU General Public License version 2 only, as 755682Smarkm * published by the Free Software Foundation. 855682Smarkm * 955682Smarkm * This code is distributed in the hope that it will be useful, but WITHOUT 1055682Smarkm * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1155682Smarkm * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1255682Smarkm * version 2 for more details (a copy is included in the LICENSE file that 1355682Smarkm * accompanied this code). 1455682Smarkm * 1555682Smarkm * You should have received a copy of the GNU General Public License version 1655682Smarkm * 2 along with this work; if not, write to the Free Software Foundation, 1755682Smarkm * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1855682Smarkm * 1955682Smarkm * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2055682Smarkm * or visit www.oracle.com if you need additional information or have any 2155682Smarkm * questions. 2255682Smarkm */ 2355682Smarkm 2455682Smarkm/** 2555682Smarkm * @test 2655682Smarkm * @bug 8031320 2755682Smarkm * @summary Verify UseRTMDeopt option processing on CPUs with rtm support 2855682Smarkm * when rtm locking is supported by VM. 2955682Smarkm * @library /test/lib / 3055682Smarkm * @modules java.base/jdk.internal.misc 3155682Smarkm * java.management 3255682Smarkm * 3355682Smarkm * @build sun.hotspot.WhiteBox 3455682Smarkm * @run driver ClassFileInstaller sun.hotspot.WhiteBox 3555682Smarkm * sun.hotspot.WhiteBox$WhiteBoxPermission 3655682Smarkm * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions 3755682Smarkm * -XX:+WhiteBoxAPI 38178825Sdfr * compiler.rtm.cli.TestUseRTMDeoptOptionOnSupportedConfig 3955682Smarkm */ 4055682Smarkm 4155682Smarkmpackage compiler.rtm.cli; 4255682Smarkm 4355682Smarkmimport compiler.testlibrary.rtm.predicate.SupportedCPU; 4455682Smarkmimport compiler.testlibrary.rtm.predicate.SupportedOS; 4572445Sassarimport compiler.testlibrary.rtm.predicate.SupportedVM; 4672445Sassarimport jdk.test.lib.process.ExitCode; 47178825Sdfrimport jdk.test.lib.cli.CommandLineOptionTest; 4872445Sassarimport jdk.test.lib.cli.predicate.AndPredicate; 4972445Sassar 5055682Smarkmpublic class TestUseRTMDeoptOptionOnSupportedConfig 5155682Smarkm extends CommandLineOptionTest { 5255682Smarkm private static final String DEFAULT_VALUE = "false"; 5355682Smarkm 5455682Smarkm private TestUseRTMDeoptOptionOnSupportedConfig() { 5572445Sassar super(new AndPredicate(new SupportedCPU(), new SupportedOS(), new SupportedVM())); 5655682Smarkm } 5790926Snectar 5890926Snectar @Override 5955682Smarkm public void runTestCases() throws Throwable { 6090926Snectar String shouldPassMessage = " JVM should startup with option '" 6155682Smarkm + "-XX:+UseRTMDeopt' without any warnings"; 6255682Smarkm // verify that option could be turned on 6355682Smarkm CommandLineOptionTest.verifySameJVMStartup( 6455682Smarkm null, null, shouldPassMessage, shouldPassMessage, ExitCode.OK, 6555682Smarkm "-XX:+UseRTMDeopt"); 6655682Smarkm shouldPassMessage = " JVM should startup with option '" 6755682Smarkm + "-XX:-UseRTMDeopt' without any warnings"; 6855682Smarkm // verify that option could be turned off 6955682Smarkm CommandLineOptionTest.verifySameJVMStartup( 7090926Snectar null, null, shouldPassMessage, shouldPassMessage, ExitCode.OK, 7155682Smarkm "-XX:-UseRTMDeopt"); 7255682Smarkm String defValMessage = String.format("UseRTMDeopt should have '%s'" 7355682Smarkm + "default value", 7455682Smarkm TestUseRTMDeoptOptionOnSupportedConfig.DEFAULT_VALUE); 7555682Smarkm // verify default value 7655682Smarkm CommandLineOptionTest.verifyOptionValueForSameVM("UseRTMDeopt", 7755682Smarkm TestUseRTMDeoptOptionOnSupportedConfig.DEFAULT_VALUE, 7855682Smarkm defValMessage); 79178825Sdfr // verify default value 8055682Smarkm CommandLineOptionTest.verifyOptionValueForSameVM("UseRTMDeopt", 8155682Smarkm TestUseRTMDeoptOptionOnSupportedConfig.DEFAULT_VALUE, 8290926Snectar defValMessage, 8355682Smarkm CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 8455682Smarkm "-XX:+UseRTMLocking"); 8572445Sassar // verify that option is off when UseRTMLocking is off 8655682Smarkm CommandLineOptionTest.verifyOptionValueForSameVM("UseRTMDeopt", 8755682Smarkm "false", "UseRTMDeopt should be off when UseRTMLocking is off", 8855682Smarkm CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 8955682Smarkm "-XX:-UseRTMLocking", "-XX:+UseRTMDeopt"); 9055682Smarkm // verify that option could be turned on 9155682Smarkm CommandLineOptionTest.verifyOptionValueForSameVM("UseRTMDeopt", "true", 9290926Snectar "UseRTMDeopt should be on when UseRTMLocking is on and " 9355682Smarkm + "'-XX:+UseRTMDeopt' flag set", 9455682Smarkm CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS, 9555682Smarkm "-XX:+UseRTMLocking", "-XX:+UseRTMDeopt"); 9655682Smarkm } 9755682Smarkm 9855682Smarkm public static void main(String args[]) throws Throwable { 9955682Smarkm new TestUseRTMDeoptOptionOnSupportedConfig().test(); 10055682Smarkm } 10155682Smarkm} 10255682Smarkm