RFR: 8210233: Prepare Klass::is_loader_alive() for concurrent class unloading

Erik Österlund erik.osterlund at oracle.com
Tue Sep 4 08:14:07 UTC 2018


Hi Kim,

Thank you for the review.

Incremental:
http://cr.openjdk.java.net/~eosterlund/8210233/webrev.01_02/

Full:
http://cr.openjdk.java.net/~eosterlund/8210233/webrev.02/

On 2018-09-04 05:51, Kim Barrett wrote:
>> On Sep 3, 2018, at 11:25 AM, Erik Österlund <erik.osterlund at oracle.com> wrote:
>>
>> Hi Kim,
>>
>> You are right. Thank you for catching that.
>>
>> Incremental:
>> http://cr.openjdk.java.net/~eosterlund/8210233/webrev.00_01/
>>
>> Full:
>> http://cr.openjdk.java.net/~eosterlund/8210233/webrev.01/
>>
>> Thank you for the review.
> The comments I was referring to were these:
>
> is_loader_alive in klass.hpp
> 657   // Iff the class loader (or mirror for unsafe anonymous classes) is alive the
> 658   // Klass is considered alive.  Has already been marked as unloading.

Fixed.

> classLoaderHierarchyDCmd.cpp
> 471     // We do not display unloading loaders, for now.
>
> I'm once again finding myself confused about the relationship between
> alive or not and unloading or not. Is the second sentence of the
> comment for is_loader_alive even true now?

To me, the term "unloading" refers to a conceptual state the CLD is in 
from when the marking terminates and the CLD holder is dead, to when it 
is finally deleted (despite having to go through a number of operations 
to get there, like (sometimes) reference processing, setting CLD state 
to _unloading (which is merely a cache for this liveness information), 
unlinking and deleting.

So I think the comment looks good (to me), but understand if there are 
other interpretations by others reading it. Perhaps if we removed the 
_unloading state altogether, things would be less confusing. It is only 
a cache of !is_alive(), and its existence builds on the premise that 
performing a phantom load on the CLD holder is expensive, and that it is 
therefore worth caching if the result is NULL or not. But I do not think 
that optimization gives us much. It does however constrain the order in 
which you can do things, which can be problematic and confusing. But 
that feels like a separate RFE.

> The new comment for is_alive is fine.
>
> In the new comment for is_unloading, the use of "unloaded" is
> confusing me.  Is that a typo for "unloading", or am I confused?

That was a typo indeed. It is fixed now.

> I think I need to retract my review; I think I need to refresh and
> de-confuse my understanding of this area.  Don't wait for me if you
> get a second okay from someone else.

No worries Kim, there is no rush with this one.

Thanks,
/Erik



More information about the hotspot-runtime-dev mailing list