RFR 8055008: Clean up code that saves the previous versions of redefined classes

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Aug 20 22:45:53 UTC 2014


On 8/20/14 2:01 PM, Coleen Phillimore wrote:
> On 8/20/14, 3:49 PM, serguei.spitsyn at oracle.com wrote:
>>>
>>> If an EMCP method is not running, should we save it on a previous 
>>> version list anyway so that we can make it obsolete if it's 
>>> redefined and made obsolete?
>>
>> I hope, Dan will catch me if I'm wrong...
>>
>> I think, we should not.
>> An EMCP method can not be made obsolete if it is not running.
>>
>
>
> It should be this way otherwise we'd have to hang onto things forever.

An EMCP method should only be made obsolete if a RedefineClasses() or
RetransformClasses() operation made it so. We should not be leveraging
off the obsolete-ness attribute to solve a life-cycle problem.

In the pre-PGR world, we could trust GC to make a completely unused
EMCP method collectible and eventually our weak reference would go
away. Just because an EMCP method is not on a stack does not mean
that it is not used so we need a different way to determine whether
it is OK to no longer track an EMCP method.


>
>> BTW, I'm reviewing the webrev too, but probably it'd be better to 
>> switch to updated webrev after it is ready.
>
> Yes, this is a good idea.  I figured out why I made emcp methods 
> obsolete, and I'm fixing that as well as Dan's comments.  Thanks!

Cool! I'm looking forward to the next review.

Dan


>
> Coleen
>
>>
>> Thanks,
>> Serguei
>



More information about the serviceability-dev mailing list