< prev index next >

src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp

Print this page




 131     return ret;
 132   }
 133 
 134   oop unmask_chunked_array_oop(StarTask p) {
 135     assert(is_oop_masked(p), "invariant");
 136     assert(!p.is_narrow(), "chunked array oops cannot be narrow");
 137     oop *chunk = (oop*)p;  // cast p to oop (uses conversion operator)
 138     oop ret = oop((oop*)((uintptr_t)chunk & ~PS_CHUNKED_ARRAY_OOP_MASK));
 139     assert(!is_oop_masked((oop*) ret), "invariant");
 140     return ret;
 141   }
 142 
 143   template <class T> void  process_array_chunk_work(oop obj,
 144                                                     int start, int end);
 145   void process_array_chunk(oop old);
 146 
 147   template <class T> void push_depth(T* p) {
 148     claimed_stack_depth()->push(p);
 149   }
 150 




 151  protected:
 152   static OopStarTaskQueueSet* stack_array_depth()   { return _stack_array_depth; }
 153  public:
 154   // Static
 155   static void initialize();
 156 
 157   static void pre_scavenge();
 158   static bool post_scavenge(YoungGCTracer& gc_tracer);
 159 
 160   static PSPromotionManager* gc_thread_promotion_manager(int index);
 161   static PSPromotionManager* vm_thread_promotion_manager();
 162 
 163   static bool steal_depth(int queue_num, int* seed, StarTask& t) {
 164     return stack_array_depth()->steal(queue_num, seed, t);
 165   }
 166 
 167   PSPromotionManager();
 168 
 169   // Accessors
 170   OopStarTaskQueue* claimed_stack_depth() {




 131     return ret;
 132   }
 133 
 134   oop unmask_chunked_array_oop(StarTask p) {
 135     assert(is_oop_masked(p), "invariant");
 136     assert(!p.is_narrow(), "chunked array oops cannot be narrow");
 137     oop *chunk = (oop*)p;  // cast p to oop (uses conversion operator)
 138     oop ret = oop((oop*)((uintptr_t)chunk & ~PS_CHUNKED_ARRAY_OOP_MASK));
 139     assert(!is_oop_masked((oop*) ret), "invariant");
 140     return ret;
 141   }
 142 
 143   template <class T> void  process_array_chunk_work(oop obj,
 144                                                     int start, int end);
 145   void process_array_chunk(oop old);
 146 
 147   template <class T> void push_depth(T* p) {
 148     claimed_stack_depth()->push(p);
 149   }
 150 
 151   inline void promotion_trace_event(oop new_obj, oop old_obj, size_t obj_size,
 152                                     uint age, bool tenured,
 153                                     const PSPromotionLAB* lab);
 154 
 155  protected:
 156   static OopStarTaskQueueSet* stack_array_depth()   { return _stack_array_depth; }
 157  public:
 158   // Static
 159   static void initialize();
 160 
 161   static void pre_scavenge();
 162   static bool post_scavenge(YoungGCTracer& gc_tracer);
 163 
 164   static PSPromotionManager* gc_thread_promotion_manager(int index);
 165   static PSPromotionManager* vm_thread_promotion_manager();
 166 
 167   static bool steal_depth(int queue_num, int* seed, StarTask& t) {
 168     return stack_array_depth()->steal(queue_num, seed, t);
 169   }
 170 
 171   PSPromotionManager();
 172 
 173   // Accessors
 174   OopStarTaskQueue* claimed_stack_depth() {


< prev index next >