15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/concurrentG1Refine.hpp"
27 #include "gc/g1/concurrentG1RefineThread.hpp"
28 #include "gc/g1/g1BlockOffsetTable.inline.hpp"
29 #include "gc/g1/g1CollectedHeap.inline.hpp"
30 #include "gc/g1/g1CollectorPolicy.hpp"
31 #include "gc/g1/g1GCPhaseTimes.hpp"
32 #include "gc/g1/g1HotCardCache.hpp"
33 #include "gc/g1/g1OopClosures.inline.hpp"
34 #include "gc/g1/g1RemSet.inline.hpp"
35 #include "gc/g1/heapRegionManager.inline.hpp"
36 #include "gc/g1/heapRegionRemSet.hpp"
37 #include "memory/iterator.hpp"
38 #include "oops/oop.inline.hpp"
39 #include "utilities/globalDefinitions.hpp"
40 #include "utilities/intHisto.hpp"
41 #include "utilities/stack.inline.hpp"
42
43 G1RemSet::G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs)
44 : _g1(g1), _conc_refine_cards(0),
45 _ct_bs(ct_bs), _g1p(_g1->g1_policy()),
46 _cg1r(g1->concurrent_g1_refine()),
47 _cset_rs_update_cl(NULL),
48 _prev_period_summary(),
49 _into_cset_dirty_card_queue_set(false)
50 {
51 _cset_rs_update_cl = NEW_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, n_workers(), mtGC);
52 for (uint i = 0; i < n_workers(); i++) {
53 _cset_rs_update_cl[i] = NULL;
54 }
55 if (log_is_enabled(Trace, gc, remset)) {
56 _prev_period_summary.initialize(this);
57 }
58 // Initialize the card queue set used to hold cards containing
59 // references into the collection set.
60 _into_cset_dirty_card_queue_set.initialize(NULL, // Should never be called by the Java code
61 DirtyCardQ_CBL_mon,
62 DirtyCardQ_FL_lock,
63 -1, // never trigger processing
64 -1, // no limit on length
65 Shared_DirtyCardQ_lock,
|
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/concurrentG1Refine.hpp"
27 #include "gc/g1/concurrentG1RefineThread.hpp"
28 #include "gc/g1/g1BlockOffsetTable.inline.hpp"
29 #include "gc/g1/g1CollectedHeap.inline.hpp"
30 #include "gc/g1/g1CollectorPolicy.hpp"
31 #include "gc/g1/g1GCPhaseTimes.hpp"
32 #include "gc/g1/g1HotCardCache.hpp"
33 #include "gc/g1/g1OopClosures.inline.hpp"
34 #include "gc/g1/g1RemSet.inline.hpp"
35 #include "gc/g1/heapRegion.inline.hpp"
36 #include "gc/g1/heapRegionManager.inline.hpp"
37 #include "gc/g1/heapRegionRemSet.hpp"
38 #include "memory/iterator.hpp"
39 #include "oops/oop.inline.hpp"
40 #include "utilities/globalDefinitions.hpp"
41 #include "utilities/intHisto.hpp"
42 #include "utilities/stack.inline.hpp"
43
44 G1RemSet::G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs) :
45 _g1(g1),
46 _conc_refine_cards(0),
47 _ct_bs(ct_bs),
48 _g1p(_g1->g1_policy()),
49 _cg1r(g1->concurrent_g1_refine()),
50 _cset_rs_update_cl(NULL),
51 _prev_period_summary(),
52 _into_cset_dirty_card_queue_set(false)
53 {
54 _cset_rs_update_cl = NEW_C_HEAP_ARRAY(G1ParPushHeapRSClosure*, n_workers(), mtGC);
55 for (uint i = 0; i < n_workers(); i++) {
56 _cset_rs_update_cl[i] = NULL;
57 }
58 if (log_is_enabled(Trace, gc, remset)) {
59 _prev_period_summary.initialize(this);
60 }
61 // Initialize the card queue set used to hold cards containing
62 // references into the collection set.
63 _into_cset_dirty_card_queue_set.initialize(NULL, // Should never be called by the Java code
64 DirtyCardQ_CBL_mon,
65 DirtyCardQ_FL_lock,
66 -1, // never trigger processing
67 -1, // no limit on length
68 Shared_DirtyCardQ_lock,
|