RFR(S): 8075253: Multiversion JAR feature: CDS does not support MV-JARs

Calvin Cheung calvin.cheung at oracle.com
Thu Mar 31 00:07:24 UTC 2016


Hi,

I needed to update the webrev to handle the -Xbootclasspath/a.
To be consistent with non-CDS case, the versioned entries in a 
multi-release jar will be ignored if the jar is found in the 
-Xbootclasspath/a.
Summary of changes:
- added a bool _is_boot_entry to the ClassPathZipEntry;
- added a bool parameter to the functions (create_class_path_entry, 
create_class_path_zip_entry, etc.) which creates a ClassPathZipEntry;
- open_versioned_entry and is_multiple_versioned are CDS only functions.

webrev: http://cr.openjdk.java.net/~ccheung/8075253/webrev.02/

Testing:
     JPRT
     RBT tests on hotspot_runtime

thanks,
Calvin

On 3/25/16, 6:42 AM, Coleen Phillimore wrote:
>
> Hi Calvin,
> I didn't really review this but could you add a // INCLUDE_CDS on the 
> #endif in this code.
>
> http://cr.openjdk.java.net/~ccheung/8075253/webrev.01/src/share/vm/classfile/classLoader.cpp.udiff.html 
>
>
> Thanks,
> Coleen
>
> On 3/24/16 8:40 PM, Calvin Cheung wrote:
>> Hi Jiangli,
>>
>> I agreed with both of your comments.
>>
>> On 3/23/16, 4:24 PM, Jiangli Zhou wrote:
>>> Hi Calvin,
>>>
>>> I have two comments below.
>>>
>>> - I’d suggest putting the new block of code (added in open_stream()) 
>>> in a separate function. The new function should be defined for 
>>> CDS_ONLY.
>>>
>>> - In the bug report, it is suggested that the search for versioned 
>>> class stops at 8. The changes in the webrev search all versions down 
>>> to 6. Could you please verify what the spec says. The VM behavior 
>>> should be the same a the JDK library code.
>> I've checked that the base version is set to 8 in java.util.jar.JarFile.
>>
>> Here's an updated webrev: 
>> http://cr.openjdk.java.net/~ccheung/8075253/webrev.01/
>>
>> thanks,
>> Calvin
>>
>>>
>>> Thanks,
>>> Jiangli
>>>
>>>> On Mar 18, 2016, at 1:51 PM, Calvin 
>>>> Cheung<calvin.cheung at oracle.com>  wrote:
>>>>
>>>>
>>>> This fix was reviewed in Aug 2015[1] though most of the review 
>>>> comments was via internal mailing list. Recently, the JEP 238 
>>>> (Multiple-Release jar files) has been checked into jdk9. So it is 
>>>> time to make the corresponding changes in hotspot.
>>>>
>>>> JBS: bug: https://bugs.openjdk.java.net/browse/JDK-8075253
>>>>       (unfortunately the bug was marked as "confidential")
>>>>
>>>> webrev: http://cr.openjdk.java.net/~ccheung/8075253/webrev.00/
>>>>
>>>> Some adjustments need to be made due to:
>>>> - attribute name in the jar manifest has been changed to 
>>>> "Multi-release";
>>>> - system property has been changed to 
>>>> jdk.util.jar.enableMultiRelease and it has value of "true", "force" 
>>>> or "false".
>>>>
>>>> The diff between this patch and the reviewed patch is as follows:
>>>>
>>>> 11c11
>>>> <  +    const char* multi_ver = 
>>>> Arguments::get_property("jdk.util.jar.enableMultiRelease");
>>>> ---
>>>>> +    const char* multi_ver = 
>>>>> Arguments::get_property("jdk.util.jar.multiversion");
>>>> 14c14
>>>> <  +                         strcmp(multi_ver, "true") == 0 ||
>>>> ---
>>>>> + strcmp(multi_ver, "enable") == 0 ||
>>>> 64c64
>>>> <  @@ -296,6 +345,17 @@
>>>> ---
>>>>> @@ -272,6 +321,17 @@
>>>> 72c72
>>>> <  +    if (strstr(buffer, "Multi-Release: true") != NULL) {
>>>> ---
>>>>> +    if (strstr(buffer, "Multiversion: true") != NULL) {
>>>> thanks,
>>>> Calvin
>>>>
>>>> [1]: 
>>>> http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2015-August/015589.html
>


More information about the hotspot-runtime-dev mailing list