Hi Claes,
This is awesome. Like the change of encapsulating all the individual
fields into the single instance of 'archivedModuleGraph'! All the
improvements look great from subgraph archiving point of view. I'll
leave the module part to Alan, Mandy and others.
Thanks!
Jiangli
On 12/5/18 7:13 AM, Claes Redestad wrote:
Hi,
a few improvements to how we archive module graph information:
- archive an instance of ArchiveModuleGraph rather than individual fields
- archiving the exportedPackagesToOpen and concealedPackagesToOpen
maps improve sharing and substantially reduce bytecode executed (~30k)
- archiving the remaining flags in the ArchivedModuleGraph means we no
longer need to archive SystemModules
- this means we no longer load jdk.internal.module.SystemModules and
jdk.internal.module.SystemModules$default at runtime
- for robustness ensure we either resolve either everything or nothing
from the archive (there are some overlapping safeguards here, e.g.,
CDS is disabled when you run with --limit-modules, but helps to be
explicit)
Bugs: https://bugs.openjdk.java.net/browse/JDK-8214858
Webrev: http://cr.openjdk.java.net/~redestad/8214858/jdk.00/
Testing: tier1-3, locally tested all module and CDS tests
Startup tests verify a small speedup on my test setups (around -0.5ms
on average)
Thanks!
/Claes