RFR: 8207263: Store the Configuration for system modules into CDS archive

Jiangli Zhou jiangli.zhou at oracle.com
Wed Aug 8 23:43:26 UTC 2018


Thanks Claes for resolving JDK-8209003 quickly. Here is my updated 
weberv that includes following changes:

- Added archiving for singletons in ImmutableCollections 
(ListN.EMPTY_LIST, SetN.EMPTY_SET and MapN.EMPTY_MAP). Please see 
changes in ImmutableCollections.java.
- Incorporated Calvin and Ioi feedbacks on vmSymbols.hpp.
- Added a new test case to check the parents and modules of archived 
EMPTY_CONFIGURATION.
- Added argument length check in CheckArchivedModuleApp.java test as 
Calvin suggested.

http://cr.openjdk.java.net/~jiangli/8207263/webrev.01/

Thanks,
Jiangli

On 8/6/18 9:48 AM, Jiangli Zhou wrote:
> Hi Calvin and Ioi,
>
> Thanks for reviewing the change! I'll incorporate your suggestions.
>
> As Claes pointed out in his email, there was a subtle issue with the 
> empty configuration, which was undetected by the testing for archiving 
> changes but could introduce a bug in certain cases. Claes has already 
> filed JDK-8209003 for consolidating empty collections usage in module 
> code. I'll look into archiving the immutable singletons in 
> java.util.ImmutableCollections.
>
> Thanks!
>
> Jiangli
>
>
> On 8/3/18 2:58 PM, Ioi Lam wrote:
>> On 8/3/18 11:37 AM, Calvin Cheung wrote:
>>> Hi Jiangli,
>>>
>>> The changes look good to me.
>>>
>>> I have couple of minor comments:
>>>
>>> 1) vmSymbols.hpp
>>>
>>>  653   template(url_void_signature, "(Ljava/net/URL;)V") \
>>>  654   template(toFileURL_name, "toFileURL") \
>>>  655   template(toFileURL_signature, 
>>> "(Ljava/lang/String;)Ljava/net/URL;")
>>>
>>> Since you've moved the above lines to after 
>>> “template(systemModules_signature, …”, I’d suggest rearrange the 
>>> entire block (lines 652 - 659) in alphabetical order.
>>>
>> Hi Jiangli,
>>
>> I've reviewed the code. It looks like a clean change and it's great 
>> to make further progress in start-up improvement!
>>
>> Just a small note on vmSymbols.hpp:  this line can be deleted because 
>> the symbol is no longer used.
>>
>>   template(jdk_vm_cds_SharedClassInfo, "jdk/vm/cds/SharedClassInfo")
>>
>> Thanks
>> - Ioi
>>
>>> 2) CheckArchivedModuleApp.java
>>>
>>> Since it now expects two input args, I’d suggest checking the number 
>>> of input args and throw an exception if it is not equal to two.
>>>
>>> thanks,
>>> Calvin
>>>
>>> On 7/20/18, 11:31 AM, Jiangli Zhou wrote:
>>>> Please review the following webrev that archives the system module 
>>>> boot layer Configuration (including all java objects reachable from 
>>>> the Configuration) in CDS archive. This is built on top of the 
>>>> earlier change for JDK-8202035 
>>>> (https://bugs.openjdk.java.net/browse/JDK-8202035), which provides 
>>>> a framework for object sub-graph archiving.
>>>>
>>>> The boot layer Configuration is created in ModuleBootstrap.boot() 
>>>> (similar to the archived system ModuleDescriptor objects, etc) and 
>>>> is unchanged after construction. With archived boot layer 
>>>> Configuration, it allows runtime to bypass the work for creating 
>>>> the configuration. Currently, this is only supported when the 
>>>> initial module is unnamed module. Measurements indicate archiving 
>>>> the boot layer Configuration improves the startup time by 1% ~ 1.5% 
>>>> (on linux-x64) when running HelloWorld from -cp at runtime.
>>>>
>>>> Many thanks to Alan and Claes for discussions and contributions to 
>>>> this change!
>>>>
>>>> Webrev: http://cr.openjdk.java.net/~jiangli/8207263/webrev.00/
>>>>
>>>> RFE: https://bugs.openjdk.java.net/browse/JDK-8207263
>>>>
>>>> Tested with tier1 - tier5 tests via mach5.
>>>>
>>>> Thanks,
>>>>
>>>> Jiangli
>>>>
>>
>



More information about the hotspot-runtime-dev mailing list