RFR: 8285394: Compiler blackholes can be eliminated due to stale ciMethod::intrinsic_id()
Aleksey Shipilev
shade at openjdk.java.net
Thu Apr 21 17:12:06 UTC 2022
This is seen in some tests: if blackhole method is deemed hot for inlining, then at least C2 would inline it without looking back at its intrinsic status. Which silently breaks blackholes.
The cause is that there are *two* places where intrinsic ID is recorded. Current blackhole code only writes down blackhole intrinsic ID in `Method::intrinsic_id()`, but we should also set it in `ciMethod::intrinsic_id()`, which is used from C2 inlining code. `ciMethod` is normally populated from `Method::intrinsic_id()`, but it happens too early, before setting up blackhole intrinsic.
Additional testing:
- [x] Linux x86_64 {fastdebug,release}, wew test fails before the patch, passes with it
- [x] Linux x86_64 {fastdebug,release} `compiler/blackhole`
- [ ] Linux x86_64 fastdebug, sanity microbenchmark corpus run with the patch
-------------
Commit messages:
- Fix
Changes: https://git.openjdk.java.net/jdk/pull/8344/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8344&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8285394
Stats: 93 lines in 2 files changed: 90 ins; 3 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/8344.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8344/head:pull/8344
PR: https://git.openjdk.java.net/jdk/pull/8344
More information about the hotspot-compiler-dev
mailing list