Mercurial > hg > graal-compiler
annotate src/share/vm/gc_implementation/g1/heapRegion.inline.hpp @ 17833:bfdf528be8e8
8038498: Fix includes and C inlining after 8035330
Summary: Change 8035330: Remove G1ParScanPartialArrayClosure and G1ParScanHeapEvacClosure broke the debug build on AIX. The method do_oop_partial_array() is added in a header, but requires the inline function par_write_ref() through several inlined calls. In some cpp files, like arguments.cpp, par_write_ref() is not defined as the corresponding inline header and is not included. The AIX debug VM does not start because of the missing symbol. This change solves this by cleaning up include dependencies.
Reviewed-by: tschatzl, stefank
author | tschatzl |
---|---|
date | Fri, 04 Apr 2014 10:43:56 +0200 |
parents | 8a2e5a6a19a4 |
children | 9441d22e429a |
rev | line source |
---|---|
342 | 1 /* |
4787
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. |
342 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
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 | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
342
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
342
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
342
diff
changeset
|
21 * questions. |
342 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP |
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP | |
27 | |
342 | 28 inline HeapWord* G1OffsetTableContigSpace::allocate(size_t size) { |
29 HeapWord* res = ContiguousSpace::allocate(size); | |
30 if (res != NULL) { | |
31 _offsets.alloc_block(res, size); | |
32 } | |
33 return res; | |
34 } | |
35 | |
36 // Because of the requirement of keeping "_offsets" up to date with the | |
37 // allocations, we sequentialize these with a lock. Therefore, best if | |
38 // this is used for larger LAB allocations only. | |
39 inline HeapWord* G1OffsetTableContigSpace::par_allocate(size_t size) { | |
40 MutexLocker x(&_par_alloc_lock); | |
2433
abdfc822206f
7023069: G1: Introduce symmetric locking in the slow allocation path
tonyp
parents:
1972
diff
changeset
|
41 // Given that we take the lock no need to use par_allocate() here. |
abdfc822206f
7023069: G1: Introduce symmetric locking in the slow allocation path
tonyp
parents:
1972
diff
changeset
|
42 HeapWord* res = ContiguousSpace::allocate(size); |
342 | 43 if (res != NULL) { |
44 _offsets.alloc_block(res, size); | |
45 } | |
46 return res; | |
47 } | |
48 | |
49 inline HeapWord* G1OffsetTableContigSpace::block_start(const void* p) { | |
50 return _offsets.block_start(p); | |
51 } | |
52 | |
53 inline HeapWord* | |
54 G1OffsetTableContigSpace::block_start_const(const void* p) const { | |
55 return _offsets.block_start_const(p); | |
56 } | |
1972 | 57 |
4787
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
58 inline void HeapRegion::note_start_of_marking() { |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
59 _next_marked_bytes = 0; |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
60 _next_top_at_mark_start = top(); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
61 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
62 |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
63 inline void HeapRegion::note_end_of_marking() { |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
64 _prev_top_at_mark_start = _next_top_at_mark_start; |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
65 _prev_marked_bytes = _next_marked_bytes; |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
66 _next_marked_bytes = 0; |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
67 |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
68 assert(_prev_marked_bytes <= |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
69 (size_t) pointer_delta(prev_top_at_mark_start(), bottom()) * |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
70 HeapWordSize, "invariant"); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
71 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
72 |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
73 inline void HeapRegion::note_start_of_copying(bool during_initial_mark) { |
4837
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
74 if (is_survivor()) { |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
75 // This is how we always allocate survivors. |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
76 assert(_next_top_at_mark_start == bottom(), "invariant"); |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
77 } else { |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
78 if (during_initial_mark) { |
4787
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
79 // During initial-mark we'll explicitly mark any objects on old |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
80 // regions that are pointed to by roots. Given that explicit |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
81 // marks only make sense under NTAMS it'd be nice if we could |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
82 // check that condition if we wanted to. Given that we don't |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
83 // know where the top of this region will end up, we simply set |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
84 // NTAMS to the end of the region so all marks will be below |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
85 // NTAMS. We'll set it to the actual top when we retire this region. |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
86 _next_top_at_mark_start = end(); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
87 } else { |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
88 // We could have re-used this old region as to-space over a |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
89 // couple of GCs since the start of the concurrent marking |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
90 // cycle. This means that [bottom,NTAMS) will contain objects |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
91 // copied up to and including initial-mark and [NTAMS, top) |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
92 // will contain objects copied during the concurrent marking cycle. |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
93 assert(top() >= _next_top_at_mark_start, "invariant"); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
94 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
95 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
96 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
97 |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
98 inline void HeapRegion::note_end_of_copying(bool during_initial_mark) { |
4837
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
99 if (is_survivor()) { |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
100 // This is how we always allocate survivors. |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
101 assert(_next_top_at_mark_start == bottom(), "invariant"); |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
102 } else { |
eff609af17d7
7127706: G1: re-enable survivors during the initial-mark pause
tonyp
parents:
4787
diff
changeset
|
103 if (during_initial_mark) { |
4787
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
104 // See the comment for note_start_of_copying() for the details |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
105 // on this. |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
106 assert(_next_top_at_mark_start == end(), "pre-condition"); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
107 _next_top_at_mark_start = top(); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
108 } else { |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
109 // See the comment for note_start_of_copying() for the details |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
110 // on this. |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
111 assert(top() >= _next_top_at_mark_start, "invariant"); |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
112 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
113 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
114 } |
2ace1c4ee8da
6888336: G1: avoid explicitly marking and pushing objects in survivor spaces
tonyp
parents:
2433
diff
changeset
|
115 |
1972 | 116 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGION_INLINE_HPP |