CRR: G1: assert((_g1->evacuation_failed()) || (!_g1->obj_in_cs(obj))) failed (XS)

Tony Printezis tony.printezis at oracle.com
Wed May 4 18:31:02 UTC 2011


Hi all,

I'd like one more review for this small fix:

http://cr.openjdk.java.net/~tonyp/7040450/webrev.0/

The problem was that the assert at the end of mark_forwardee() was too 
strong and if another thread self-forwarded the object we might have hit 
the assert before the other thread got a chance to set the evacuation 
failure flag. I removed the assert (as it's not straightforward to make 
it work in the presence of this race) and I added two new asserts in the 
evacuation handling code to make sure that the post-conditions are as 
expected before we get to mark_forwardee().

Tony



More information about the hotspot-gc-dev mailing list