comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp @ 4787:2ace1c4ee8da

6888336: G1: avoid explicitly marking and pushing objects in survivor spaces Summary: This change simplifies the interaction between GC and concurrent marking. By disabling survivor spaces during the initial-mark pause we don't need to propagate marks of objects we copy during each GC (since we never need to copy an explicitly marked object). Reviewed-by: johnc, brutisso
author tonyp
date Tue, 10 Jan 2012 18:58:13 -0500
parents 1cbe7978b021
children 9509c20bba28
comparison
equal deleted inserted replaced
4786:1d6185f732aa 4787:2ace1c4ee8da
1 /* 1 /*
2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
65 65
66 class MainBodySummary: public CHeapObj { 66 class MainBodySummary: public CHeapObj {
67 define_num_seq(satb_drain) // optional 67 define_num_seq(satb_drain) // optional
68 define_num_seq(parallel) // parallel only 68 define_num_seq(parallel) // parallel only
69 define_num_seq(ext_root_scan) 69 define_num_seq(ext_root_scan)
70 define_num_seq(mark_stack_scan) 70 define_num_seq(satb_filtering)
71 define_num_seq(update_rs) 71 define_num_seq(update_rs)
72 define_num_seq(scan_rs) 72 define_num_seq(scan_rs)
73 define_num_seq(obj_copy) 73 define_num_seq(obj_copy)
74 define_num_seq(termination) // parallel only 74 define_num_seq(termination) // parallel only
75 define_num_seq(parallel_other) // parallel only 75 define_num_seq(parallel_other) // parallel only
213 double* _cur_aux_times_ms; 213 double* _cur_aux_times_ms;
214 bool* _cur_aux_times_set; 214 bool* _cur_aux_times_set;
215 215
216 double* _par_last_gc_worker_start_times_ms; 216 double* _par_last_gc_worker_start_times_ms;
217 double* _par_last_ext_root_scan_times_ms; 217 double* _par_last_ext_root_scan_times_ms;
218 double* _par_last_mark_stack_scan_times_ms; 218 double* _par_last_satb_filtering_times_ms;
219 double* _par_last_update_rs_times_ms; 219 double* _par_last_update_rs_times_ms;
220 double* _par_last_update_rs_processed_buffers; 220 double* _par_last_update_rs_processed_buffers;
221 double* _par_last_scan_rs_times_ms; 221 double* _par_last_scan_rs_times_ms;
222 double* _par_last_obj_copy_times_ms; 222 double* _par_last_obj_copy_times_ms;
223 double* _par_last_termination_times_ms; 223 double* _par_last_termination_times_ms;
839 839
840 void record_ext_root_scan_time(int worker_i, double ms) { 840 void record_ext_root_scan_time(int worker_i, double ms) {
841 _par_last_ext_root_scan_times_ms[worker_i] = ms; 841 _par_last_ext_root_scan_times_ms[worker_i] = ms;
842 } 842 }
843 843
844 void record_mark_stack_scan_time(int worker_i, double ms) { 844 void record_satb_filtering_time(int worker_i, double ms) {
845 _par_last_mark_stack_scan_times_ms[worker_i] = ms; 845 _par_last_satb_filtering_times_ms[worker_i] = ms;
846 } 846 }
847 847
848 void record_satb_drain_time(double ms) { 848 void record_satb_drain_time(double ms) {
849 assert(_g1->mark_in_progress(), "shouldn't be here otherwise"); 849 assert(_g1->mark_in_progress(), "shouldn't be here otherwise");
850 _cur_satb_drain_time_ms = ms; 850 _cur_satb_drain_time_ms = ms;
1144 1144
1145 void note_stop_adding_survivor_regions() { 1145 void note_stop_adding_survivor_regions() {
1146 _survivor_surv_rate_group->stop_adding_regions(); 1146 _survivor_surv_rate_group->stop_adding_regions();
1147 } 1147 }
1148 1148
1149 void tenure_all_objects() {
1150 _max_survivor_regions = 0;
1151 _tenuring_threshold = 0;
1152 }
1153
1149 void record_survivor_regions(size_t regions, 1154 void record_survivor_regions(size_t regions,
1150 HeapRegion* head, 1155 HeapRegion* head,
1151 HeapRegion* tail) { 1156 HeapRegion* tail) {
1152 _recorded_survivor_regions = regions; 1157 _recorded_survivor_regions = regions;
1153 _recorded_survivor_head = head; 1158 _recorded_survivor_head = head;