提交 fcc4a009 编写于 作者: F fzhinkin

8068269: RTM tests that assert on non-zero lock statistics are too strict in...

8068269: RTM tests that assert on non-zero lock statistics are too strict in RTMTotalCountIncrRate > 1 cases
Reviewed-by: kvn, iignatyev
上级 c3f089bd
/* /*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, 2015, 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,6 +34,7 @@ ...@@ -34,6 +34,7 @@
* -XX:+WhiteBoxAPI TestRTMTotalCountIncrRate * -XX:+WhiteBoxAPI TestRTMTotalCountIncrRate
*/ */
import sun.misc.Unsafe;
import java.util.List; import java.util.List;
import com.oracle.java.testlibrary.*; import com.oracle.java.testlibrary.*;
...@@ -96,14 +97,12 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest { ...@@ -96,14 +97,12 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest {
Asserts.assertEQ(lock.getTotalLocks(), Test.TOTAL_ITERATIONS, Asserts.assertEQ(lock.getTotalLocks(), Test.TOTAL_ITERATIONS,
"Total locks should be exactly the same as amount of " "Total locks should be exactly the same as amount of "
+ "iterations."); + "iterations.");
} else {
Asserts.assertGT(lock.getTotalLocks(), 0L, "RTM statistics "
+ "should contain information for at least on lock.");
} }
} }
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 = Utils.getUnsafe();
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")
...@@ -119,8 +118,17 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest { ...@@ -119,8 +118,17 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest {
return new String[] { getMethodWithLockName() }; return new String[] { getMethodWithLockName() };
} }
public void lock() { public void lock(boolean forceAbort) {
synchronized(monitor) { synchronized(monitor) {
if (forceAbort) {
// We're calling native method in order to force
// abort. It's done by explicit xabort call emitted
// in SharedRuntime::generate_native_wrapper.
// 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.addressSize();
}
Test.field++; Test.field++;
} }
} }
...@@ -139,7 +147,11 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest { ...@@ -139,7 +147,11 @@ public class TestRTMTotalCountIncrRate extends CommandLineOptionTest {
for (long i = 0L; i < Test.TOTAL_ITERATIONS; i++) { for (long i = 0L; i < Test.TOTAL_ITERATIONS; i++) {
AbortProvoker.verifyMonitorState(test.monitor, AbortProvoker.verifyMonitorState(test.monitor,
shouldBeInflated); shouldBeInflated);
test.lock(); // Force abort on first iteration to avoid rare case when
// there were no aborts and locks count was not incremented
// with RTMTotalCountIncrRate > 1 (in such case JVM won't
// print JVM locking statistics).
test.lock(i == 0);
} }
} }
} }
......
...@@ -124,9 +124,6 @@ public class TestPrintPreciseRTMLockingStatistics ...@@ -124,9 +124,6 @@ public class TestPrintPreciseRTMLockingStatistics
RTMLockingStatistics lock = statistics.get(0); RTMLockingStatistics lock = statistics.get(0);
Asserts.assertGT(lock.getTotalLocks(), 0L, "RTM locking statistics "
+ "should contain non zero total locks count");
Asserts.assertGT(lock.getTotalAborts(), 0L, Asserts.assertGT(lock.getTotalAborts(), 0L,
"RTM locking statistics should contain non zero total aborts " "RTM locking statistics should contain non zero total aborts "
+ "count"); + "count");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册