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

Vladimir Ivanov vlivanov at openjdk.java.net
Tue Jun 14 22:40:42 UTC 2022


On Tue, 14 Jun 2022 17:38:25 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

> 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

Thanks for the reviews, Tobias and Vladimir.

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

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


More information about the hotspot-compiler-dev mailing list