Please review this change to WhiteBox and some tests involving G1 concurrent GCs.
Some tests currently use WhiteBox.g1StartConcMarkCycle() to trigger a concurrent GC. Many of them follow it with a loop waiting for a concurrent cycle to not be in progress. A few also preceed that call with a similar loop, since that call does nothing and returns false if a concurrent cycle is already in progress. Those tests typically want to ensure there was a concurrent cycle that was started after some setup. The failing test calls that function, asserting that it returned true, e.g. a new concurrent cycle was started. There are various problems with this, due to races with concurrent cycles started automatically, and due to possibly aborted (by full GCs) concurrent cycles, making some of these tests unreliable in some configurations. For example, the test failure associated with this bug intermittently arises when running with `-Xcomp`, triggering a concurrent cycle before the explicit request by the test, causing the explicit request to fail (because there is already one in progress), failing the assert. Waiting for there not to be an in-progress cycle before the explicit request just narrows the race window. We have a different mechanism in WhiteBox for controlling concurrent cycles, the concurrent GC breakpoint mechanism. By adding a counter specifically for such cycles, we can use GC breakpoints to ensure only the concurrent cycles the test wants are occurring, and can verify they completed successfully. So we change tests using WhiteBox.g1StartConcMarkCycle() to instead use GC breakpoints, along with the new WhiteBox.g1CompletedConcurrentMarkCycles() to avoid racing request problems and to detect aborted cycles. Since it is no longer used, WhiteBox.g1StartConcMarkCycle() is removed. The test that began this adventure (TestConcMarkCycleWB.java) is also removed, since it no longer serves any purpose, having been purely a test of that removed function. Testing: mach5 tier1-7 - running the changed tests on a variety of platforms with a variety of configurations. ------------- Commit messages: - use gc breakpoints to perform conc gc Changes: https://git.openjdk.org/jdk20/pull/71/files Webrev: https://webrevs.openjdk.org/?repo=jdk20&pr=71&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8293824 Stats: 288 lines in 24 files changed: 98 ins; 131 del; 59 mod Patch: https://git.openjdk.org/jdk20/pull/71.diff Fetch: git fetch https://git.openjdk.org/jdk20 pull/71/head:pull/71 PR: https://git.openjdk.org/jdk20/pull/71