RFR: 8193213 & 8182731: Make the UseAppCDS option obsolete
Ioi Lam
ioi.lam at oracle.com
Wed Apr 25 15:36:55 UTC 2018
Hi Jiangli,
The code changes look good to me. I agree with David's comments about
the test cases.
Thanks
- Ioi
On 4/24/18 11:17 PM, David Holmes 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?
>
>> 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.
>
> 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.
>
> 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.
>
> 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.
>
> 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
>>
More information about the build-dev
mailing list