1797 void ShenandoahHeap::op_roots() {
1798 if (is_concurrent_root_in_progress()) {
1799 if (ShenandoahConcurrentRoots::should_do_concurrent_class_unloading()) {
1800 // Concurrent weak root processing
1801 ShenandoahConcurrentWeakRootsEvacUpdateTask task;
1802 workers()->run_task(&task);
1803
1804 _unloader.unload();
1805 }
1806
1807 if (ShenandoahConcurrentRoots::should_do_concurrent_roots()) {
1808 ShenandoahConcurrentRootsEvacUpdateTask task(!ShenandoahConcurrentRoots::should_do_concurrent_class_unloading());
1809 workers()->run_task(&task);
1810 }
1811 }
1812
1813 set_concurrent_root_in_progress(false);
1814 }
1815
1816 void ShenandoahHeap::op_reset() {
1817 reset_mark_bitmap();
1818 }
1819
1820 void ShenandoahHeap::op_preclean() {
1821 concurrent_mark()->preclean_weak_refs();
1822 }
1823
1824 void ShenandoahHeap::op_init_traversal() {
1825 traversal_gc()->init_traversal_collection();
1826 }
1827
1828 void ShenandoahHeap::op_traversal() {
1829 traversal_gc()->concurrent_traversal_collection();
1830 }
1831
1832 void ShenandoahHeap::op_final_traversal() {
1833 traversal_gc()->final_traversal_collection();
1834 }
1835
1836 void ShenandoahHeap::op_full(GCCause::Cause cause) {
1837 ShenandoahMetricsSnapshot metrics;
1838 metrics.snap_before();
1839
1840 full_gc()->do_it(cause);
|
1797 void ShenandoahHeap::op_roots() {
1798 if (is_concurrent_root_in_progress()) {
1799 if (ShenandoahConcurrentRoots::should_do_concurrent_class_unloading()) {
1800 // Concurrent weak root processing
1801 ShenandoahConcurrentWeakRootsEvacUpdateTask task;
1802 workers()->run_task(&task);
1803
1804 _unloader.unload();
1805 }
1806
1807 if (ShenandoahConcurrentRoots::should_do_concurrent_roots()) {
1808 ShenandoahConcurrentRootsEvacUpdateTask task(!ShenandoahConcurrentRoots::should_do_concurrent_class_unloading());
1809 workers()->run_task(&task);
1810 }
1811 }
1812
1813 set_concurrent_root_in_progress(false);
1814 }
1815
1816 void ShenandoahHeap::op_reset() {
1817 if (ShenandoahPacing) {
1818 pacer()->setup_for_reset();
1819 }
1820 reset_mark_bitmap();
1821 }
1822
1823 void ShenandoahHeap::op_preclean() {
1824 if (ShenandoahPacing) {
1825 pacer()->setup_for_preclean();
1826 }
1827 concurrent_mark()->preclean_weak_refs();
1828 }
1829
1830 void ShenandoahHeap::op_init_traversal() {
1831 traversal_gc()->init_traversal_collection();
1832 }
1833
1834 void ShenandoahHeap::op_traversal() {
1835 traversal_gc()->concurrent_traversal_collection();
1836 }
1837
1838 void ShenandoahHeap::op_final_traversal() {
1839 traversal_gc()->final_traversal_collection();
1840 }
1841
1842 void ShenandoahHeap::op_full(GCCause::Cause cause) {
1843 ShenandoahMetricsSnapshot metrics;
1844 metrics.snap_before();
1845
1846 full_gc()->do_it(cause);
|