annotate src/share/vm/gc_implementation/g1/heapRegionSets.cpp @ 8733:9def4075da6d

8008079: G1: Add nextObject routine to CMBitMapRO and replace nextWord Summary: Update the task local finger to the start of the next object when marking aborts, in order to avoid the redundant scanning of all 0's when the marking task restarts, if otherwise updating to the next word. In addition, reuse the routine nextObject() in routine iterate(). Reviewed-by: johnc, ysr Contributed-by: tamao <tao.mao@oracle.com>
author tamao
date Tue, 05 Mar 2013 15:36:56 -0800
parents 8aae2050e83e
children 58fc1b1523dc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
1 /*
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
4 *
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
7 * published by the Free Software Foundation.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
8 *
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
13 * accompanied this code).
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
14 *
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
18 *
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
21 * questions.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
22 *
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
23 */
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
24
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
25 #include "precompiled.hpp"
3777
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
26 #include "gc_implementation/g1/heapRegionRemSet.hpp"
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
27 #include "gc_implementation/g1/heapRegionSets.hpp"
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
28
4072
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
29 // Note on the check_mt_safety() methods below:
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
30 //
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
31 // Verification of the "master" heap region sets / lists that are
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
32 // maintained by G1CollectedHeap is always done during a STW pause and
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
33 // by the VM thread at the start / end of the pause. The standard
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
34 // verification methods all assert check_mt_safety(). This is
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
35 // important as it ensures that verification is done without
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
36 // concurrent updates taking place at the same time. It follows, that,
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
37 // for the "master" heap region sets / lists, the check_mt_safety()
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
38 // method should include the VM thread / STW case.
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
39
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
40 //////////////////// FreeRegionList ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
41
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
42 const char* FreeRegionList::verify_region_extra(HeapRegion* hr) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
43 if (hr->is_young()) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
44 return "the region should not be young";
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
45 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
46 // The superclass will check that the region is empty and
4072
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
47 // not humongous.
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
48 return HeapRegionLinkedList::verify_region_extra(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
49 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
50
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
51 //////////////////// MasterFreeRegionList ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
52
3777
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
53 const char* MasterFreeRegionList::verify_region_extra(HeapRegion* hr) {
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
54 // We should reset the RSet for parallel iteration before we add it
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
55 // to the master free list so that it is ready when the region is
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
56 // re-allocated.
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
57 if (!hr->rem_set()->verify_ready_for_par_iteration()) {
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
58 return "the region's RSet should be ready for parallel iteration";
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
59 }
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
60 return FreeRegionList::verify_region_extra(hr);
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
61 }
e8b0b0392037 7046182: G1: remove unnecessary iterations over the collection set
tonyp
parents: 2361
diff changeset
62
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
63 bool MasterFreeRegionList::check_mt_safety() {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
64 // Master Free List MT safety protocol:
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
65 // (a) If we're at a safepoint, operations on the master free list
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
66 // should be invoked by either the VM thread (which will serialize
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
67 // them) or by the GC workers while holding the
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
68 // FreeList_lock.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
69 // (b) If we're not at a safepoint, operations on the master free
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
70 // list should be invoked while holding the Heap_lock.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
71
4072
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
72 if (SafepointSynchronize::is_at_safepoint()) {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
73 guarantee(Thread::current()->is_VM_thread() ||
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
74 FreeList_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
75 hrs_ext_msg(this, "master free list MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
76 "at a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
77 } else {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
78 guarantee(Heap_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
79 hrs_ext_msg(this, "master free list MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
80 "outside a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
81 }
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
82
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
83 return FreeRegionList::check_mt_safety();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
84 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
85
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
86 //////////////////// SecondaryFreeRegionList ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
87
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
88 bool SecondaryFreeRegionList::check_mt_safety() {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
89 // Secondary Free List MT safety protocol:
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
90 // Operations on the secondary free list should always be invoked
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
91 // while holding the SecondaryFreeList_lock.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
92
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
93 guarantee(SecondaryFreeList_lock->owned_by_self(),
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
94 hrs_ext_msg(this, "secondary free list MT safety protocol"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
95
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
96 return FreeRegionList::check_mt_safety();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
97 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
98
4072
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
99 //////////////////// OldRegionSet ////////////////////
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
100
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
101 const char* OldRegionSet::verify_region_extra(HeapRegion* hr) {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
102 if (hr->is_young()) {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
103 return "the region should not be young";
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
104 }
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
105 // The superclass will check that the region is not empty and not
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
106 // humongous.
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
107 return HeapRegionSet::verify_region_extra(hr);
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
108 }
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
109
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
110 //////////////////// MasterOldRegionSet ////////////////////
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
111
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
112 bool MasterOldRegionSet::check_mt_safety() {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
113 // Master Old Set MT safety protocol:
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
114 // (a) If we're at a safepoint, operations on the master old set
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
115 // should be invoked:
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
116 // - by the VM thread (which will serialize them), or
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
117 // - by the GC workers while holding the FreeList_lock, if we're
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
118 // at a safepoint for an evacuation pause (this lock is taken
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
119 // anyway when an GC alloc region is retired so that a new one
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
120 // is allocated from the free list), or
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
121 // - by the GC workers while holding the OldSets_lock, if we're at a
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
122 // safepoint for a cleanup pause.
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
123 // (b) If we're not at a safepoint, operations on the master old set
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
124 // should be invoked while holding the Heap_lock.
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
125
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
126 if (SafepointSynchronize::is_at_safepoint()) {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
127 guarantee(Thread::current()->is_VM_thread() ||
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
128 _phase == HRSPhaseEvacuation && FreeList_lock->owned_by_self() ||
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
129 _phase == HRSPhaseCleanup && OldSets_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
130 hrs_ext_msg(this, "master old set MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
131 "at a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
132 } else {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
133 guarantee(Heap_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
134 hrs_ext_msg(this, "master old set MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
135 "outside a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
136 }
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
137
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
138 return OldRegionSet::check_mt_safety();
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
139 }
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
140
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
141 //////////////////// HumongousRegionSet ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
142
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
143 const char* HumongousRegionSet::verify_region_extra(HeapRegion* hr) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
144 if (hr->is_young()) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
145 return "the region should not be young";
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
146 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
147 // The superclass will check that the region is not empty and
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
148 // humongous.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
149 return HeapRegionSet::verify_region_extra(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
150 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
151
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
152 //////////////////// MasterHumongousRegionSet ////////////////////
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
153
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
154 bool MasterHumongousRegionSet::check_mt_safety() {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
155 // Master Humongous Set MT safety protocol:
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
156 // (a) If we're at a safepoint, operations on the master humongous
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
157 // set should be invoked by either the VM thread (which will
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
158 // serialize them) or by the GC workers while holding the
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
159 // OldSets_lock.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
160 // (b) If we're not at a safepoint, operations on the master
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
161 // humongous set should be invoked while holding the Heap_lock.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
162
4072
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
163 if (SafepointSynchronize::is_at_safepoint()) {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
164 guarantee(Thread::current()->is_VM_thread() ||
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
165 OldSets_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
166 hrs_ext_msg(this, "master humongous set MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
167 "at a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
168 } else {
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
169 guarantee(Heap_lock->owned_by_self(),
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
170 hrs_ext_msg(this, "master humongous set MT safety protocol "
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
171 "outside a safepoint"));
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
172 }
8aae2050e83e 7092309: G1: introduce old region set
tonyp
parents: 3777
diff changeset
173
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
174 return HumongousRegionSet::check_mt_safety();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
175 }