RFR (tedious) 8230586 Encapsulate fields in filemap.hpp

Calvin Cheung calvin.cheung at oracle.com
Tue Sep 10 03:31:01 UTC 2019


Hi Ioi,

The updated webrev looks good.

Just 2 nits in filemap.cpp

1561     address dumptime_heap_end = (address)header()->heap_end();

Since heap_end() returns an address, the above typecast shouldn't be needed.

Please remove the extra blank line at line 180.

I don't need to see another webrev for the above.

thanks,

Calvin

On 9/9/19 6:56 PM, Ioi Lam wrote:
> Hi Calvin,
>
> thanks for the review. Please see my comments in-line:
>
> On 9/6/19 5:00 PM, Calvin Cheung wrote:
>> Hi Ioi,
>>
>> Looks good overall.
>>
>> Just a few comments:
>>
>> filemap.hpp
>> ----------
>> 326   FileMapHeader *header() const       { return _header; }
>>
>> This may not be necessary because all references to header() are from 
>> the class' member functions.
>> e.g.
>> 342   int    compute_header_crc()  const { return 
>> header()->compute_crc(); }
>>
>> could be
>>       int    compute_header_crc()  const { return 
>> _header->compute_crc(); }
>>
>
> In HotSpot, it's quite common to use the accessor function to access a 
> class's own fields. E.g., see the calls to Klass::class_loader_data() 
> in klass.cpp. This makes it easier to change the implementation of 
> Klass::class_loader_data() when necessary, without changing every 
> reference to _class_loader_data.
>
> In filemap.cpp, I try to remove all use of _xxxx fields, unless it's 
> near where the field is written into. E.g.,
>
>   _header = (FileMapHeader*)os::malloc(header_size, mtInternal);
>   memset((void*)_header, 0, header_size);
>   _header->set_header_size(header_size);
>
>> 245 MemRegion heap_reserved()                const { return 
>> _heap_reserved; }
>>
>> I couldn't find the _heap_reserved member.
>>
>
> _heap_reserved was removed in JDK-8224815, which wasn't in my repo 
> when I made the webrev. I have update the repo to use this instead:
>
>   address heap_end()                       const { return _heap_end; }
>
>
>
>> filemap.cpp
>> ----------
>> Extra blank line at line 180.
>>
>> You have 2 ways of accessing the _header:
>> e.g.
>> 196   _header->set_header_size(header_size);
>>
>> 214   header()->populate(this, alignment);
>>
>> As in the above comment on filemap.hpp, maybe just using _header is 
>> fine.
>>
>
> See my comments about accessor functions above.
>
>> cds.h
>> ----
>> 55   int        _is_heap_region;// used in debug build only.
>>
>> Needs a blank space after the ';'.
>>
> Fixed.
>
> Updated webrev is here:
> http://cr.openjdk.java.net/~iklam/jdk14/8230586-encapsulate-filemap-hpp.v02/ 
>
>
> Thanks
> - Ioi
>
>> thanks,
>>
>> Calvin
>>
>> On 9/4/19 9:20 AM, Ioi Lam wrote:
>>> https://bugs.openjdk.java.net/browse/JDK-8230586
>>> http://cr.openjdk.java.net/~iklam/jdk14/8230586-encapsulate-filemap-hpp.v01/ 
>>>
>>>
>>> Many of the member fields in filemap.hpp are declared with public 
>>> accessibility.
>>> This is contrary to HotSpot coding style, and also makes the code
>>> unnecessarily intertwined.
>>>
>>> I made the fields private and added accessor functions where necessary.
>>>
>>> Also, FileMapInfo::_header should not be accessed directly from 
>>> other code.
>>> I added accessor functions similar to FileMapInfo::core_spaces_size()
>>> to access information stored in the header.
>>>
>>> Testing: hs-tier1, hs-tier2
>>>
>>> Thanks
>>> - Ioi
>


More information about the hotspot-runtime-dev mailing list