2014-04-10 20:35:28 +00:00
|
|
|
/*
|
2021-04-28 03:43:41 +00:00
|
|
|
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
|
2014-04-10 20:35:28 +00:00
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
|
|
* accompanied this code).
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License version
|
|
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*
|
|
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
|
|
* questions.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
* @bug 8031320
|
2018-09-14 19:32:22 +00:00
|
|
|
* @summary Verify UseRTMForStackLocks option processing on CPUs or OSs without
|
2014-04-10 20:35:28 +00:00
|
|
|
* rtm support and/or on VMs without rtm locking support.
|
2016-08-19 14:06:30 +00:00
|
|
|
* @library /test/lib /
|
2016-04-09 22:03:39 +00:00
|
|
|
* @modules java.base/jdk.internal.misc
|
2015-03-26 15:36:56 +00:00
|
|
|
* java.management
|
2021-04-28 03:43:41 +00:00
|
|
|
* @requires vm.flagless
|
2018-09-14 19:32:22 +00:00
|
|
|
* @requires !vm.rtm.cpu & vm.rtm.compiler
|
2020-04-27 16:15:47 +00:00
|
|
|
* @run driver compiler.rtm.cli.TestUseRTMForStackLocksOptionOnUnsupportedConfig
|
2014-04-10 20:35:28 +00:00
|
|
|
*/
|
|
|
|
|
2016-07-12 15:24:48 +00:00
|
|
|
package compiler.rtm.cli;
|
|
|
|
|
2016-08-19 14:06:30 +00:00
|
|
|
import jdk.test.lib.process.ExitCode;
|
2015-05-04 14:30:07 +00:00
|
|
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
2014-04-10 20:35:28 +00:00
|
|
|
|
|
|
|
public class TestUseRTMForStackLocksOptionOnUnsupportedConfig
|
|
|
|
extends RTMGenericCommandLineOptionTest {
|
|
|
|
private static final String DEFAULT_VALUE = "false";
|
|
|
|
|
|
|
|
private TestUseRTMForStackLocksOptionOnUnsupportedConfig() {
|
2017-06-02 00:34:01 +00:00
|
|
|
super("UseRTMForStackLocks", true, true,
|
2014-04-10 20:35:28 +00:00
|
|
|
TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE,
|
|
|
|
"true");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void runX86SupportedVMTestCases() throws Throwable {
|
2014-12-16 11:52:57 +00:00
|
|
|
String shouldFailMessage = String.format("VM option '%s' is "
|
|
|
|
+ "experimental%nJVM startup should fail without "
|
|
|
|
+ "-XX:+UnlockExperimentalVMOptions flag", optionName);
|
|
|
|
|
2014-04-10 20:35:28 +00:00
|
|
|
// verify that option is experimental
|
|
|
|
CommandLineOptionTest.verifySameJVMStartup(
|
2014-12-16 11:52:57 +00:00
|
|
|
new String[] { experimentalOptionError }, null,
|
|
|
|
shouldFailMessage, shouldFailMessage + "%nError message "
|
|
|
|
+ "should be shown", ExitCode.FAIL,
|
|
|
|
prepareOptionValue("true"));
|
2014-04-10 20:35:28 +00:00
|
|
|
|
|
|
|
CommandLineOptionTest.verifySameJVMStartup(
|
2014-12-16 11:52:57 +00:00
|
|
|
new String[]{ experimentalOptionError }, null,
|
|
|
|
shouldFailMessage, shouldFailMessage + "%nError message "
|
|
|
|
+ "should be shown", ExitCode.FAIL,
|
|
|
|
prepareOptionValue("false"));
|
2014-04-10 20:35:28 +00:00
|
|
|
|
2014-12-16 11:52:57 +00:00
|
|
|
String shouldPassMessage = String.format("VM option '%s' is "
|
|
|
|
+ " experimental%nJVM startup should pass with "
|
|
|
|
+ "-XX:+UnlockExperimentalVMOptions flag", optionName);
|
2014-04-10 20:35:28 +00:00
|
|
|
// verify that if we turn it on, then VM output will contain
|
|
|
|
// warning saying that this option could be turned on only
|
|
|
|
// when we use rtm locking
|
|
|
|
CommandLineOptionTest.verifySameJVMStartup(
|
|
|
|
new String[]{
|
|
|
|
RTMGenericCommandLineOptionTest.RTM_FOR_STACK_LOCKS_WARNING
|
2014-12-16 11:52:57 +00:00
|
|
|
}, null, shouldPassMessage, "There should be warning when try "
|
|
|
|
+ "to use rtm for stack lock, but not using rtm locking",
|
|
|
|
ExitCode.OK,
|
2014-04-10 20:35:28 +00:00
|
|
|
CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS,
|
|
|
|
prepareOptionValue("true")
|
|
|
|
);
|
|
|
|
// verify that options is turned off by default
|
|
|
|
CommandLineOptionTest.verifyOptionValueForSameVM(optionName,
|
|
|
|
TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE,
|
2014-12-16 11:52:57 +00:00
|
|
|
String.format("Default value of option '%s' should be '%s'",
|
|
|
|
optionName, DEFAULT_VALUE),
|
2014-04-10 20:35:28 +00:00
|
|
|
CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS);
|
|
|
|
// verify that it could not be turned on without rtm locking
|
|
|
|
CommandLineOptionTest.verifyOptionValueForSameVM(optionName,
|
|
|
|
TestUseRTMForStackLocksOptionOnUnsupportedConfig.DEFAULT_VALUE,
|
2014-12-16 11:52:57 +00:00
|
|
|
String.format("Value of '%s' shouldn't able to be set to "
|
|
|
|
+ "'true' without setting -XX:+UseRTMLocking flag",
|
|
|
|
optionName),
|
2014-04-10 20:35:28 +00:00
|
|
|
CommandLineOptionTest.UNLOCK_EXPERIMENTAL_VM_OPTIONS,
|
|
|
|
prepareOptionValue("true"));
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String args[]) throws Throwable {
|
2017-06-02 00:34:01 +00:00
|
|
|
new TestUseRTMForStackLocksOptionOnUnsupportedConfig().runTestCases();
|
2014-04-10 20:35:28 +00:00
|
|
|
}
|
|
|
|
}
|