RFR: 8325482: Test that distinct seeds produce distinct traces for compiler stress flags [v2]

Damon Fenacci dfenacci at openjdk.org
Mon Aug 4 08:32:55 UTC 2025


On Fri, 1 Aug 2025 11:30:13 GMT, Saranya Natarajan <snatarajan at openjdk.org> wrote:

>> The existing test (`compiler/debug/TestStress.java`) verifies that compiler stress options produce consistent traces when using the same seed. However, there is currently no test to ensure that different seeds result in different traces.
>> 
>> ### Solution
>> Added a test case to assess the distinctness of traces generated from different seeds. This fix addresses the fragility concern highlighted in [JDK-8325482](https://bugs.openjdk.org/browse/JDK-8325482) by verifying that traces produced using N (in this case 10) distinct seeds are all not identical.
>> 
>> ### Changes to `compiler/debug/TestStress.java`
>> While investigating this issue, I observed that in `compiler/debug/TestStress.java`, the stress options for macro expansion and macro elimination were not being triggered because there were fewer than 2 macro nodes. Note that the  `shuffle_macro_nodes()` in` compile.cpp` is only meaningful when there are more than two macro nodes. The generated traces for macro expansion and macro elimination in `TestStress.java` were empty. I have proposed changes to address this problem.
>
> Saranya Natarajan has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - changing N to 5
>  - Adding test for same seed --> same result for N = 10

Thanks for looking into this @sarannat! I just left a couple of inline comments.

test/hotspot/jtreg/compiler/debug/TestStressDistinctSeed.java line 34:

> 32: /*
> 33:  * @test
> 34:  * @key stress randomness

Is the test actually "randomised"?

test/hotspot/jtreg/compiler/debug/TestStressDistinctSeed.java line 99:

> 97:         if (args.length == 0) {
> 98:             for (int s = 0; s < 5; s++) {
> 99:                 igvntrace = igvnTrace(s);

Did you choose the 0-4 seeds to be sure that there are at least a couple of different traces? I guess it wouldn't be so easy to exclude that with random values, right?

-------------

PR Review: https://git.openjdk.org/jdk/pull/26554#pullrequestreview-3083165080
PR Review Comment: https://git.openjdk.org/jdk/pull/26554#discussion_r2250785876
PR Review Comment: https://git.openjdk.org/jdk/pull/26554#discussion_r2250752204


More information about the hotspot-compiler-dev mailing list