> On Apr 26, 2018, at 12:21 PM, Calvin Cheung <calvin.che...@oracle.com> wrote: > > > > On 4/26/18, 12:00 PM, Jiangli Zhou wrote: >> Hi Calvin, >> >>> On Apr 26, 2018, at 10:10 AM, Calvin Cheung<calvin.che...@oracle.com> >>> wrote: >>> >>> >>> >>> On 4/25/18, 9:34 PM, Jiangli Zhou wrote: >>>> Here is the incremental webrev with updates that incorporate all feedbacks: >>>> http://cr.openjdk.java.net/~jiangli/8193213_8182731/webrev_inc.02/ >>> Looks good. >> Thanks! >> >>>> - Filed JDK-8202282 (https://bugs.openjdk.java.net/browse/JDK-8202282) for >>>> TestCommon.makeCommandLineForAppCDS() cleanup. >>>> - Removed case 2, 3 and 4 in SharedArchiveFile.java. >>> To address David's comment on checking the result of -Xshare:dump, you can >>> replace >>> 52 out.shouldContain("Dumping"); >>> >>> with >>> TestCommon.checkDump(out); >>> >>> checkDump() contains the following check: >>> output.shouldContain("Loading classes to share"); >>> >>> No need to generate another webrev if you make the above change. >> I removed appcds/SharedArchiveFile.java (please see my reply to David for >> details). >> >>>> - Removed UseAppCDS.java test. >>> Since you've removed the UseAppCDS.java, I think the UseAppCDS_Test.java >>> should also be removed. >>> It would involve changing the GraalWithLimitedMetaspace.java; the test >>> could just use the test-classes/Hello.java instead of UseAppCDS_Test.java. >>> This cleanup can be done later, perhaps as part of the bug you've filed. >> Could you please specify the connection between UseAppCDS.java and >> UseAppCDS_Test.java? > UseAppCDS.java dump the classlist by running the UseAppCDS_Test. > It then creates an archive based on the classlist. > It then runs the UseAppCDS_Test with the archive. > > The UseAppCDS_Test simply does the following: > public class UseAppCDS_Test { > // args are from UseAppCDS: > // args[0] = TEST_OUT > public static void main(String[] args) { > System.out.println(args[0]); > } > } > > GraalWithLimitedMetaspace.java depends on UseAppCDS_Test in a similar way but > it only performs dumping.
Ok, since GraalWithLimitedMetaspace.java still uses UseAppCDS_Test.java, it is better to keep it for now. Thanks, Jiangli > > thanks, > Calvin >> >>>> - 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 >>> I think the correct URL is: >>> http://cr.openjdk.java.net/~jiangli/8193213_8182731/webrev.02/ ? >> Yes. >> >> Thanks! >> >> Jiangli >> >>> thanks, >>> Calvin >>>> 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