RFR: JDK-8232069: Enable CDS even when UseCompressedClassPointers and/or UseCompressedOops are false
Yumin Qi
yumin.qi at oracle.com
Fri Feb 7 00:58:21 UTC 2020
HI, Calvin
Thanks for the review. Will update accordingly and test again.
Yumin
On 2/6/20 4:06 PM, Calvin Cheung wrote:
> Hi Yumin,
>
> Changes look good overall. I have two comments:
>
> 1. Since you've added 2 fields in the archive header. I think the
> CURRENT_CDS_ARCHIVE_VERSION should be updated in share/include/cds.h.
>
> 2. In the new test TestCombinedCompressedFlags.java:
> Instead of:
> 171 System.out.println("Platform is not 64 bit,
> skipped");
> it is better to throw a SkippedException like the following:
> throw new SkippedException("Platform is not 64 bit, skipped");
> You would need to 'import jtreg.SkippedException'.
>
> The following import statements seem unnecessary:
>
> 37 import jdk.test.lib.Asserts;
> 41 import jdk.test.lib.cds.CDSTestUtils;
> 42 import jdk.test.lib.process.ProcessTools;
>
> Do you need the following @module?
> 33 * java.management
>
> thanks,
> Calvin
>
> On 2/6/20 2:07 PM, Yumin Qi wrote:
>> Hi, Ioi and all
>>
>>
>> Forget to mention tests: hs-tier1 - 4 passed.
>>
>>
>> Thanks
>>
>> Yumin
>>
>> On 2/6/20 2:04 PM, Yumin Qi wrote:
>>> Hi, Ioi
>>>
>>>
>>> Thanks for the review. See answers embedded.
>>>
>>> New URL: http://cr.openjdk.java.net/~minqi/8232069/webrev-01/
>>>
>>> On 2/5/20 10:34 AM, Ioi Lam wrote:
>>>> Hi Yumin,
>>>>
>>>>
>>>> Looks good. Some nitpicks on the tests:
>>>>
>>>> CommandLineFlagComboNegative.java: the following line is not needed.
>>>>
>>>> import jdk.test.lib.cds.CDSTestUtils.Result;
>>>>
>>> Removed.
>>>>
>>>> TestCombinedCompressedFlags.java: DUMP_NORMAL_MSG doesn't seem to
>>>> be used by the test.
>>>>
>>> Removed.
>>>
>>> Also changed to use TestCommon.dump/TestCommon.exec which better to
>>> check dum/run results.
>>>
>>>> DifferentHeapSizes.java: after your change,
>>>> CDSTestUtils.MSG_COMPRESSION_MUST_BE_USED is no longer used
>>>> anywhere in the tests. Also, This message is no longer printed by
>>>> the VM. I think the CDSTestUtils.MSG_COMPRESSION_MUST_BE_USED field
>>>> should be removed.
>>>>
>>>>
>>> Removed.
>>>> IncompatibleOptions.java: COOPS_DUMP_WARNING can be removed.
>>>>
>>> Removed.
>>>> The check_shared parameter for testExec() should be removed. It's
>>>> currently used only when expectedToFail == false. However, in all
>>>> the cases where expectedToFail == false, check_shared is always true.
>>>>
>>>>
>>> Removed.
>>>
>>>> Also, in filemap.cpp, before checking "compressed_oops() !=
>>>> UseCompressedOops ...", I think it will be good to add a log to
>>>> print out the expected compressed mode. That way if the user gets
>>>> an error, they can run with -Xlog:cds to find out exactly what the
>>>> reason is. E.g.
>>>>
>>>> log_info(cds)("Archive was created with UseCompressedOops = %d,
>>>> UseCompressedClassPointers = %d",
>>>> compressed_oops(),
>>>> compressed_class_pointers());
>>>> if (compressed_oops() != UseCompressedOops ...
>>>>
>>> Added.
>>>
>>>
>>> Thanks
>>>
>>> Yumin
>>>
>>>>
>>>> On 2/4/20 6:01 PM, Yumin Qi wrote:
>>>>> Hi,
>>>>>
>>>>> Please review fix:
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8232069
>>>>>
>>>>> Webrev:http://cr.openjdk.java.net/~minqi/8232069/webrev/
>>>>>
>>>>> Description: Currently CDS only works when using compressed
>>>>> Oops turned on, -XX:+UseCompressedOops (default), the fix is
>>>>> allowing CDS works with uncompressed oops and uncompressed class
>>>>> pointers. The contents of InstanceKlass::_fields are depending on
>>>>> UseCompressedOops and UseCompressedClassPointers on/off. There are
>>>>> three suggestions as described in bug description:
>>>>>
>>>>> 1. Remember the compression mode at CDS dump time. At runtime,
>>>>> disable CDS if the compression mode is changed.
>>>>> 2. Same as 1, but save more than one CDS archives in the JDK
>>>>> image. Choose the appropriate one at start-up
>>>>> 3. Recompute re-compute InstanceKlass::_fields at runtime.
>>>>>
>>>>> The fix takes the first one, storing UseCompressedOops and
>>>>> UseCompressedClassPointers in shared archive. CDS is only allowed
>>>>> at runtime if the flags are consistent with the stored versions in
>>>>> archive.
>>>>>
>>>>> Testing: hs-tier1-2
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> Yumin
>>>>>
>>>>
More information about the hotspot-runtime-dev
mailing list