Request for review (s) - NPG: Replace the ChunkList implementation with class FreeList<Metachunk>
Jon Masamitsu
jon.masamitsu at oracle.com
Tue Apr 2 15:43:56 UTC 2013
Mikael,
Thanks for the review.
On 04/02/13 07:42, Mikael Gerdin wrote:
> Jon,
>
> On 2013-04-02 00:13, Jon Masamitsu wrote:
>> For the perm gen removal project the ChunkList class
>> which implemented a simple freelist of Metachunk's was added.
>> This change replaces ChunkList with FreeList<Metachunk>.
>>
>> Changes include
>>
>> - Deletion of ChunkList
>> - Code to initialize the freelists in the FreeList style
>> - Replacement of call to ChunkList methods with the
>> equivalent calls to FreeList methods.
>>
>> http://cr.openjdk.java.net/~jmasa/8011173
>
> This looks like a good cleanup step.
> I'm fine with you pushing this as is, these are just my thoughts about
> the FreeList<> stuff.
I have some other changes build on top these changes so I would
like to push them with minimal changes.
>
> Regarding your comment in ChunkManager::return_chunks I think it could
> be resolved by making SpaceManager::_chunks_in_use[] into an array of
> ChunkList, similar to ChunkManager::_free_chunks.
I think something like this would work but as you note below FreeList is
not really a freelist but
just a list. I hesitated to make _chunks_in_use a FreeList because it
would confuse the casual
reader.
>
> The name FreeList is kind of a misnomer since it's actually just the
> head of a generic linked list.
Yes the name is wrong. There is actually a prepend() method that takes
a FreeList and that
is what I wanted to use but the name "FreeList" stopped me.
>
> Maybe we should consider encapsulating the managing of the _next and
> _prev fields only through the FreeList<> template by making the
> setters to them private and friend:ing FreeList<Metachunk> in class
> Metachunk and only ever letting FreeList manage the links?
So I don't understand that. I've created a CR for your suggested clean ups.
8011265 I'll think about that when I get to fixing this.
>
> It's confusing to have FreeList handle the links through link_prev and
> link_next and other parts of the code using set_next and set_prev.
link_prev() and link_next() have special meaning in CMS. One or the
other used to set
the is_free bit in a CMS freelist. It would be good to clean that up.
Thanks again.
Jon
>
> /Mikael
>
>
>>
>> Thanks.
>>
>> Jon
More information about the hotspot-gc-dev
mailing list