comparison src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp @ 1394:1316cec51b4d

6819061: G1: eliminate serial Other times that are proportional to the collection set length 6871109: G1: remove the concept of the scan only prefix Summary: Removed scan only regions and associated code. The young portion of the collection set is now constructed incrementally - when a young region is retired as the current allocation region it is added to the collection set. Reviewed-by: apetrusenko, iveresov, tonyp
author johnc
date Thu, 22 Apr 2010 10:02:38 -0700
parents b81f3572f355
children c18cbe5936b8
comparison
equal deleted inserted replaced
1393:6ecb6e6de3d6 1394:1316cec51b4d
1 /* 1 /*
2 * Copyright 2001-2009 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 2001-2010 Sun Microsystems, Inc. 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.
67 void ConcurrentG1RefineThread::sample_young_list_rs_lengths() { 67 void ConcurrentG1RefineThread::sample_young_list_rs_lengths() {
68 G1CollectedHeap* g1h = G1CollectedHeap::heap(); 68 G1CollectedHeap* g1h = G1CollectedHeap::heap();
69 G1CollectorPolicy* g1p = g1h->g1_policy(); 69 G1CollectorPolicy* g1p = g1h->g1_policy();
70 if (g1p->adaptive_young_list_length()) { 70 if (g1p->adaptive_young_list_length()) {
71 int regions_visited = 0; 71 int regions_visited = 0;
72 g1h->young_list_rs_length_sampling_init(); 72 g1h->young_list()->rs_length_sampling_init();
73 while (g1h->young_list_rs_length_sampling_more()) { 73 while (g1h->young_list()->rs_length_sampling_more()) {
74 g1h->young_list_rs_length_sampling_next(); 74 g1h->young_list()->rs_length_sampling_next();
75 ++regions_visited; 75 ++regions_visited;
76 76
77 // we try to yield every time we visit 10 regions 77 // we try to yield every time we visit 10 regions
78 if (regions_visited == 10) { 78 if (regions_visited == 10) {
79 if (_sts.should_yield()) { 79 if (_sts.should_yield()) {
160 wait_for_universe_init(); 160 wait_for_universe_init();
161 161
162 if (_worker_id >= cg1r()->worker_thread_num()) { 162 if (_worker_id >= cg1r()->worker_thread_num()) {
163 run_young_rs_sampling(); 163 run_young_rs_sampling();
164 terminate(); 164 terminate();
165 return;
165 } 166 }
166 167
167 _vtime_start = os::elapsedVTime(); 168 _vtime_start = os::elapsedVTime();
168 while (!_should_terminate) { 169 while (!_should_terminate) {
169 DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); 170 DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();