hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
changeset 7658 b970e410547a
parent 7397 5b173b4ca846
child 8688 493d12ccc6db
--- 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);
   }
 }