RFR: 8282218: C1: Missing side effects of dynamic class loading during constant linkage
Vladimir Ivanov
vlivanov at openjdk.java.net
Thu Feb 24 13:59:37 UTC 2022
(The problem is similar to JDK-8282194, but with class loading this time.)
C1 handles unresolved constants by performing constant resolution at runtime and then putting the constant value into the generated code by patching it. But it treats the not-yet-resolved value as a pure constant without any side effects.
It's not the case for constants which trigger class loading using custom class loaders. (All non-String constants do that.)
There are no guarantees that there are no side effects during class loading, so C1 has to be conservative.
Proposed fix kills memory after accessing not-yet-loaded constant in the context of any non-trusted class loader.
Testing: hs-tier1 - hs-tier4
-------------
Commit messages:
- 8282218: C1: Missing side effects of dynamic class loading during constant linkage
Changes: https://git.openjdk.java.net/jdk/pull/7612/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7612&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8282218
Stats: 128 lines in 5 files changed: 126 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/7612.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/7612/head:pull/7612
PR: https://git.openjdk.java.net/jdk/pull/7612
More information about the hotspot-compiler-dev
mailing list