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 } |