Mercurial > hg > truffle
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 |