< prev index next >

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

Print this page




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




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


 147 
 148   inline void promotion_trace_event(oop new_obj, oop old_obj, size_t obj_size,
 149                                     uint age, bool tenured,
 150                                     const PSPromotionLAB* lab);
 151 
 152  protected:
 153   static OopStarTaskQueueSet* stack_array_depth()   { return _stack_array_depth; }
 154  public:
 155   // Static
 156   static void initialize();
 157 
 158   static void pre_scavenge();
 159   static bool post_scavenge(YoungGCTracer& gc_tracer);
 160 
 161   static PSPromotionManager* gc_thread_promotion_manager(int index);
 162   static PSPromotionManager* vm_thread_promotion_manager();
 163 
 164   static bool steal_depth(int queue_num, int* seed, StarTask& t) {
 165     return stack_array_depth()->steal(queue_num, seed, t);
 166   }


< prev index next >