RFR: 8336635: Add IR test for Reference.refersTo intrinsic [v3]

Tobias Hartmann thartmann at openjdk.org
Fri Jul 19 05:34:32 UTC 2024


On Thu, 18 Jul 2024 11:44:53 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> As the follow-up for [JDK-8256999](https://bugs.openjdk.org/browse/JDK-8256999), we can directly test for the (absence of) GC barriers in C2 `Reference.refersTo` intrinsic. This would be come less relevant for G1 after Late Barrier expansion lands, but would still be relevant for Shenandoah for a while. It would also be good for backports.
>> 
>> Additional testing:
>>  - [x] Test fails when I deliberately remove `AS_NO_KEEPALIVE` from the C2 intrinsic
>>  - [x] Test passes with GC explicitly passed as `TEST_VM_OPTS`
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Whitespace

The new test failed with `-ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation`


Failed IR Rules (3) of Methods (3)
----------------------------------
1) Method "public boolean compiler.c2.irTests.gc.ReferenceRefersToTests.phantom_null()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#LOAD#_", "1"}, applyIfPlatformOr={}, failOn={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(Load(B|UB|S|US|I|L|F|D|P|N).*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

2) Method "public boolean compiler.c2.irTests.gc.ReferenceRefersToTests.soft_null()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#LOAD#_", "1"}, applyIfPlatformOr={}, failOn={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(Load(B|UB|S|US|I|L|F|D|P|N).*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!

3) Method "public boolean compiler.c2.irTests.gc.ReferenceRefersToTests.soft_ref()" - [Failed IR rules: 1]:
   * @IR rule 1: "@compiler.lib.ir_framework.IR(phase={DEFAULT}, applyIfPlatformAnd={}, applyIfCPUFeatureOr={}, counts={"_#LOAD#_", "1"}, applyIfPlatformOr={}, failOn={}, applyIfPlatform={}, applyIfOr={}, applyIfCPUFeatureAnd={}, applyIf={}, applyIfCPUFeature={}, applyIfAnd={}, applyIfNot={})"
     > Phase "PrintIdeal":
       - counts: Graph contains wrong number of nodes:
         * Constraint 1: "(\\d+(\\s){2}(Load(B|UB|S|US|I|L|F|D|P|N).*)+(\\s){2}===.*)"
           - Failed comparison: [found] 0 = 1 [given]
           - No nodes matched!


Here are the logs:
[fail1.txt](https://github.com/user-attachments/files/16302499/fail1.txt)
[fail2.txt](https://github.com/user-attachments/files/16302504/fail2.txt)

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

PR Comment: https://git.openjdk.org/jdk/pull/20215#issuecomment-2238231527


More information about the hotspot-compiler-dev mailing list