[Nestmates] RFR: 8187536: [Nestmates] Assertion failure when the compiler thread appears to trigger classloading
david.holmes at oracle.com
Fri Sep 15 05:51:44 UTC 2017
The compiler thread can hit a path that requires method resolution,
which leads to an access check, which leads to a nestmate access check,
which triggers the resolving (and possibly loading) of the nest-top
class. That hit an assert at the top of the class-loading code in
SystemDictionary::resolve_or_null. In most cases the nest-top class is
already loaded, it just hasn't been resolved into the nest-top field of
the nestmate being checked, so there is no requirement to abort when a
compiler thread takes this initial path.
This partial solution pushes the assertion deeper into the classloading
mechanics to point where it is more likely that classloading actually
may have to occur.
This general issue needs closer examination as it may be that there can
still be cases in which we actually do have to load a nest-top class,
and the compiler thread must not cause an abort in that case, but
potentially bail-out of compilation temporarily so the loading can be
done in the interpreter.
The current fix removes a roadblock to being able to build the JDK with
the new nestmate logic enabled permanently.
The run of a single test using -Xcomp is enough to validate the fix for now.
More information about the valhalla-dev