572 // If marking is not in progress, it's a no-op.
573 void verify_no_cset_oops() PRODUCT_RETURN;
574
575 inline bool do_yield_check();
576
577 bool has_aborted() { return _has_aborted; }
578
579 void print_summary_info();
580
581 void print_worker_threads_on(outputStream* st) const;
582 void threads_do(ThreadClosure* tc) const;
583
584 void print_on_error(outputStream* st) const;
585
586 // Mark the given object on the next bitmap if it is below nTAMS.
587 // If the passed obj_size is zero, it is recalculated from the given object if
588 // needed. This is to be as lazy as possible with accessing the object's size.
589 inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size = 0);
590 inline bool mark_in_next_bitmap(uint worker_id, oop const obj, size_t const obj_size = 0);
591
592 // Returns true if initialization was successfully completed.
593 bool completed_initialization() const {
594 return _completed_initialization;
595 }
596
597 ConcurrentGCTimer* gc_timer_cm() const { return _gc_timer_cm; }
598 G1OldTracer* gc_tracer_cm() const { return _gc_tracer_cm; }
599
600 private:
601 // Rebuilds the remembered sets for chosen regions in parallel and concurrently to the application.
602 void rebuild_rem_set_concurrently();
603 };
604
605 // A class representing a marking task.
606 class G1CMTask : public TerminatorTerminator {
607 private:
608 enum PrivateConstants {
609 // The regular clock call is called once the scanned words reaches
610 // this limit
611 words_scanned_period = 12*1024,
|
572 // If marking is not in progress, it's a no-op.
573 void verify_no_cset_oops() PRODUCT_RETURN;
574
575 inline bool do_yield_check();
576
577 bool has_aborted() { return _has_aborted; }
578
579 void print_summary_info();
580
581 void print_worker_threads_on(outputStream* st) const;
582 void threads_do(ThreadClosure* tc) const;
583
584 void print_on_error(outputStream* st) const;
585
586 // Mark the given object on the next bitmap if it is below nTAMS.
587 // If the passed obj_size is zero, it is recalculated from the given object if
588 // needed. This is to be as lazy as possible with accessing the object's size.
589 inline bool mark_in_next_bitmap(uint worker_id, HeapRegion* const hr, oop const obj, size_t const obj_size = 0);
590 inline bool mark_in_next_bitmap(uint worker_id, oop const obj, size_t const obj_size = 0);
591
592 inline bool is_marked_in_next_bitmap(oop p) const;
593
594 // Returns true if initialization was successfully completed.
595 bool completed_initialization() const {
596 return _completed_initialization;
597 }
598
599 ConcurrentGCTimer* gc_timer_cm() const { return _gc_timer_cm; }
600 G1OldTracer* gc_tracer_cm() const { return _gc_tracer_cm; }
601
602 private:
603 // Rebuilds the remembered sets for chosen regions in parallel and concurrently to the application.
604 void rebuild_rem_set_concurrently();
605 };
606
607 // A class representing a marking task.
608 class G1CMTask : public TerminatorTerminator {
609 private:
610 enum PrivateConstants {
611 // The regular clock call is called once the scanned words reaches
612 // this limit
613 words_scanned_period = 12*1024,
|