annotate src/share/vm/gc_implementation/g1/heapRegionSet.inline.hpp @ 4837:eff609af17d7

7127706: G1: re-enable survivors during the initial-mark pause Summary: Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned. Reviewed-by: brutisso, johnc
author tonyp
date Wed, 25 Jan 2012 12:58:23 -0500
parents 3be7439273c5
children 720b6a76dd9d
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 /*
3860
3be7439273c5 7044486: open jdk repos have files with incorrect copyright headers, which can end up in src bundles
katleman
parents: 2432
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
2152
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 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSET_INLINE_HPP
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSET_INLINE_HPP
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
27
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
28 #include "gc_implementation/g1/heapRegionSet.hpp"
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
29
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
30 //////////////////// HeapRegionSetBase ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
31
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
32 inline void HeapRegionSetBase::update_for_addition(HeapRegion* hr) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
33 // Assumes the caller has already verified the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
34
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
35 _length += 1;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
36 if (!hr->isHumongous()) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
37 _region_num += 1;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
38 } else {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
39 _region_num += calculate_region_num(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
40 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
41 _total_used_bytes += hr->used();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
42 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
43
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
44 inline void HeapRegionSetBase::add_internal(HeapRegion* hr) {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
45 hrs_assert_region_ok(this, hr, NULL);
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
46 assert(hr->next() == NULL, hrs_ext_msg(this, "should not already be linked"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
47
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
48 update_for_addition(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
49 hr->set_containing_set(this);
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
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
52 inline void HeapRegionSetBase::update_for_removal(HeapRegion* hr) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
53 // Assumes the caller has already verified the region.
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
54 assert(_length > 0, hrs_ext_msg(this, "pre-condition"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
55 _length -= 1;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
56
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
57 size_t region_num_diff;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
58 if (!hr->isHumongous()) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
59 region_num_diff = 1;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
60 } else {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
61 region_num_diff = calculate_region_num(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
62 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
63 assert(region_num_diff <= _region_num,
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
64 hrs_err_msg("[%s] region's region num: "SIZE_FORMAT" "
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
65 "should be <= region num: "SIZE_FORMAT,
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
66 name(), region_num_diff, _region_num));
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
67 _region_num -= region_num_diff;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
68
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
69 size_t used_bytes = hr->used();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
70 assert(used_bytes <= _total_used_bytes,
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
71 hrs_err_msg("[%s] region's used bytes: "SIZE_FORMAT" "
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
72 "should be <= used bytes: "SIZE_FORMAT,
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
73 name(), used_bytes, _total_used_bytes));
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
74 _total_used_bytes -= used_bytes;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
75 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
76
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
77 inline void HeapRegionSetBase::remove_internal(HeapRegion* hr) {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
78 hrs_assert_region_ok(this, hr, this);
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
79 assert(hr->next() == NULL, hrs_ext_msg(this, "should already be unlinked"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
80
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
81 hr->set_containing_set(NULL);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
82 update_for_removal(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
83 }
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 //////////////////// HeapRegionSet ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
86
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
87 inline void HeapRegionSet::add(HeapRegion* hr) {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
88 hrs_assert_mt_safety_ok(this);
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
89 // add_internal() will verify the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
90 add_internal(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
91 }
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 inline void HeapRegionSet::remove(HeapRegion* hr) {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
94 hrs_assert_mt_safety_ok(this);
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
95 // remove_internal() will verify the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
96 remove_internal(hr);
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
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
99 inline void HeapRegionSet::remove_with_proxy(HeapRegion* hr,
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
100 HeapRegionSet* proxy_set) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
101 // No need to fo the MT safety check here given that this method
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
102 // does not update the contents of the set but instead accumulates
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
103 // the changes in proxy_set which is assumed to be thread-local.
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
104 hrs_assert_sets_match(this, proxy_set);
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
105 hrs_assert_region_ok(this, hr, this);
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
106
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
107 hr->set_containing_set(NULL);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
108 proxy_set->update_for_addition(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
109 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
110
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
111 //////////////////// HeapRegionLinkedList ////////////////////
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
112
2432
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
113 inline void HeapRegionLinkedList::add_as_head(HeapRegion* hr) {
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
114 hrs_assert_mt_safety_ok(this);
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
115 assert((length() == 0 && _head == NULL && _tail == NULL) ||
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
116 (length() > 0 && _head != NULL && _tail != NULL),
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
117 hrs_ext_msg(this, "invariant"));
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
118 // add_internal() will verify the region.
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
119 add_internal(hr);
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
120
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
121 // Now link the region.
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
122 if (_head != NULL) {
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
123 hr->set_next(_head);
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
124 } else {
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
125 _tail = hr;
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
126 }
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
127 _head = hr;
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
128 }
455328d90876 7029458: G1: Add newly-reclaimed regions to the beginning of the region free list, not the end
tonyp
parents: 2361
diff changeset
129
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
130 inline void HeapRegionLinkedList::add_as_tail(HeapRegion* hr) {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
131 hrs_assert_mt_safety_ok(this);
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
132 assert((length() == 0 && _head == NULL && _tail == NULL) ||
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
133 (length() > 0 && _head != NULL && _tail != NULL),
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
134 hrs_ext_msg(this, "invariant"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
135 // add_internal() will verify the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
136 add_internal(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
137
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
138 // Now link the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
139 if (_tail != NULL) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
140 _tail->set_next(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
141 } else {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
142 _head = hr;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
143 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
144 _tail = hr;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
145 }
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 inline HeapRegion* HeapRegionLinkedList::remove_head() {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
148 hrs_assert_mt_safety_ok(this);
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
149 assert(!is_empty(), hrs_ext_msg(this, "the list should not be empty"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
150 assert(length() > 0 && _head != NULL && _tail != NULL,
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
151 hrs_ext_msg(this, "invariant"));
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
153 // We need to unlink it first.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
154 HeapRegion* hr = _head;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
155 _head = hr->next();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
156 if (_head == NULL) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
157 _tail = NULL;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
158 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
159 hr->set_next(NULL);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
160
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
161 // remove_internal() will verify the region.
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
162 remove_internal(hr);
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
163 return hr;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
164 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
165
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
166 inline HeapRegion* HeapRegionLinkedList::remove_head_or_null() {
2361
1216415d8e35 7014923: G1: code cleanup
tonyp
parents: 2152
diff changeset
167 hrs_assert_mt_safety_ok(this);
2152
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
168
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
169 if (!is_empty()) {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
170 return remove_head();
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
171 } else {
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
172 return NULL;
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
173 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
174 }
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
175
0fa27f37d4d4 6977804: G1: remove the zero-filling thread
tonyp
parents:
diff changeset
176 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSET_INLINE_HPP