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