8223660: jtreg: Decouple Unsafe from RTM tests
Reviewed-by: mdoerr, shade
This commit is contained in:
parent
cee4dcf04f
commit
88cef8d961
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,18 +33,18 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMAbortRatio
|
* compiler.rtm.locking.TestRTMAbortRatio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
|
||||||
import compiler.testlibrary.rtm.AbortProvoker;
|
import compiler.testlibrary.rtm.AbortProvoker;
|
||||||
|
import compiler.testlibrary.rtm.XAbortProvoker;
|
||||||
import compiler.testlibrary.rtm.CompilableTest;
|
import compiler.testlibrary.rtm.CompilableTest;
|
||||||
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
||||||
import compiler.testlibrary.rtm.RTMTestBase;
|
import compiler.testlibrary.rtm.RTMTestBase;
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
import jdk.test.lib.Asserts;
|
import jdk.test.lib.Asserts;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.cli.CommandLineOptionTest;
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
||||||
@ -117,7 +117,7 @@ public class TestRTMAbortRatio {
|
|||||||
public static class Test implements CompilableTest {
|
public static class Test implements CompilableTest {
|
||||||
private static final int TOTAL_ITERATIONS = 10000;
|
private static final int TOTAL_ITERATIONS = 10000;
|
||||||
private static final int WARMUP_ITERATIONS = 1000;
|
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();
|
private final Object monitor = new Object();
|
||||||
// Following field have to be static in order to avoid escape analysis.
|
// Following field have to be static in order to avoid escape analysis.
|
||||||
@SuppressWarnings("UnsuedDeclaration")
|
@SuppressWarnings("UnsuedDeclaration")
|
||||||
@ -130,13 +130,13 @@ public class TestRTMAbortRatio {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] { getMethodWithLockName(), "*.pageSize" };
|
return new String[] { getMethodWithLockName(), "*.doAbort" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void lock(boolean abort) {
|
public void lock(boolean abort) {
|
||||||
synchronized(monitor) {
|
synchronized(monitor) {
|
||||||
if (abort) {
|
if (abort) {
|
||||||
Test.UNSAFE.pageSize();
|
xabort.doAbort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMAbortThreshold
|
* compiler.rtm.locking.TestRTMAbortThreshold
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -35,18 +35,18 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMAfterNonRTMDeopt
|
* compiler.rtm.locking.TestRTMAfterNonRTMDeopt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
|
||||||
import compiler.testlibrary.rtm.AbortProvoker;
|
import compiler.testlibrary.rtm.AbortProvoker;
|
||||||
|
import compiler.testlibrary.rtm.XAbortProvoker;
|
||||||
import compiler.testlibrary.rtm.CompilableTest;
|
import compiler.testlibrary.rtm.CompilableTest;
|
||||||
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
||||||
import compiler.testlibrary.rtm.RTMTestBase;
|
import compiler.testlibrary.rtm.RTMTestBase;
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
import jdk.test.lib.Asserts;
|
import jdk.test.lib.Asserts;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.cli.CommandLineOptionTest;
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
||||||
@ -149,7 +149,7 @@ public class TestRTMAfterNonRTMDeopt {
|
|||||||
private static int field = 0;
|
private static int field = 0;
|
||||||
private static final int ITERATIONS = 10000;
|
private static final int ITERATIONS = 10000;
|
||||||
private static final int RANGE_CHECK_AT = ITERATIONS / 2;
|
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();
|
private final Object monitor = new Object();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -159,7 +159,8 @@ public class TestRTMAfterNonRTMDeopt {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] { getMethodWithLockName() };
|
return new String[] { getMethodWithLockName(),
|
||||||
|
XAbortProvoker.class.getName() + "::doAbort()" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceAbort(int a[], boolean abort) {
|
public void forceAbort(int a[], boolean abort) {
|
||||||
@ -167,7 +168,7 @@ public class TestRTMAfterNonRTMDeopt {
|
|||||||
synchronized(monitor) {
|
synchronized(monitor) {
|
||||||
a[0]++;
|
a[0]++;
|
||||||
if (abort) {
|
if (abort) {
|
||||||
Test.field = Test.UNSAFE.pageSize();
|
Test.field = xabort.doAbort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMDeoptOnHighAbortRatio
|
* compiler.rtm.locking.TestRTMDeoptOnHighAbortRatio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,18 +32,18 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMDeoptOnLowAbortRatio
|
* compiler.rtm.locking.TestRTMDeoptOnLowAbortRatio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
|
||||||
import compiler.testlibrary.rtm.AbortProvoker;
|
import compiler.testlibrary.rtm.AbortProvoker;
|
||||||
|
import compiler.testlibrary.rtm.XAbortProvoker;
|
||||||
import compiler.testlibrary.rtm.CompilableTest;
|
import compiler.testlibrary.rtm.CompilableTest;
|
||||||
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
||||||
import compiler.testlibrary.rtm.RTMTestBase;
|
import compiler.testlibrary.rtm.RTMTestBase;
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
import jdk.test.lib.Asserts;
|
import jdk.test.lib.Asserts;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.cli.CommandLineOptionTest;
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
||||||
@ -124,7 +124,7 @@ public class TestRTMDeoptOnLowAbortRatio {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class Test implements CompilableTest {
|
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();
|
private final Object monitor = new Object();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -134,13 +134,14 @@ public class TestRTMDeoptOnLowAbortRatio {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] { getMethodWithLockName() };
|
return new String[] { getMethodWithLockName(),
|
||||||
|
XAbortProvoker.class.getName() + "::doAbort" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceAbort(boolean abort) {
|
public void forceAbort(boolean abort) {
|
||||||
synchronized(monitor) {
|
synchronized(monitor) {
|
||||||
if (abort) {
|
if (abort) {
|
||||||
Test.UNSAFE.pageSize();
|
xabort.doAbort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMLockingCalculationDelay
|
* compiler.rtm.locking.TestRTMLockingCalculationDelay
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,18 +33,18 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMLockingThreshold
|
* compiler.rtm.locking.TestRTMLockingThreshold
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
|
||||||
import compiler.testlibrary.rtm.AbortProvoker;
|
import compiler.testlibrary.rtm.AbortProvoker;
|
||||||
|
import compiler.testlibrary.rtm.XAbortProvoker;
|
||||||
import compiler.testlibrary.rtm.CompilableTest;
|
import compiler.testlibrary.rtm.CompilableTest;
|
||||||
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
||||||
import compiler.testlibrary.rtm.RTMTestBase;
|
import compiler.testlibrary.rtm.RTMTestBase;
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
import jdk.test.lib.Asserts;
|
import jdk.test.lib.Asserts;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.cli.CommandLineOptionTest;
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
||||||
@ -134,10 +134,9 @@ public class TestRTMLockingThreshold {
|
|||||||
@SuppressWarnings("UnsuedDeclaration")
|
@SuppressWarnings("UnsuedDeclaration")
|
||||||
private static int field = 0;
|
private static int field = 0;
|
||||||
private static final int TOTAL_ITERATIONS = 10000;
|
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();
|
private final Object monitor = new Object();
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMethodWithLockName() {
|
public String getMethodWithLockName() {
|
||||||
return this.getClass().getName() + "::lock";
|
return this.getClass().getName() + "::lock";
|
||||||
@ -145,13 +144,14 @@ public class TestRTMLockingThreshold {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] { getMethodWithLockName() };
|
return new String[] { getMethodWithLockName(),
|
||||||
|
XAbortProvoker.class.getName() + "::doAbort" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void lock(boolean abort) {
|
public void lock(boolean abort) {
|
||||||
synchronized(monitor) {
|
synchronized(monitor) {
|
||||||
if (abort) {
|
if (abort) {
|
||||||
Test.field += Test.UNSAFE.pageSize();
|
Test.field += xabort.doAbort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,18 +33,18 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestRTMTotalCountIncrRate
|
* compiler.rtm.locking.TestRTMTotalCountIncrRate
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
|
||||||
import compiler.testlibrary.rtm.AbortProvoker;
|
import compiler.testlibrary.rtm.AbortProvoker;
|
||||||
|
import compiler.testlibrary.rtm.XAbortProvoker;
|
||||||
import compiler.testlibrary.rtm.CompilableTest;
|
import compiler.testlibrary.rtm.CompilableTest;
|
||||||
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
import compiler.testlibrary.rtm.RTMLockingStatistics;
|
||||||
import compiler.testlibrary.rtm.RTMTestBase;
|
import compiler.testlibrary.rtm.RTMTestBase;
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
import jdk.test.lib.Asserts;
|
import jdk.test.lib.Asserts;
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
import jdk.test.lib.process.OutputAnalyzer;
|
||||||
import jdk.test.lib.cli.CommandLineOptionTest;
|
import jdk.test.lib.cli.CommandLineOptionTest;
|
||||||
@ -104,7 +104,7 @@ public class TestRTMTotalCountIncrRate {
|
|||||||
|
|
||||||
public static class Test implements CompilableTest {
|
public static class Test implements CompilableTest {
|
||||||
private static final long TOTAL_ITERATIONS = 10000L;
|
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();
|
private final Object monitor = new Object();
|
||||||
// Following field have to be static in order to avoid escape analysis.
|
// Following field have to be static in order to avoid escape analysis.
|
||||||
@SuppressWarnings("UnsuedDeclaration")
|
@SuppressWarnings("UnsuedDeclaration")
|
||||||
@ -117,7 +117,7 @@ public class TestRTMTotalCountIncrRate {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] { getMethodWithLockName() };
|
return new String[] { getMethodWithLockName(), "*.doAbort" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public void lock(boolean forceAbort) {
|
public void lock(boolean forceAbort) {
|
||||||
@ -129,7 +129,7 @@ public class TestRTMTotalCountIncrRate {
|
|||||||
// If an actual JNI call will be replaced by
|
// If an actual JNI call will be replaced by
|
||||||
// intrinsic - we'll be in trouble, since xabort
|
// intrinsic - we'll be in trouble, since xabort
|
||||||
// will be no longer called and test may fail.
|
// will be no longer called and test may fail.
|
||||||
UNSAFE.pageSize();
|
xabort.doAbort();
|
||||||
}
|
}
|
||||||
Test.field++;
|
Test.field++;
|
||||||
}
|
}
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestUseRTMAfterLockInflation
|
* compiler.rtm.locking.TestUseRTMAfterLockInflation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestUseRTMDeopt
|
* compiler.rtm.locking.TestUseRTMDeopt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,8 +32,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI compiler.rtm.locking.TestUseRTMForInflatedLocks
|
* -XX:+WhiteBoxAPI
|
||||||
|
* compiler.rtm.locking.TestUseRTMForInflatedLocks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -32,9 +32,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.locking.TestUseRTMForStackLocks
|
* compiler.rtm.locking.TestUseRTMForStackLocks
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.locking;
|
package compiler.rtm.locking;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -33,9 +33,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.method_options.TestNoRTMLockElidingOption
|
* compiler.rtm.method_options.TestNoRTMLockElidingOption
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.method_options;
|
package compiler.rtm.method_options;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -34,9 +34,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.method_options.TestUseRTMLockElidingOption
|
* compiler.rtm.method_options.TestUseRTMLockElidingOption
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package compiler.rtm.method_options;
|
package compiler.rtm.method_options;
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -35,9 +35,9 @@
|
|||||||
* @build sun.hotspot.WhiteBox
|
* @build sun.hotspot.WhiteBox
|
||||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||||
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
* sun.hotspot.WhiteBox$WhiteBoxPermission
|
||||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
* @run main/othervm/native -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions
|
||||||
* -XX:+WhiteBoxAPI
|
* -XX:+WhiteBoxAPI
|
||||||
* compiler.rtm.print.TestPrintPreciseRTMLockingStatistics
|
* compiler.rtm.print.TestPrintPreciseRTMLockingStatistics
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -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.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -23,17 +23,25 @@
|
|||||||
|
|
||||||
package compiler.testlibrary.rtm;
|
package compiler.testlibrary.rtm;
|
||||||
|
|
||||||
import jdk.internal.misc.Unsafe;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Current RTM locking implementation force transaction abort
|
* Current RTM locking implementation force transaction abort
|
||||||
* before native method call by explicit xabort(0) call.
|
* 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.
|
// Following field have to be static in order to avoid escape analysis.
|
||||||
@SuppressWarnings("UnsuedDeclaration")
|
@SuppressWarnings("UnsuedDeclaration")
|
||||||
private static int field = 0;
|
private static int field = 0;
|
||||||
private static final Unsafe UNSAFE = Unsafe.getUnsafe();
|
|
||||||
|
|
||||||
public XAbortProvoker() {
|
public XAbortProvoker() {
|
||||||
this(new Object());
|
this(new Object());
|
||||||
@ -46,7 +54,7 @@ class XAbortProvoker extends AbortProvoker {
|
|||||||
@Override
|
@Override
|
||||||
public void forceAbort() {
|
public void forceAbort() {
|
||||||
synchronized(monitor) {
|
synchronized(monitor) {
|
||||||
XAbortProvoker.field = UNSAFE.pageSize();
|
XAbortProvoker.field = doAbort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +62,7 @@ class XAbortProvoker extends AbortProvoker {
|
|||||||
public String[] getMethodsToCompileNames() {
|
public String[] getMethodsToCompileNames() {
|
||||||
return new String[] {
|
return new String[] {
|
||||||
getMethodWithLockName(),
|
getMethodWithLockName(),
|
||||||
Unsafe.class.getName() + "::pageSize"
|
XAbortProvoker.class.getName() + "::doAbort"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user