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.
|
||||
*
|
||||
* 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 class TestRTMAbortRatio {
|
||||
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 @@ public class TestRTMAbortRatio {
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 @@ public class TestRTMAfterNonRTMDeopt {
|
||||
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 @@ public class TestRTMAfterNonRTMDeopt {
|
||||
|
||||
@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 @@ public class TestRTMAfterNonRTMDeopt {
|
||||
synchronized(monitor) {
|
||||
a[0]++;
|
||||
if (abort) {
|
||||
Test.field = Test.UNSAFE.pageSize();
|
||||
Test.field = xabort.doAbort();
|
||||
}
|
||||
}
|
||||
} 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.
|
||||
*
|
||||
* 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;
|
||||
|
@ -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 class TestRTMDeoptOnLowAbortRatio {
|
||||
}
|
||||
|
||||
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 @@ public class TestRTMDeoptOnLowAbortRatio {
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 @@ public class TestRTMLockingThreshold {
|
||||
@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 @@ public class TestRTMLockingThreshold {
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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 class TestRTMTotalCountIncrRate {
|
||||
|
||||
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 @@ public class TestRTMTotalCountIncrRate {
|
||||
|
||||
@Override
|
||||
public String[] getMethodsToCompileNames() {
|
||||
return new String[] { getMethodWithLockName() };
|
||||
return new String[] { getMethodWithLockName(), "*.doAbort" };
|
||||
}
|
||||
|
||||
public void lock(boolean forceAbort) {
|
||||
@ -129,7 +129,7 @@ public class TestRTMTotalCountIncrRate {
|
||||
// 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++;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
*/
|
||||
|
||||
|
||||
|
@ -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 @@ class XAbortProvoker extends AbortProvoker {
|
||||
@Override
|
||||
public void forceAbort() {
|
||||
synchronized(monitor) {
|
||||
XAbortProvoker.field = UNSAFE.pageSize();
|
||||
XAbortProvoker.field = doAbort();
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +62,7 @@ class XAbortProvoker extends AbortProvoker {
|
||||
public String[] getMethodsToCompileNames() {
|
||||
return new String[] {
|
||||
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