comparison src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp @ 2038:74ee0db180fa

6807801: CMS: could save/restore fewer header words during scavenge Summary: Age bits need not enter the mark-word preservation calculus; also affected, in addition to CMS, per CR synopsis above, were ParNew (but not DefNew), ParallelScavenge and G1, albeit to a lesser degree than CMS. Reviewed-by: tonyp, johnc
author ysr
date Fri, 17 Dec 2010 23:41:31 -0800
parents f95d63e2154a
children 92da084fefc9
comparison
equal deleted inserted replaced
2037:b03260081e9b 2038:74ee0db180fa
692 // all forwarded headers replaced by the default markOop. This means 692 // all forwarded headers replaced by the default markOop. This means
693 // it is not neccessary to preserve most markOops. 693 // it is not neccessary to preserve most markOops.
694 void PSScavenge::oop_promotion_failed(oop obj, markOop obj_mark) { 694 void PSScavenge::oop_promotion_failed(oop obj, markOop obj_mark) {
695 _promotion_failed = true; 695 _promotion_failed = true;
696 if (obj_mark->must_be_preserved_for_promotion_failure(obj)) { 696 if (obj_mark->must_be_preserved_for_promotion_failure(obj)) {
697 // Should use per-worker private stakcs hetre rather than
698 // locking a common pair of stacks.
697 ThreadCritical tc; 699 ThreadCritical tc;
698 _preserved_oop_stack.push(obj); 700 _preserved_oop_stack.push(obj);
699 _preserved_mark_stack.push(obj_mark); 701 _preserved_mark_stack.push(obj_mark);
700 } 702 }
701 } 703 }