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

Coleen Phillimore coleen.phillimore at oracle.com
Tue Sep 2 12:29:20 UTC 2014

Serguei, I didn't answer one of your questions.

On 8/28/14, 5:43 PM, serguei.spitsyn at oracle.com wrote:
>> This bit is set during purging previous versions when all methods 
>> have been marked on_stack() if found in various places.  The bit is 
>> only used for setting breakpoints.
> I had to ask slightly different.
> "How precise must be the control of this bit?"
> Part of this question is the question below about what happens when 
> the method invocation is finished.
> I realized now that it can impact only setting breakpoints.
> Suppose, we did not clear the bit in time and then another breakpoint 
> is set.
> The only bad thing is that this new breakpoint will be useless.

Yes.  We set the on_stack bit which causes setting the is_running_emcp 
bit during safepoints for class redefinition and class unloading.  After 
the safepoint, the on_stack bit is cleared.   After the safepoint, we 
may also set breakpoints using the is_running_emcp bit.  If the method 
has exited we would set a breakpoint in a method that is never reached.  
But this shouldn't be noticeable to the programmer.

The method's is_running_emcp bit and maybe metadata would be cleaned up 
the next time we do class unloading at a safepoint.

> But let me look at new webrev first to see if any update is needed here.

Yes, please review this again and let me know if this does what I claim 
it does.

Thank you!

More information about the hotspot-dev mailing list