OpenJDK / amber / amber
changeset 56448:82fe7292ca5c
8223660: jtreg: Decouple Unsafe from RTM tests
Reviewed-by: mdoerr, shade
line wrap: on
line diff
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAbortRatio.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAbortRatio.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,18 +33,18 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMAbortRatio + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMAbortRatio */ package compiler.rtm.locking; import compiler.testlibrary.rtm.AbortProvoker; +import compiler.testlibrary.rtm.XAbortProvoker; import compiler.testlibrary.rtm.CompilableTest; import compiler.testlibrary.rtm.RTMLockingStatistics; import compiler.testlibrary.rtm.RTMTestBase; -import jdk.internal.misc.Unsafe; import jdk.test.lib.Asserts; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.cli.CommandLineOptionTest; @@ -117,7 +117,7 @@ public static class Test implements CompilableTest { private static final int TOTAL_ITERATIONS = 10000; private static final int WARMUP_ITERATIONS = 1000; - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + private final XAbortProvoker xabort = new XAbortProvoker(); private final Object monitor = new Object(); // Following field have to be static in order to avoid escape analysis. @SuppressWarnings("UnsuedDeclaration") @@ -130,13 +130,13 @@ @Override public String[] getMethodsToCompileNames() { - return new String[] { getMethodWithLockName(), "*.pageSize" }; + return new String[] { getMethodWithLockName(), "*.doAbort" }; } public void lock(boolean abort) { synchronized(monitor) { if (abort) { - Test.UNSAFE.pageSize(); + xabort.doAbort(); } } }
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAbortThreshold.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAbortThreshold.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMAbortThreshold + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMAbortThreshold */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAfterNonRTMDeopt.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMAfterNonRTMDeopt.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -35,18 +35,18 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMAfterNonRTMDeopt + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMAfterNonRTMDeopt */ package compiler.rtm.locking; import compiler.testlibrary.rtm.AbortProvoker; +import compiler.testlibrary.rtm.XAbortProvoker; import compiler.testlibrary.rtm.CompilableTest; import compiler.testlibrary.rtm.RTMLockingStatistics; import compiler.testlibrary.rtm.RTMTestBase; -import jdk.internal.misc.Unsafe; import jdk.test.lib.Asserts; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.cli.CommandLineOptionTest; @@ -149,7 +149,7 @@ private static int field = 0; private static final int ITERATIONS = 10000; private static final int RANGE_CHECK_AT = ITERATIONS / 2; - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + private final XAbortProvoker xabort = new XAbortProvoker(); private final Object monitor = new Object(); @Override @@ -159,7 +159,8 @@ @Override public String[] getMethodsToCompileNames() { - return new String[] { getMethodWithLockName() }; + return new String[] { getMethodWithLockName(), + XAbortProvoker.class.getName() + "::doAbort()" }; } public void forceAbort(int a[], boolean abort) { @@ -167,7 +168,7 @@ synchronized(monitor) { a[0]++; if (abort) { - Test.field = Test.UNSAFE.pageSize(); + Test.field = xabort.doAbort(); } } } catch (Throwable t) {
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMDeoptOnHighAbortRatio.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMDeoptOnHighAbortRatio.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMDeoptOnHighAbortRatio + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMDeoptOnHighAbortRatio */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMDeoptOnLowAbortRatio.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMDeoptOnLowAbortRatio.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -32,18 +32,18 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMDeoptOnLowAbortRatio + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMDeoptOnLowAbortRatio */ package compiler.rtm.locking; import compiler.testlibrary.rtm.AbortProvoker; +import compiler.testlibrary.rtm.XAbortProvoker; import compiler.testlibrary.rtm.CompilableTest; import compiler.testlibrary.rtm.RTMLockingStatistics; import compiler.testlibrary.rtm.RTMTestBase; -import jdk.internal.misc.Unsafe; import jdk.test.lib.Asserts; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.cli.CommandLineOptionTest; @@ -124,7 +124,7 @@ } public static class Test implements CompilableTest { - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + private final XAbortProvoker xabort = new XAbortProvoker(); private final Object monitor = new Object(); @Override @@ -134,13 +134,14 @@ @Override public String[] getMethodsToCompileNames() { - return new String[] { getMethodWithLockName() }; + return new String[] { getMethodWithLockName(), + XAbortProvoker.class.getName() + "::doAbort" }; } public void forceAbort(boolean abort) { synchronized(monitor) { if (abort) { - Test.UNSAFE.pageSize(); + xabort.doAbort(); } } }
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMLockingCalculationDelay.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMLockingCalculationDelay.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMLockingCalculationDelay + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMLockingCalculationDelay */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMLockingThreshold.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMLockingThreshold.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,18 +33,18 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMLockingThreshold + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMLockingThreshold */ package compiler.rtm.locking; import compiler.testlibrary.rtm.AbortProvoker; +import compiler.testlibrary.rtm.XAbortProvoker; import compiler.testlibrary.rtm.CompilableTest; import compiler.testlibrary.rtm.RTMLockingStatistics; import compiler.testlibrary.rtm.RTMTestBase; -import jdk.internal.misc.Unsafe; import jdk.test.lib.Asserts; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.cli.CommandLineOptionTest; @@ -134,10 +134,9 @@ @SuppressWarnings("UnsuedDeclaration") private static int field = 0; private static final int TOTAL_ITERATIONS = 10000; - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + private final XAbortProvoker xabort = new XAbortProvoker(); private final Object monitor = new Object(); - @Override public String getMethodWithLockName() { return this.getClass().getName() + "::lock"; @@ -145,13 +144,14 @@ @Override public String[] getMethodsToCompileNames() { - return new String[] { getMethodWithLockName() }; + return new String[] { getMethodWithLockName(), + XAbortProvoker.class.getName() + "::doAbort" }; } public void lock(boolean abort) { synchronized(monitor) { if (abort) { - Test.field += Test.UNSAFE.pageSize(); + Test.field += xabort.doAbort(); } } }
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestRTMTotalCountIncrRate.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestRTMTotalCountIncrRate.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,18 +33,18 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestRTMTotalCountIncrRate + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestRTMTotalCountIncrRate */ package compiler.rtm.locking; import compiler.testlibrary.rtm.AbortProvoker; +import compiler.testlibrary.rtm.XAbortProvoker; import compiler.testlibrary.rtm.CompilableTest; import compiler.testlibrary.rtm.RTMLockingStatistics; import compiler.testlibrary.rtm.RTMTestBase; -import jdk.internal.misc.Unsafe; import jdk.test.lib.Asserts; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.cli.CommandLineOptionTest; @@ -104,7 +104,7 @@ public static class Test implements CompilableTest { private static final long TOTAL_ITERATIONS = 10000L; - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); + private final XAbortProvoker xabort = new XAbortProvoker(); private final Object monitor = new Object(); // Following field have to be static in order to avoid escape analysis. @SuppressWarnings("UnsuedDeclaration") @@ -117,7 +117,7 @@ @Override public String[] getMethodsToCompileNames() { - return new String[] { getMethodWithLockName() }; + return new String[] { getMethodWithLockName(), "*.doAbort" }; } public void lock(boolean forceAbort) { @@ -129,7 +129,7 @@ // If an actual JNI call will be replaced by // intrinsic - we'll be in trouble, since xabort // will be no longer called and test may fail. - UNSAFE.pageSize(); + xabort.doAbort(); } Test.field++; }
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMAfterLockInflation.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMAfterLockInflation.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestUseRTMAfterLockInflation + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestUseRTMAfterLockInflation */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMDeopt.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMDeopt.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestUseRTMDeopt + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestUseRTMDeopt */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMForInflatedLocks.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMForInflatedLocks.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -32,8 +32,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI compiler.rtm.locking.TestUseRTMForInflatedLocks + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestUseRTMForInflatedLocks */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMForStackLocks.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/locking/TestUseRTMForStackLocks.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -32,9 +32,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.locking.TestUseRTMForStackLocks + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.locking.TestUseRTMForStackLocks */ package compiler.rtm.locking;
--- a/test/hotspot/jtreg/compiler/rtm/method_options/TestNoRTMLockElidingOption.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/method_options/TestNoRTMLockElidingOption.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -33,9 +33,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.method_options.TestNoRTMLockElidingOption + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.method_options.TestNoRTMLockElidingOption */ package compiler.rtm.method_options;
--- a/test/hotspot/jtreg/compiler/rtm/method_options/TestUseRTMLockElidingOption.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/method_options/TestUseRTMLockElidingOption.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -34,9 +34,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.method_options.TestUseRTMLockElidingOption + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.method_options.TestUseRTMLockElidingOption */ package compiler.rtm.method_options;
--- a/test/hotspot/jtreg/compiler/rtm/print/TestPrintPreciseRTMLockingStatistics.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/rtm/print/TestPrintPreciseRTMLockingStatistics.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -35,9 +35,9 @@ * @build sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox * sun.hotspot.WhiteBox$WhiteBoxPermission - * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions - * -XX:+WhiteBoxAPI - * compiler.rtm.print.TestPrintPreciseRTMLockingStatistics + * @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions + * -XX:+WhiteBoxAPI + * compiler.rtm.print.TestPrintPreciseRTMLockingStatistics */
--- a/test/hotspot/jtreg/compiler/testlibrary/rtm/XAbortProvoker.java Wed May 29 07:48:27 2019 -0700 +++ b/test/hotspot/jtreg/compiler/testlibrary/rtm/XAbortProvoker.java Wed May 22 12:17:26 2019 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2019, 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 @@ -23,17 +23,25 @@ package compiler.testlibrary.rtm; -import jdk.internal.misc.Unsafe; - /** * Current RTM locking implementation force transaction abort * before native method call by explicit xabort(0) call. */ -class XAbortProvoker extends AbortProvoker { +public class XAbortProvoker extends AbortProvoker { + + static { + try { + System.loadLibrary("XAbortProvoker"); + } catch (UnsatisfiedLinkError e) { + System.out.println("Could not load native library: " + e); + } + } + + public native int doAbort(); + // Following field have to be static in order to avoid escape analysis. @SuppressWarnings("UnsuedDeclaration") private static int field = 0; - private static final Unsafe UNSAFE = Unsafe.getUnsafe(); public XAbortProvoker() { this(new Object()); @@ -46,7 +54,7 @@ @Override public void forceAbort() { synchronized(monitor) { - XAbortProvoker.field = UNSAFE.pageSize(); + XAbortProvoker.field = doAbort(); } } @@ -54,7 +62,7 @@ public String[] getMethodsToCompileNames() { return new String[] { getMethodWithLockName(), - Unsafe.class.getName() + "::pageSize" + XAbortProvoker.class.getName() + "::doAbort" }; } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/hotspot/jtreg/compiler/testlibrary/rtm/libXAbortProvoker.c Wed May 22 12:17:26 2019 -0400 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019, 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. + * + * 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. + */ + +#include "jni.h" + +/** + * Simply calling a JNI method from the JVM will abort any active transaction, + * so doAbort() does nothing special and only returns after being called. + * The transaction abortion happens right before the JNI method is called. + */ +int JNICALL +Java_compiler_testlibrary_rtm_XAbortProvoker_doAbort(JNIEnv *env, jobject o) { + return 0; +}