--- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Fri Dec 17 11:26:53 2010 -0800
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Fri Dec 17 23:41:31 2010 -0800
@@ -1058,10 +1058,11 @@
#endif
void ParNewGeneration::preserve_mark_if_necessary(oop obj, markOop m) {
- if ((m != markOopDesc::prototype()) &&
- (!UseBiasedLocking || (m != markOopDesc::biased_locking_prototype()))) {
+ if (m->must_be_preserved_for_promotion_failure(obj)) {
+ // We should really have separate per-worker stacks, rather
+ // than use locking of a common pair of stacks.
MutexLocker ml(ParGCRareEvent_lock);
- DefNewGeneration::preserve_mark_if_necessary(obj, m);
+ preserve_mark(obj, m);
}
}