[lworld] RFR: 8374954: [lworld] compiler/ciReplay/TestInliningProtectionDomain.java fails with virtual threads
Damon Fenacci
dfenacci at openjdk.org
Fri Feb 6 14:49:59 UTC 2026
# Issue
`compiler/ciReplay/TestInliningProtectionDomain.java` fails with virtual threads because it expects method `bar()` not to be inlined (1 line in the log) but it gets inlined instead (5 lines in the log for `bar()` and the cascade of methods inside `bar()`).
# Cause
`bar()` relies on `java.lang.Thread` not being loaded but the VM seems to be loading it early on with virtual threads enabled. Apparently this happens because JTreg uses a _Virtual ThreadFactory_ to create virtual threads and this references the `Thread` class and make it resolve early. So, when C2 compiles `ProtectionDomainTestNoOtherCompilationPrivate::test()`, `Thread` is already resolved and the `bar()` inline succeeds.
# Fix
To fix this we can rely on another non-virtual-thread-sensitive `java.lang` class to be returned instead of `Thread`, e.g. `Record`.
# Testing
Tier 1-3+
-------------
Commit messages:
- JDK-8374954: copyright year
- JDK-8374954: add new line
- Merge branch 'lworld' into JDK-8374954
- JDK-8374954: [lworld] compiler/ciReplay/TestInliningProtectionDomain.java fails with virtual threads
Changes: https://git.openjdk.org/valhalla/pull/2060/files
Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2060&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8374954
Stats: 8 lines in 2 files changed: 0 ins; 1 del; 7 mod
Patch: https://git.openjdk.org/valhalla/pull/2060.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2060/head:pull/2060
PR: https://git.openjdk.org/valhalla/pull/2060
More information about the valhalla-dev
mailing list