801 // regions.
802 void free_collection_set(HeapRegion* cs_head);
803
804 // Abandon the current collection set without recording policy
805 // statistics or updating free lists.
806 void abandon_collection_set(HeapRegion* cs_head);
807
808 // Applies "scan_non_heap_roots" to roots outside the heap,
809 // "scan_rs" to roots inside the heap (having done "set_region" to
810 // indicate the region in which the root resides),
811 // and does "scan_metadata" If "scan_rs" is
812 // NULL, then this step is skipped. The "worker_i"
813 // param is for use with parallel roots processing, and should be
814 // the "i" of the calling parallel worker thread's work(i) function.
815 // In the sequential case this param will be ignored.
816 void g1_process_strong_roots(bool is_scavenging,
817 ScanningOption so,
818 OopClosure* scan_non_heap_roots,
819 OopsInHeapRegionClosure* scan_rs,
820 G1KlassScanClosure* scan_klasses,
821 int worker_i);
822
823 // Apply "blk" to all the weak roots of the system. These include
824 // JNI weak roots, the code cache, system dictionary, symbol table,
825 // string table, and referents of reachable weak refs.
826 void g1_process_weak_roots(OopClosure* root_closure);
827
828 // Frees a non-humongous region by initializing its contents and
829 // adding it to the free list that's passed as a parameter (this is
830 // usually a local list which will be appended to the master free
831 // list later). The used bytes of freed regions are accumulated in
832 // pre_used. If par is true, the region's RSet will not be freed
833 // up. The assumption is that this will be done later.
834 void free_region(HeapRegion* hr,
835 size_t* pre_used,
836 FreeRegionList* free_list,
837 bool par);
838
839 // Frees a humongous region by collapsing it into individual regions
840 // and calling free_region() for each of them. The freed regions
841 // will be added to the free list that's passed as a parameter (this
|
801 // regions.
802 void free_collection_set(HeapRegion* cs_head);
803
804 // Abandon the current collection set without recording policy
805 // statistics or updating free lists.
806 void abandon_collection_set(HeapRegion* cs_head);
807
808 // Applies "scan_non_heap_roots" to roots outside the heap,
809 // "scan_rs" to roots inside the heap (having done "set_region" to
810 // indicate the region in which the root resides),
811 // and does "scan_metadata" If "scan_rs" is
812 // NULL, then this step is skipped. The "worker_i"
813 // param is for use with parallel roots processing, and should be
814 // the "i" of the calling parallel worker thread's work(i) function.
815 // In the sequential case this param will be ignored.
816 void g1_process_strong_roots(bool is_scavenging,
817 ScanningOption so,
818 OopClosure* scan_non_heap_roots,
819 OopsInHeapRegionClosure* scan_rs,
820 G1KlassScanClosure* scan_klasses,
821 uint worker_i);
822
823 // Apply "blk" to all the weak roots of the system. These include
824 // JNI weak roots, the code cache, system dictionary, symbol table,
825 // string table, and referents of reachable weak refs.
826 void g1_process_weak_roots(OopClosure* root_closure);
827
828 // Frees a non-humongous region by initializing its contents and
829 // adding it to the free list that's passed as a parameter (this is
830 // usually a local list which will be appended to the master free
831 // list later). The used bytes of freed regions are accumulated in
832 // pre_used. If par is true, the region's RSet will not be freed
833 // up. The assumption is that this will be done later.
834 void free_region(HeapRegion* hr,
835 size_t* pre_used,
836 FreeRegionList* free_list,
837 bool par);
838
839 // Frees a humongous region by collapsing it into individual regions
840 // and calling free_region() for each of them. The freed regions
841 // will be added to the free list that's passed as a parameter (this
|