annotate src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp @ 10185:d50cc62e94ff

8012715: G1: GraphKit accesses PtrQueue::_index as int but is size_t Summary: In graphKit INT operations were generated to access PtrQueue::_index which has type size_t. This is 64 bit on 64-bit machines. No problems occur on little endian machines as long as the index fits into 32 bit, but on big endian machines the upper part is read, which is zero. This leads to unnecessary branches to the slow path in the runtime. Reviewed-by: twisti, johnc Contributed-by: Martin Doerr <martin.doerr@sap.com>
author johnc
date Wed, 24 Apr 2013 14:48:43 -0700
parents 685df3c6f84b
children 7c5a1b62f53d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
1 /*
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
4 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
7 * published by the Free Software Foundation.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
8 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
13 * accompanied this code).
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
14 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
18 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
21 * questions.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
22 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
23 */
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
24
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
25 #ifndef SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
26 #define SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
27
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
28 #include "memory/freeList.hpp"
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
29 #include "gc_implementation/shared/allocationStats.hpp"
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
30
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
31 class CompactibleFreeListSpace;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
32
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
33 // A class for maintaining a free list of Chunk's. The FreeList
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
34 // maintains a the structure of the list (head, tail, etc.) plus
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
35 // statistics for allocations from the list. The links between items
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
36 // are not part of FreeList. The statistics are
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
37 // used to make decisions about coalescing Chunk's when they
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
38 // are swept during collection.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
39 //
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
40 // See the corresponding .cpp file for a description of the specifics
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
41 // for that implementation.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
42
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
43 class Mutex;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
44
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
45 template <class Chunk>
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
46 class AdaptiveFreeList : public FreeList<Chunk> {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
47 friend class CompactibleFreeListSpace;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
48 friend class VMStructs;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
49 // friend class PrintTreeCensusClosure<Chunk, FreeList_t>;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
50
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
51 size_t _hint; // next larger size list with a positive surplus
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
52
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
53 AllocationStats _allocation_stats; // allocation-related statistics
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
54
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
55 public:
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
56
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
57 AdaptiveFreeList();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
58 AdaptiveFreeList(Chunk* fc);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
59
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
60 using FreeList<Chunk>::assert_proper_lock_protection;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
61 #ifdef ASSERT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
62 using FreeList<Chunk>::protecting_lock;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
63 #endif
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
64 using FreeList<Chunk>::count;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
65 using FreeList<Chunk>::size;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
66 using FreeList<Chunk>::verify_chunk_in_free_list;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
67 using FreeList<Chunk>::getFirstNChunksFromList;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
68 using FreeList<Chunk>::print_on;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
69 void return_chunk_at_head(Chunk* fc, bool record_return);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
70 void return_chunk_at_head(Chunk* fc);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
71 void return_chunk_at_tail(Chunk* fc, bool record_return);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
72 void return_chunk_at_tail(Chunk* fc);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
73 using FreeList<Chunk>::return_chunk_at_tail;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
74 using FreeList<Chunk>::remove_chunk;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
75 using FreeList<Chunk>::prepend;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
76 using FreeList<Chunk>::print_labels_on;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
77 using FreeList<Chunk>::get_chunk_at_head;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
78
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
79 // Initialize.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
80 void initialize();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
81
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
82 // Reset the head, tail, hint, and count of a free list.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
83 void reset(size_t hint);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
84
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
85 void assert_proper_lock_protection_work() const PRODUCT_RETURN;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
86
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
87 void print_on(outputStream* st, const char* c = NULL) const;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
88
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
89 size_t hint() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
90 return _hint;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
91 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
92 void set_hint(size_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
93 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
94 assert(v == 0 || size() < v, "Bad hint");
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
95 _hint = v;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
96 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
97
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
98 size_t get_better_size();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
99
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
100 // Accessors for statistics
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
101 void init_statistics(bool split_birth = false);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
102
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
103 AllocationStats* allocation_stats() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
104 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
105 return &_allocation_stats;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
106 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
107
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
108 ssize_t desired() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
109 return _allocation_stats.desired();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
110 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
111 void set_desired(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
112 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
113 _allocation_stats.set_desired(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
114 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
115 void compute_desired(float inter_sweep_current,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
116 float inter_sweep_estimate,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
117 float intra_sweep_estimate) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
118 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
119 _allocation_stats.compute_desired(count(),
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
120 inter_sweep_current,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
121 inter_sweep_estimate,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
122 intra_sweep_estimate);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
123 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
124 ssize_t coal_desired() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
125 return _allocation_stats.coal_desired();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
126 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
127 void set_coal_desired(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
128 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
129 _allocation_stats.set_coal_desired(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
130 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
131
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
132 ssize_t surplus() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
133 return _allocation_stats.surplus();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
134 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
135 void set_surplus(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
136 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
137 _allocation_stats.set_surplus(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
138 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
139 void increment_surplus() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
140 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
141 _allocation_stats.increment_surplus();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
142 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
143 void decrement_surplus() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
144 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
145 _allocation_stats.decrement_surplus();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
146 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
147
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
148 ssize_t bfr_surp() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
149 return _allocation_stats.bfr_surp();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
150 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
151 void set_bfr_surp(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
152 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
153 _allocation_stats.set_bfr_surp(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
154 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
155 ssize_t prev_sweep() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
156 return _allocation_stats.prev_sweep();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
157 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
158 void set_prev_sweep(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
159 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
160 _allocation_stats.set_prev_sweep(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
161 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
162 ssize_t before_sweep() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
163 return _allocation_stats.before_sweep();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
164 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
165 void set_before_sweep(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
166 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
167 _allocation_stats.set_before_sweep(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
168 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
169
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
170 ssize_t coal_births() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
171 return _allocation_stats.coal_births();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
172 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
173 void set_coal_births(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
174 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
175 _allocation_stats.set_coal_births(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
176 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
177 void increment_coal_births() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
178 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
179 _allocation_stats.increment_coal_births();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
180 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
181
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
182 ssize_t coal_deaths() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
183 return _allocation_stats.coal_deaths();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
184 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
185 void set_coal_deaths(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
186 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
187 _allocation_stats.set_coal_deaths(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
188 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
189 void increment_coal_deaths() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
190 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
191 _allocation_stats.increment_coal_deaths();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
192 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
193
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
194 ssize_t split_births() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
195 return _allocation_stats.split_births();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
196 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
197 void set_split_births(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
198 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
199 _allocation_stats.set_split_births(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
200 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
201 void increment_split_births() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
202 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
203 _allocation_stats.increment_split_births();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
204 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
205
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
206 ssize_t split_deaths() const {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
207 return _allocation_stats.split_deaths();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
208 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
209 void set_split_deaths(ssize_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
210 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
211 _allocation_stats.set_split_deaths(v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
212 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
213 void increment_split_deaths() {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
214 assert_proper_lock_protection();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
215 _allocation_stats.increment_split_deaths();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
216 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
217
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
218 #ifndef PRODUCT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
219 // For debugging. The "_returned_bytes" in all the lists are summed
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
220 // and compared with the total number of bytes swept during a
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
221 // collection.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
222 size_t returned_bytes() const { return _allocation_stats.returned_bytes(); }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
223 void set_returned_bytes(size_t v) { _allocation_stats.set_returned_bytes(v); }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
224 void increment_returned_bytes_by(size_t v) {
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
225 _allocation_stats.set_returned_bytes(_allocation_stats.returned_bytes() + v);
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
226 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
227 // Stats verification
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
228 void verify_stats() const;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
229 #endif // NOT PRODUCT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
230 };
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
231
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
232 #endif // SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP