At the end of a Young-GC, we walk the whole young-gen to find promotion-failed objs.
```
void PSScavenge::clean_up_failed_promotion() {
...
RemoveForwardedPointerClosure remove_fwd_ptr_closure;
young_gen->object_iterate(&remove_fwd_ptr_closure);
...
}
```
This can be quite expensive, especially #promotion-failed objs is ususally small if any.
An alternative is to use `PreservedMarks` to record those promotion-failed objs. (`PreservedMarks` is originally used for objs whose markWord must be preserved, `markWord::must_be_preserved`.)