src/share/vm/gc_implementation/g1/concurrentMark.hpp

Print this page




 529     return _tasks[id];
 530   }
 531 
 532   // Returns the task queue with the given id
 533   CMTaskQueue* task_queue(int id) {
 534     assert(0 <= id && id < (int) _active_tasks,
 535            "task queue id not within active bounds");
 536     return (CMTaskQueue*) _task_queues->queue(id);
 537   }
 538 
 539   // Returns the task queue set
 540   CMTaskQueueSet* task_queues()  { return _task_queues; }
 541 
 542   // Access / manipulation of the overflow flag which is set to
 543   // indicate that the global stack has overflown
 544   bool has_overflown()           { return _has_overflown; }
 545   void set_has_overflown()       { _has_overflown = true; }
 546   void clear_has_overflown()     { _has_overflown = false; }
 547   bool restart_for_overflow()    { return _restart_for_overflow; }
 548 
 549   bool has_aborted()             { return _has_aborted; }
 550 
 551   // Methods to enter the two overflow sync barriers
 552   void enter_first_sync_barrier(int task_num);
 553   void enter_second_sync_barrier(int task_num);
 554 
 555   ForceOverflowSettings* force_overflow_conc() {
 556     return &_force_overflow_conc;
 557   }
 558 
 559   ForceOverflowSettings* force_overflow_stw() {
 560     return &_force_overflow_stw;
 561   }
 562 
 563   ForceOverflowSettings* force_overflow() {
 564     if (concurrent()) {
 565       return force_overflow_conc();
 566     } else {
 567       return force_overflow_stw();
 568     }
 569   }
 570 


 777   inline bool not_yet_marked(oop p) const;
 778 
 779   // XXX Debug code
 780   bool containing_card_is_marked(void* p);
 781   bool containing_cards_are_marked(void* start, void* last);
 782 
 783   bool isPrevMarked(oop p) const {
 784     assert(p != NULL && p->is_oop(), "expected an oop");
 785     HeapWord* addr = (HeapWord*)p;
 786     assert(addr >= _prevMarkBitMap->startWord() ||
 787            addr < _prevMarkBitMap->endWord(), "in a region");
 788 
 789     return _prevMarkBitMap->isMarked(addr);
 790   }
 791 
 792   inline bool do_yield_check(uint worker_i = 0);
 793   inline bool should_yield();
 794 
 795   // Called to abort the marking cycle after a Full GC takes palce.
 796   void abort();


 797 
 798   // This prints the global/local fingers. It is used for debugging.
 799   NOT_PRODUCT(void print_finger();)
 800 
 801   void print_summary_info();
 802 
 803   void print_worker_threads_on(outputStream* st) const;
 804 
 805   // The following indicate whether a given verbose level has been
 806   // set. Notice that anything above stats is conditional to
 807   // _MARKING_VERBOSE_ having been set to 1
 808   bool verbose_stats() {
 809     return _verbose_level >= stats_verbose;
 810   }
 811   bool verbose_low() {
 812     return _MARKING_VERBOSE_ && _verbose_level >= low_verbose;
 813   }
 814   bool verbose_medium() {
 815     return _MARKING_VERBOSE_ && _verbose_level >= medium_verbose;
 816   }




 529     return _tasks[id];
 530   }
 531 
 532   // Returns the task queue with the given id
 533   CMTaskQueue* task_queue(int id) {
 534     assert(0 <= id && id < (int) _active_tasks,
 535            "task queue id not within active bounds");
 536     return (CMTaskQueue*) _task_queues->queue(id);
 537   }
 538 
 539   // Returns the task queue set
 540   CMTaskQueueSet* task_queues()  { return _task_queues; }
 541 
 542   // Access / manipulation of the overflow flag which is set to
 543   // indicate that the global stack has overflown
 544   bool has_overflown()           { return _has_overflown; }
 545   void set_has_overflown()       { _has_overflown = true; }
 546   void clear_has_overflown()     { _has_overflown = false; }
 547   bool restart_for_overflow()    { return _restart_for_overflow; }
 548 


 549   // Methods to enter the two overflow sync barriers
 550   void enter_first_sync_barrier(int task_num);
 551   void enter_second_sync_barrier(int task_num);
 552 
 553   ForceOverflowSettings* force_overflow_conc() {
 554     return &_force_overflow_conc;
 555   }
 556 
 557   ForceOverflowSettings* force_overflow_stw() {
 558     return &_force_overflow_stw;
 559   }
 560 
 561   ForceOverflowSettings* force_overflow() {
 562     if (concurrent()) {
 563       return force_overflow_conc();
 564     } else {
 565       return force_overflow_stw();
 566     }
 567   }
 568 


 775   inline bool not_yet_marked(oop p) const;
 776 
 777   // XXX Debug code
 778   bool containing_card_is_marked(void* p);
 779   bool containing_cards_are_marked(void* start, void* last);
 780 
 781   bool isPrevMarked(oop p) const {
 782     assert(p != NULL && p->is_oop(), "expected an oop");
 783     HeapWord* addr = (HeapWord*)p;
 784     assert(addr >= _prevMarkBitMap->startWord() ||
 785            addr < _prevMarkBitMap->endWord(), "in a region");
 786 
 787     return _prevMarkBitMap->isMarked(addr);
 788   }
 789 
 790   inline bool do_yield_check(uint worker_i = 0);
 791   inline bool should_yield();
 792 
 793   // Called to abort the marking cycle after a Full GC takes palce.
 794   void abort();
 795 
 796   bool has_aborted()      { return _has_aborted; }
 797 
 798   // This prints the global/local fingers. It is used for debugging.
 799   NOT_PRODUCT(void print_finger();)
 800 
 801   void print_summary_info();
 802 
 803   void print_worker_threads_on(outputStream* st) const;
 804 
 805   // The following indicate whether a given verbose level has been
 806   // set. Notice that anything above stats is conditional to
 807   // _MARKING_VERBOSE_ having been set to 1
 808   bool verbose_stats() {
 809     return _verbose_level >= stats_verbose;
 810   }
 811   bool verbose_low() {
 812     return _MARKING_VERBOSE_ && _verbose_level >= low_verbose;
 813   }
 814   bool verbose_medium() {
 815     return _MARKING_VERBOSE_ && _verbose_level >= medium_verbose;
 816   }