comparison src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp @ 5988:2a0172480595

7127697: G1: remove dead code after recent concurrent mark changes Summary: Removed lots of dead code after some recent conc mark changes. Reviewed-by: brutisso, johnc
author tonyp
date Thu, 05 Apr 2012 13:57:23 -0400
parents 500023bd0818
children 5c86f8211d1e
comparison
equal deleted inserted replaced
5987:748051fd24ce 5988:2a0172480595
138 _all_yield_times_ms(new NumberSeq()), 138 _all_yield_times_ms(new NumberSeq()),
139 139
140 _summary(new Summary()), 140 _summary(new Summary()),
141 141
142 _cur_clear_ct_time_ms(0.0), 142 _cur_clear_ct_time_ms(0.0),
143 _mark_closure_time_ms(0.0),
144 _root_region_scan_wait_time_ms(0.0), 143 _root_region_scan_wait_time_ms(0.0),
145 144
146 _cur_ref_proc_time_ms(0.0), 145 _cur_ref_proc_time_ms(0.0),
147 _cur_ref_enq_time_ms(0.0), 146 _cur_ref_enq_time_ms(0.0),
148 147
942 for (int i = 0; i < _aux_num; ++i) { 941 for (int i = 0; i < _aux_num; ++i) {
943 _cur_aux_times_ms[i] = 0.0; 942 _cur_aux_times_ms[i] = 0.0;
944 _cur_aux_times_set[i] = false; 943 _cur_aux_times_set[i] = false;
945 } 944 }
946 945
947 // This is initialized to zero here and is set during
948 // the evacuation pause if marking is in progress.
949 _cur_satb_drain_time_ms = 0.0;
950 // This is initialized to zero here and is set during the evacuation 946 // This is initialized to zero here and is set during the evacuation
951 // pause if we actually waited for the root region scanning to finish. 947 // pause if we actually waited for the root region scanning to finish.
952 _root_region_scan_wait_time_ms = 0.0; 948 _root_region_scan_wait_time_ms = 0.0;
953 949
954 _last_gc_was_young = false; 950 _last_gc_was_young = false;
1244 scan_rs_time + 1240 scan_rs_time +
1245 obj_copy_time; 1241 obj_copy_time;
1246 1242
1247 double other_time_ms = elapsed_ms; 1243 double other_time_ms = elapsed_ms;
1248 1244
1249 // Subtract the SATB drain time. It's initialized to zero at the
1250 // start of the pause and is updated during the pause if marking
1251 // is in progress.
1252 other_time_ms -= _cur_satb_drain_time_ms;
1253
1254 // Subtract the root region scanning wait time. It's initialized to 1245 // Subtract the root region scanning wait time. It's initialized to
1255 // zero at the start of the pause. 1246 // zero at the start of the pause.
1256 other_time_ms -= _root_region_scan_wait_time_ms; 1247 other_time_ms -= _root_region_scan_wait_time_ms;
1257 1248
1258 if (parallel) { 1249 if (parallel) {
1266 1257
1267 // Subtract the time taken to clean the card table from the 1258 // Subtract the time taken to clean the card table from the
1268 // current value of "other time" 1259 // current value of "other time"
1269 other_time_ms -= _cur_clear_ct_time_ms; 1260 other_time_ms -= _cur_clear_ct_time_ms;
1270 1261
1271 // Subtract the time spent completing marking in the collection
1272 // set. Note if marking is not in progress during the pause
1273 // the value of _mark_closure_time_ms will be zero.
1274 other_time_ms -= _mark_closure_time_ms;
1275
1276 // TraceGen0Time and TraceGen1Time summary info updating. 1262 // TraceGen0Time and TraceGen1Time summary info updating.
1277 _all_pause_times_ms->add(elapsed_ms); 1263 _all_pause_times_ms->add(elapsed_ms);
1278 1264
1279 if (update_stats) { 1265 if (update_stats) {
1280 _summary->record_total_time_ms(elapsed_ms); 1266 _summary->record_total_time_ms(elapsed_ms);
1281 _summary->record_other_time_ms(other_time_ms); 1267 _summary->record_other_time_ms(other_time_ms);
1282 1268
1283 MainBodySummary* body_summary = _summary->main_body_summary(); 1269 MainBodySummary* body_summary = _summary->main_body_summary();
1284 assert(body_summary != NULL, "should not be null!"); 1270 assert(body_summary != NULL, "should not be null!");
1285 1271
1286 // This will be non-zero iff marking is currently in progress (i.e.
1287 // _g1->mark_in_progress() == true) and the currrent pause was not
1288 // an initial mark pause. Since the body_summary items are NumberSeqs,
1289 // however, they have to be consistent and updated in lock-step with
1290 // each other. Therefore we unconditionally record the SATB drain
1291 // time - even if it's zero.
1292 body_summary->record_satb_drain_time_ms(_cur_satb_drain_time_ms);
1293 body_summary->record_root_region_scan_wait_time_ms( 1272 body_summary->record_root_region_scan_wait_time_ms(
1294 _root_region_scan_wait_time_ms); 1273 _root_region_scan_wait_time_ms);
1295
1296 body_summary->record_ext_root_scan_time_ms(ext_root_scan_time); 1274 body_summary->record_ext_root_scan_time_ms(ext_root_scan_time);
1297 body_summary->record_satb_filtering_time_ms(satb_filtering_time); 1275 body_summary->record_satb_filtering_time_ms(satb_filtering_time);
1298 body_summary->record_update_rs_time_ms(update_rs_time); 1276 body_summary->record_update_rs_time_ms(update_rs_time);
1299 body_summary->record_scan_rs_time_ms(scan_rs_time); 1277 body_summary->record_scan_rs_time_ms(scan_rs_time);
1300 body_summary->record_obj_copy_time_ms(obj_copy_time); 1278 body_summary->record_obj_copy_time_ms(obj_copy_time);
1306 double parallel_known_time = known_time + termination_time; 1284 double parallel_known_time = known_time + termination_time;
1307 double parallel_other_time = _cur_collection_par_time_ms - parallel_known_time; 1285 double parallel_other_time = _cur_collection_par_time_ms - parallel_known_time;
1308 body_summary->record_parallel_other_time_ms(parallel_other_time); 1286 body_summary->record_parallel_other_time_ms(parallel_other_time);
1309 } 1287 }
1310 1288
1311 body_summary->record_mark_closure_time_ms(_mark_closure_time_ms);
1312 body_summary->record_clear_ct_time_ms(_cur_clear_ct_time_ms); 1289 body_summary->record_clear_ct_time_ms(_cur_clear_ct_time_ms);
1313 1290
1314 // We exempt parallel collection from this check because Alloc Buffer 1291 // We exempt parallel collection from this check because Alloc Buffer
1315 // fragmentation can produce negative collections. Same with evac 1292 // fragmentation can produce negative collections. Same with evac
1316 // failure. 1293 // failure.
1432 print_stats(2, "Processed Buffers", (int)update_rs_processed_buffers); 1409 print_stats(2, "Processed Buffers", (int)update_rs_processed_buffers);
1433 print_stats(1, "Scan RS", scan_rs_time); 1410 print_stats(1, "Scan RS", scan_rs_time);
1434 print_stats(1, "Object Copying", obj_copy_time); 1411 print_stats(1, "Object Copying", obj_copy_time);
1435 } 1412 }
1436 print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms); 1413 print_stats(1, "Code Root Fixup", _cur_collection_code_root_fixup_time_ms);
1437 if (print_marking_info) {
1438 print_stats(1, "Complete CSet Marking", _mark_closure_time_ms);
1439 }
1440 print_stats(1, "Clear CT", _cur_clear_ct_time_ms); 1414 print_stats(1, "Clear CT", _cur_clear_ct_time_ms);
1441 #ifndef PRODUCT 1415 #ifndef PRODUCT
1442 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms); 1416 print_stats(1, "Cur Clear CC", _cur_clear_cc_time_ms);
1443 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms); 1417 print_stats(1, "Cum Clear CC", _cum_clear_cc_time_ms);
1444 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms); 1418 print_stats(1, "Min Clear CC", _min_clear_cc_time_ms);
1582 _cost_per_byte_ms_seq->add(cost_per_byte_ms); 1556 _cost_per_byte_ms_seq->add(cost_per_byte_ms);
1583 } 1557 }
1584 } 1558 }
1585 1559
1586 double all_other_time_ms = pause_time_ms - 1560 double all_other_time_ms = pause_time_ms -
1587 (update_rs_time + scan_rs_time + obj_copy_time + 1561 (update_rs_time + scan_rs_time + obj_copy_time + termination_time);
1588 _mark_closure_time_ms + termination_time);
1589 1562
1590 double young_other_time_ms = 0.0; 1563 double young_other_time_ms = 0.0;
1591 if (young_cset_region_length() > 0) { 1564 if (young_cset_region_length() > 0) {
1592 young_other_time_ms = 1565 young_other_time_ms =
1593 _recorded_young_cset_choice_time_ms + 1566 _recorded_young_cset_choice_time_ms +
1708 dcqs.set_completed_queue_padding(curr_queue_size); 1681 dcqs.set_completed_queue_padding(curr_queue_size);
1709 } else { 1682 } else {
1710 dcqs.set_completed_queue_padding(0); 1683 dcqs.set_completed_queue_padding(0);
1711 } 1684 }
1712 dcqs.notify_if_necessary(); 1685 dcqs.notify_if_necessary();
1713 }
1714
1715 double
1716 G1CollectorPolicy::
1717 predict_young_collection_elapsed_time_ms(size_t adjustment) {
1718 guarantee( adjustment == 0 || adjustment == 1, "invariant" );
1719
1720 G1CollectedHeap* g1h = G1CollectedHeap::heap();
1721 size_t young_num = g1h->young_list()->length();
1722 if (young_num == 0)
1723 return 0.0;
1724
1725 young_num += adjustment;
1726 size_t pending_cards = predict_pending_cards();
1727 size_t rs_lengths = g1h->young_list()->sampled_rs_lengths() +
1728 predict_rs_length_diff();
1729 size_t card_num;
1730 if (gcs_are_young()) {
1731 card_num = predict_young_card_num(rs_lengths);
1732 } else {
1733 card_num = predict_non_young_card_num(rs_lengths);
1734 }
1735 size_t young_byte_size = young_num * HeapRegion::GrainBytes;
1736 double accum_yg_surv_rate =
1737 _short_lived_surv_rate_group->accum_surv_rate(adjustment);
1738
1739 size_t bytes_to_copy =
1740 (size_t) (accum_yg_surv_rate * (double) HeapRegion::GrainBytes);
1741
1742 return
1743 predict_rs_update_time_ms(pending_cards) +
1744 predict_rs_scan_time_ms(card_num) +
1745 predict_object_copy_time_ms(bytes_to_copy) +
1746 predict_young_other_time_ms(young_num) +
1747 predict_constant_other_time_ms();
1748 } 1686 }
1749 1687
1750 double 1688 double
1751 G1CollectorPolicy::predict_base_elapsed_time_ms(size_t pending_cards) { 1689 G1CollectorPolicy::predict_base_elapsed_time_ms(size_t pending_cards) {
1752 size_t rs_length = predict_rs_length_diff(); 1690 size_t rs_length = predict_rs_length_diff();
1978 print_summary(1, "Update RS", body_summary->get_update_rs_seq()); 1916 print_summary(1, "Update RS", body_summary->get_update_rs_seq());
1979 print_summary(1, "Scan RS", body_summary->get_scan_rs_seq()); 1917 print_summary(1, "Scan RS", body_summary->get_scan_rs_seq());
1980 print_summary(1, "Object Copy", body_summary->get_obj_copy_seq()); 1918 print_summary(1, "Object Copy", body_summary->get_obj_copy_seq());
1981 } 1919 }
1982 } 1920 }
1983 print_summary(1, "Mark Closure", body_summary->get_mark_closure_seq());
1984 print_summary(1, "Clear CT", body_summary->get_clear_ct_seq()); 1921 print_summary(1, "Clear CT", body_summary->get_clear_ct_seq());
1985 print_summary(1, "Other", summary->get_other_seq()); 1922 print_summary(1, "Other", summary->get_other_seq());
1986 { 1923 {
1987 if (body_summary != NULL) { 1924 if (body_summary != NULL) {
1988 NumberSeq calc_other_times_ms; 1925 NumberSeq calc_other_times_ms;
1989 if (parallel) { 1926 if (parallel) {
1990 // parallel 1927 // parallel
1991 NumberSeq* other_parts[] = { 1928 NumberSeq* other_parts[] = {
1992 body_summary->get_satb_drain_seq(),
1993 body_summary->get_root_region_scan_wait_seq(), 1929 body_summary->get_root_region_scan_wait_seq(),
1994 body_summary->get_parallel_seq(), 1930 body_summary->get_parallel_seq(),
1995 body_summary->get_clear_ct_seq() 1931 body_summary->get_clear_ct_seq()
1996 }; 1932 };
1997 calc_other_times_ms = NumberSeq(summary->get_total_seq(), 1933 calc_other_times_ms = NumberSeq(summary->get_total_seq(),
1998 4, other_parts); 1934 3, other_parts);
1999 } else { 1935 } else {
2000 // serial 1936 // serial
2001 NumberSeq* other_parts[] = { 1937 NumberSeq* other_parts[] = {
2002 body_summary->get_satb_drain_seq(),
2003 body_summary->get_root_region_scan_wait_seq(), 1938 body_summary->get_root_region_scan_wait_seq(),
2004 body_summary->get_update_rs_seq(), 1939 body_summary->get_update_rs_seq(),
2005 body_summary->get_ext_root_scan_seq(), 1940 body_summary->get_ext_root_scan_seq(),
2006 body_summary->get_satb_filtering_seq(), 1941 body_summary->get_satb_filtering_seq(),
2007 body_summary->get_scan_rs_seq(), 1942 body_summary->get_scan_rs_seq(),
2008 body_summary->get_obj_copy_seq() 1943 body_summary->get_obj_copy_seq()
2009 }; 1944 };
2010 calc_other_times_ms = NumberSeq(summary->get_total_seq(), 1945 calc_other_times_ms = NumberSeq(summary->get_total_seq(),
2011 7, other_parts); 1946 6, other_parts);
2012 } 1947 }
2013 check_other_times(1, summary->get_other_seq(), &calc_other_times_ms); 1948 check_other_times(1, summary->get_other_seq(), &calc_other_times_ms);
2014 } 1949 }
2015 } 1950 }
2016 } else { 1951 } else {