RFR (XL) 8046070 - Class Data Sharing clean up and refactoring, round #3
Ioi Lam
ioi.lam at oracle.com
Mon Aug 11 21:15:36 UTC 2014
Hi David, thanks for the feedback. I will integrate your comments.
Everyone, due to upcoming deadlines, we would like to push this change
into jdk9/hs-rt by this Thursday.
Please send additional comments, thumbs up/down by today if possible.
Thanks!
- Ioi
On 8/10/14, 7:16 PM, David Holmes wrote:
> Hi Ioi,
>
> We seem to have lost core-libs-dev so I added them back.
>
> A couple of minor follow ups.
>
> On 9/08/2014 6:02 PM, Ioi Lam wrote:
>> Hi,
>>
>> Thanks a lot to everyone for the very useful comments. I have updated
>> the webrev
>>
>> Just the delta from the previous round of review:
>>
>> http://cr.openjdk.java.net/~iklam/8046070-cds-cleanup-v3_delta_from_v2/
>
> JDK changes:
>
> URLClassLoader.java:
>
> Doesn't this Note
>
> + *
> + * NOTE: the logic used here has been duplicated in the VM
> native code
> + * (search for invocation of definePackageInternal in the
> HotSpot sources).
> + * If this is changed, the VM code also need to be modified.
>
> belong on definePackageInternal, not defineClass ??
>
> ---
>
> hotspot changes:
>
> hotspot/src/share/vm/classfile/classLoader.cpp
>
> The scoping of the ResourceMark doesn't look right:
>
> 592 // Iterate over class path entries
> 593 for (int start = 0; start < len; start = end) {
> 594 while (class_path[end] && class_path[end] !=
> os::path_separator()[0]) {
> 595 end++;
> 596 }
> 597 EXCEPTION_MARK;
> 598 ResourceMark rm(THREAD);
> 599 char* path = NEW_RESOURCE_ARRAY(char, end-start+1);
> 600 strncpy(path, &class_path[start], end-start);
> 601 path[end-start] = '\0';
> 602 update_class_path_entry_list(path, false);
> 603 #if INCLUDE_CDS
> 604 if (DumpSharedSpaces) {
> 605 check_shared_classpath(path);
> 606 }
> 607 #endif
> 608 while (class_path[end] == os::path_separator()[0]) {
> 609 end++;
> 610 }
> 611 }
>
> Doesn't the RESOURCE_ARRAY need to be freed within the ResourceMark
> block?
>
> ---
>
> src/share/vm/runtime/arguments.cpp
>
> 3340 // This causes problems with CDS, which requires that all
> directories specified in the classpath
> 3341 // must be empty.
>
> Should that be "must not be empty"? Or did you mean directory names?
>
> ---
>
> src/share/vm/runtime/javaCalls.cpp
>
> + // may cause undesriable side-effect in the class metadata.
>
> Typo: undesriable; also side-effects
>
> ---
>
> David
> -----
>
>
>> All the changes:
>>
>> http://cr.openjdk.java.net/~iklam/8046070-cds-cleanup-v3/
>>
>> Thanks
>> - Ioi
>>
>> On 7/28/14, 4:09 PM, Ioi Lam wrote:
>>> Hi Folks,
>>>
>>> Please review the following clean up and refactoring of the CDS code,
>>> for JDK9
>>>
>>> http://cr.openjdk.java.net/~iklam/8046070-cds-cleanup-v2/
>>> https://bugs.openjdk.java.net/browse/JDK-8046070
>>>
>>> Summary of fix:
>>>
>>> Clean up and refactor the Class Data Sharing (CDS) code, including:
>>>
>>> + Improve archive integrity checking
>>> + Support bytecode verification during archive dumping time
>>> + Allow the user to configure the CDS class list and archive file.
>>> + Allow future extension of the CDS class loading mechanism.
>>>
>>> Tests:
>>>
>>> JPRT
>>> UTE (vm.runtime.testlist, vm.quick.testlist,
>>> vm.parallel_class_loading.testlist)
>>> Various adhoc SQE tests on Aurora
>>> JCK
>>>
>>> Thanks
>>> - Ioi
>>
More information about the hotspot-runtime-dev
mailing list