Hi David, > On Apr 25, 2018, at 3:12 PM, David Holmes <david.hol...@oracle.com> wrote: > > Hi Jiangli, > > On 26/04/2018 3:39 AM, Jiangli Zhou wrote: >> Hi David, >> Thanks a lot for the review! >>> On Apr 24, 2018, at 11:17 PM, David Holmes <david.hol...@oracle.com> wrote: >>> >>> cc'ing build-dev for the makefile change >>> >>> Hi Jiangli, >>> >>> On 25/04/2018 10:53 AM, Jiangli Zhou wrote: >>>> Please review the following changes that streamline the support for >>>> application class data sharing by eliminating the requirement of using >>>> -XX:+UseAppCDS to enable the feature. The support for application class >>>> data sharing is now enabled transparently when application classes or >>>> platform classes present in the classlist or generated archive with >>>> -Xshare:dump/on/auto. >>>> RFE: https://bugs.openjdk.java.net/browse/JDK-8193213 >>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8182731 >>> >>> These issues are not publicly visible, can you change them to be so? >> Done. Thanks for noticing that! >>> >>>> webrev: http://cr.openjdk.java.net/~jiangli/8193213_8182731/webrev.00/ >>> >>> Overall this seems fine. Thanks for explaining the logic changes below - >>> much appreciated! >>> >>> One query: why was UseAppCDS not removed from the tests (or at least the >>> tests you were modifying anyway) ? They will all need updating before 12 >>> when the flag is expired. >> The usages are left as backwards compatibility check. They also serve the >> testing purpose to make sure the presence of the flag does not cause any >> unexpected behavior. Those are the main reasons why I didn’t remove the flag >> usages in this webrev. > > This sounds like you are basically testing whether obsoleting the flag has > worked correctly.
Right, that was part of the intention. > You don't need to do that through formal testing. A simple run of "java > -XX:+UseAppCDS" should show the obsoletion warning and that's that. We don't > maintain an obsolete flag test the way we do for deprecated flags. That sounds reasonable. > > So IMHO there's really no reason to keep the flag in any of the tests. As I > said they will all have to be removed when the flag is expired in 12. Ok. I’ll remove the flag from the tests. Thanks! Jiangli > > Thanks, > David > >>> >>> test/hotspot/jtreg/runtime/appcds/SharedArchiveFile.java >>> >>> Test 2 reference to UseAppCDS seems unnecessary now. >>> Test 3 is not needed as you're not using any diagnostic flag now. >>> Test 4 seems unnecessary now. >> Will do. >>> >>> test/hotspot/jtreg/runtime/appcds/TestCommon.java >>> >>> makeCommandLineForAppCDS should just be removed (yes that will cause some >>> churn in the other tests) - but this can be a follow up test cleanup. >> Ok. >>> >>> test/hotspot/jtreg/runtime/appcds/UseAppCDS.java >>> >>> This test no longer makes much sense to me. The only tests should be that >>> app classes get archived and used. It makes no sense to claim to be testing >>> -XX:+UseAppCDS when that flag is obsolete. Likewise now that it is obsolete >>> you don't need to test that -XX:-UseAppCDS has no affect. >> Sounds reasonable. I’ll remove UseAppCDS.java. There are existing tests that >> check app classes get archived and used. >> Thanks! >> Jiangli >>> >>> Thanks, >>> David >>> >>> >>>> Highlights of the changes: >>>> * UseAppCDS is obsolete in JDK 11 >>>> * Remove the +UnlockCommercialFeatures requirement when using application >>>> class data sharing in OracleJDK binary >>>> * SharedArchiveFile is a product flag for all configurations in JDK 11 >>>> * DumpLoadedClassList produces a complete classlist including all loaded >>>> library and application classes >>>> Thanks David Holmes for his guidance on CSR process. >>>> Following are the details for the VM and test changes: >>>> - Removed various ‘if (UseAppCDS)’ checks and UseAppCDS asserts. >>>> - Removed some of the CDS/AppCDS specifics from general class loading code. >>>> - Removed scattered checks for non-empty directory. Dump time non-empty >>>> directory check is done at one central place, >>>> FileMapInfo::check_nonempty_dir_in_shared_path_table() after loading all >>>> classes on the classlist. The behavior is backwards compatible: >>>> - If no app/platform classes are loaded, dump time only reports error if >>>> non-empty directory exists in -Xbootclasspath/a path >>>> - If app/platform classes are loaded, dump time reports error for any >>>> non-empty directory exists in -Xbootclasspath/a path, class path, or >>>> module path >>>> - Removed unnecessary ‘if (!DumpSharedSpaces)’ from >>>> SharedClassUtil::initialize(). The code path is only executed when >>>> UseSharedSpaces is enabled. >>>> - Return immediately in >>>> SystemDictionaryShared::find_or_load_shared_class() if the archive header >>>> indicates there is no app or platform classes in the shared archive. This >>>> reduces overhead in class loading if the shared archive only contains >>>> system classes. It also provides backwards compatibility in cases where >>>> shared application classes should be disabled. For example, when the >>>> default system class loader is replaced by user provided loader, archived >>>> application classes are inactive (not loaded from archive) at runtime >>>> without affecting the use of archived system classes. >>>> - Changed GenerateLinkOptData.gmk to filter out HelloClasslist from the >>>> default classlist in JDK image, which is generated using >>>> DumpLoadedClassList option. Thanks for David and Ioi's input on this. >>>> - Updated various cds/appcds tests to reflect the JVM changes. The use of >>>> -XX:+UseAppCDS in tests remains unchanged. >>>> - Removed -XX:+UnlockCommercialFeatures for -XX:+UseAppCDS in tests >>>> - Removed -XX:+UnlockDiagnosticVMOptions for -XX:SharedArchiveFile in >>>> tests >>>> - Updated NonBootLoaderClasses.java: ensure app/platform classes on >>>> classlist are archived without -XX:+UseAppCDS >>>> - Updated DirClasspathTest.java: reflect the change for non-empty >>>> directory handling >>>> - Updated MismatchedUseAppCDS.java: -XX:-UseAppCDS has no effect >>>> Tested with all cds and appcds tests locally with both fastdebug and >>>> release builds. Tested with hs-teir1, hs-tier2, jdk-tier1 and jdk-tier2. >>>> The hs-tier3, hs-tier4 and hs-tier4 are in progress. >>>> Thanks, >>>> Jiangli