RFR: 8301584: Generational ZGC: Add barrier elision tests [v2]

Roberto Castañeda Lozano rcastanedalo at openjdk.org
Wed Feb 8 12:37:16 UTC 2023


On Mon, 6 Feb 2023 09:42:43 GMT, Axel Boldt-Christmas <aboldtch at openjdk.org> wrote:

>> Roberto Castañeda Lozano has updated the pull request incrementally with two additional commits since the last revision:
>> 
>>  - Add missing include
>>  - Fix include order
>
> test/hotspot/jtreg/compiler/gcbarriers/TestZGCBarrierElision.java line 329:
> 
>> 327: 
>> 328:     @Test
>> 329:     // The second atomic access barrier should be elided, but is not.
> 
> Is it worth explicitly documenting the behaviour and the wanted/expected behaviour in annotations?
> E.g.
> 
>     @Test
>     @IR(counts = { IRNode.Z_GET_AND_SET_P_WITH_BARRIER_FLAG, REMAINING, "2" }, phase = CompilePhase.FINAL_CODE)
>     @IR(counts = { IRNode.Z_GET_AND_SET_P_WITH_BARRIER_FLAG, ELIDED, "0" }, phase = CompilePhase.FINAL_CODE)
>     // The second atomic access barrier should be elided, but is not.
>     // @IR(counts = { IRNode.Z_GET_AND_SET_P_WITH_BARRIER_FLAG, REMAINING, "1" }, phase = CompilePhase.FINAL_CODE)
>     // @IR(counts = { IRNode.Z_GET_AND_SET_P_WITH_BARRIER_FLAG, ELIDED, "1" }, phase = CompilePhase.FINAL_CODE)
>     static void testAtomicThenAtomic(Outer o, Inner i) {
>         field1VarHandle.getAndSet​(o, i);
>         field1VarHandle.getAndSet​(o, i);
>     }
> 
> 
> Same goes for all the other test cases.

IR checks in compiler tests are commonly interpreted as documentation for expected behavior only. I fear adding IR checks for the current (unexpected) behavior would risk misleading inattentive readers, so I would rather leave it as-is if you don't mind.

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

PR: https://git.openjdk.org/zgc/pull/12


More information about the zgc-dev mailing list