Here is the incremental webrev with updates that incorporate all feedbacks:
http://cr.openjdk.java.net/~jiangli/8193213_8182731/webrev_inc.02/

- Filed JDK-8202282 (https://bugs.openjdk.java.net/browse/JDK-8202282) for 
TestCommon.makeCommandLineForAppCDS() cleanup.
- Removed case 2, 3 and 4 in SharedArchiveFile.java.
- Removed UseAppCDS.java test.
- Removed UseAppCDS in various tests.
- Changed to keep the original version of the classlist and renamed to 
classlist.raw.
- Changed check_nonempty_dir_in_shared_path_table() to report all non-empty 
directories in the shared path table entries before exiting VM.

Full webrev:
http://java.se.oracle.com:10065/mdash/jobs/jianzhou-jdk-20180426-0406-20150

Tested all modified tests locally. Rerunning hs-tier1 ~ hs-tier5 tests.

Thanks for all the suggestions!

Jiangli


> On Apr 25, 2018, at 5:24 PM, Jiangli Zhou <jiangli.z...@oracle.com> wrote:
> 
> 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
> 

Reply via email to