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() { |