323 void clear();
324
325 #if TASKQUEUE_STATS
326 static void print_taskqueue_stats_hdr(outputStream* const st);
327 void print_taskqueue_stats() const;
328 void reset_taskqueue_stats();
329 #endif // TASKQUEUE_STATS
330 };
331
332 class ShenandoahTerminatorTerminator : public TerminatorTerminator {
333 private:
334 ShenandoahHeap* _heap;
335 public:
336 ShenandoahTerminatorTerminator(ShenandoahHeap* const heap) : _heap(heap) { }
337 // return true, terminates immediately, even if there's remaining work left
338 virtual bool should_exit_termination() { return _heap->cancelled_gc(); }
339 };
340
341 class ShenandoahTaskTerminator : public StackObj {
342 private:
343 OWSTTaskTerminator* const _terminator;
344 public:
345 ShenandoahTaskTerminator(uint n_threads, TaskQueueSetSuper* queue_set);
346 ~ShenandoahTaskTerminator();
347
348 bool offer_termination(ShenandoahTerminatorTerminator* terminator) {
349 return _terminator->offer_termination(terminator);
350 }
351
352 void reset_for_reuse() { _terminator->reset_for_reuse(); }
353 bool offer_termination() { return offer_termination((ShenandoahTerminatorTerminator*)NULL); }
354 };
355
356 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHTASKQUEUE_HPP
|
323 void clear();
324
325 #if TASKQUEUE_STATS
326 static void print_taskqueue_stats_hdr(outputStream* const st);
327 void print_taskqueue_stats() const;
328 void reset_taskqueue_stats();
329 #endif // TASKQUEUE_STATS
330 };
331
332 class ShenandoahTerminatorTerminator : public TerminatorTerminator {
333 private:
334 ShenandoahHeap* _heap;
335 public:
336 ShenandoahTerminatorTerminator(ShenandoahHeap* const heap) : _heap(heap) { }
337 // return true, terminates immediately, even if there's remaining work left
338 virtual bool should_exit_termination() { return _heap->cancelled_gc(); }
339 };
340
341 class ShenandoahTaskTerminator : public StackObj {
342 private:
343 OWSTTaskTerminator _terminator;
344 public:
345 ShenandoahTaskTerminator(uint n_threads, TaskQueueSetSuper* queue_set);
346
347 bool offer_termination(ShenandoahTerminatorTerminator* terminator) {
348 return _terminator.offer_termination(terminator);
349 }
350
351 void reset_for_reuse() { _terminator.reset_for_reuse(); }
352 bool offer_termination() { return offer_termination((ShenandoahTerminatorTerminator*)NULL); }
353 };
354
355 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHTASKQUEUE_HPP
|