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); }