comparison src/share/vm/memory/referenceProcessor.cpp @ 534:5cfd8d19e546

6786503: Overflow list performance can be improved Summary: Avoid overflow list walk in CMS & ParNew when it is unnecessary. Fix a couple of correctness issues, including a C-heap leak, in ParNew at the intersection of promotion failure, work queue overflow and object array chunking. Add stress testing option and related assertion checking. Reviewed-by: jmasa
author ysr
date Mon, 26 Jan 2009 12:47:21 -0800
parents 27a80744a83b
children 0fbdb4381b99
comparison
equal deleted inserted replaced
527:2b1de1db9a9d 534:5cfd8d19e546
719 gclog_or_tty->print_cr("Adding %sreference (" INTPTR_FORMAT ": %s) as pending", 719 gclog_or_tty->print_cr("Adding %sreference (" INTPTR_FORMAT ": %s) as pending",
720 clear_referent ? "cleared " : "", 720 clear_referent ? "cleared " : "",
721 iter.obj(), iter.obj()->blueprint()->internal_name()); 721 iter.obj(), iter.obj()->blueprint()->internal_name());
722 } 722 }
723 assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference"); 723 assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference");
724 // If discovery is concurrent, we may have objects with null referents,
725 // being those that were concurrently cleared after they were discovered
726 // (and not subsequently precleaned).
727 assert( (discovery_is_atomic() && iter.referent()->is_oop())
728 || (!discovery_is_atomic() && iter.referent()->is_oop_or_null(UseConcMarkSweepGC)),
729 "Adding a bad referent");
730 iter.next(); 724 iter.next();
731 } 725 }
732 // Remember to keep sentinel pointer around 726 // Remember to keep sentinel pointer around
733 iter.update_discovered(); 727 iter.update_discovered();
734 // Close the reachable set 728 // Close the reachable set