RFR (M): JDK-8159262: Walking PackageEntry Export and ModuleEntry Reads Must Occur Only When Neccessary And Wait Until ClassLoader's Aliveness Determined

Lois Foltan lois.foltan at oracle.com
Tue Jun 21 17:59:05 UTC 2016


Hello,

Please review the following fix:

Webrev:
     http://cr.openjdk.java.net/~lfoltan/bug_jdk8159262/webrev/

Bug: Walking PackageEntry Export and ModuleEntry Reads Must Occur Only 
When Neccessary And Wait Until ClassLoader's Aliveness Determined
     https://bugs.openjdk.java.net/browse/JDK-8159262

Summary:
In ClassLoaderDataGraph::do_unloading(), the decision to walk each 
ClassLoader's PackageEntry exports and ModuleEntry's reads list was 
occurring too soon, before the aliveness of all class loaders was 
determined.  The walk has been moved to immediately after and only alive 
ClassLoader's PackageEntry and ModuleEntry lists are walked.

The other piece to this fix is that the lists themselves were being 
unnecessarily walked if only modules on any given list were either:
     1. defined to the same class loader as either the package being 
exported or the module that a read edge was being
         established from.  Thus both modules in this equation have the 
same life cycle.
     2. or defined to one of the three builtin class loaders (boot, 
application or platform) which never die

Test:
- java/io, java/lang/, java/util, all Hotspot jtreg tests, JCK vm & lang
- full hotspot nightly RBT run in progress


More information about the hotspot-dev mailing list