RFR: 8288360: CI: ciInstanceKlass::implementor() is not consistent for well-known classes

Vladimir Ivanov vlivanov at openjdk.java.net
Tue Jun 14 17:56:55 UTC 2022


ciInstanceKlass::implementor() doesn't cache the result for well-known interfaces (is_shared() == true). Due to concurrent class loading, compilers can observe a change in reported unique implementor (in the worst case: from having no implementors to having one, then to having many) thus introducing paradoxical situations during a compilation.

What makes it very hard/impossible to trigger the bug is there's only a single well-known interface (java.util.Iterable) present as of now, which gets multiple implementors loaded early during startup.

Testing: hs-tier1 - hs-tier2

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

Commit messages:
 - 8288360: CI: ciInstanceKlass::implementor() is not consistent for well-known classes

Changes: https://git.openjdk.org/jdk19/pull/15/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk19&pr=15&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8288360
  Stats: 7 lines in 1 file changed: 2 ins; 2 del; 3 mod
  Patch: https://git.openjdk.org/jdk19/pull/15.diff
  Fetch: git fetch https://git.openjdk.org/jdk19 pull/15/head:pull/15

PR: https://git.openjdk.org/jdk19/pull/15


More information about the hotspot-compiler-dev mailing list