inline void PSPromotionManager::claim_or_forward_internal_depth(heapRef* p) {
  if (p != NULL) {
objectRef pref=ALWAYS_UNPOISON_OBJECTREF(*p);
    oop o = pref.as_oop();
    if (o->is_forwarded()) {
      objectRef ref = o->forwarded_ref();
      // Card mark
if(PSScavenge::is_obj_in_young((HeapWord*)ref.as_oop())){
PSScavenge::card_table()->inline_write_ref_field_gc(p,ref.as_oop());
      }
      POISON_AND_STORE_REF(p,ref);

    } else {
      if (!claimed_stack_depth()->push(p)) {
	overflow_stack_depth()->push(p);
      }
    }
  }
}
inline void PSPromotionManager::push_depth(T* p) {
    claimed_stack_depth()->push(p);
}
 template <class T> void push_depth(T* p) {
   claimed_stack_depth()->push(p);
 }