annotate src/share/vm/gc_implementation/g1/g1CodeCacheRemSet.hpp @ 17935:7384f6a12fc1

8038212: Method::is_valid_method() check has performance regression impact for stackwalking Summary: Only prune metaspace virtual spaces at safepoint so walking them is safe outside a safepoint. Reviewed-by: mgerdin, mgronlun, hseigel, stefank
author coleenp
date Thu, 15 May 2014 18:23:26 -0400
parents 191174b49bec
children 82693fb204a5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17753
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
1 /*
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
4 *
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
7 * published by the Free Software Foundation.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
8 *
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
13 * accompanied this code).
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
14 *
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
18 *
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
21 * questions.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
22 *
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
23 */
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
24
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1CODECACHEREMSET_HPP
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1CODECACHEREMSET_HPP
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
27
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
28 #include "memory/allocation.hpp"
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
29 #include "memory/freeList.hpp"
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
30 #include "runtime/globals.hpp"
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
31
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
32 class CodeBlobClosure;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
33
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
34 class G1CodeRootChunk : public CHeapObj<mtGC> {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
35 private:
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
36 static const int NUM_ENTRIES = 32;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
37 public:
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
38 G1CodeRootChunk* _next;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
39 G1CodeRootChunk* _prev;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
40
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
41 nmethod** _top;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
42
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
43 nmethod* _data[NUM_ENTRIES];
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
44
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
45 nmethod** bottom() const {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
46 return (nmethod**) &(_data[0]);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
47 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
48
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
49 nmethod** end() const {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
50 return (nmethod**) &(_data[NUM_ENTRIES]);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
51 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
52
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
53 public:
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
54 G1CodeRootChunk();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
55 ~G1CodeRootChunk() {}
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
56
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
57 static size_t word_size() { return (size_t)(align_size_up_(sizeof(G1CodeRootChunk), HeapWordSize) / HeapWordSize); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
58
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
59 // FreeList "interface" methods
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
60
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
61 G1CodeRootChunk* next() const { return _next; }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
62 G1CodeRootChunk* prev() const { return _prev; }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
63 void set_next(G1CodeRootChunk* v) { _next = v; assert(v != this, "Boom");}
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
64 void set_prev(G1CodeRootChunk* v) { _prev = v; assert(v != this, "Boom");}
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
65 void clear_next() { set_next(NULL); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
66 void clear_prev() { set_prev(NULL); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
67
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
68 size_t size() const { return word_size(); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
69
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
70 void link_next(G1CodeRootChunk* ptr) { set_next(ptr); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
71 void link_prev(G1CodeRootChunk* ptr) { set_prev(ptr); }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
72 void link_after(G1CodeRootChunk* ptr) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
73 link_next(ptr);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
74 if (ptr != NULL) ptr->link_prev((G1CodeRootChunk*)this);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
75 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
76
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
77 bool is_free() { return true; }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
78
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
79 // New G1CodeRootChunk routines
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
80
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
81 void reset();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
82
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
83 bool is_empty() const {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
84 return _top == bottom();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
85 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
86
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
87 bool is_full() const {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
88 return _top == (nmethod**)end();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
89 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
90
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
91 bool contains(nmethod* method) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
92 nmethod** cur = bottom();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
93 while (cur != _top) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
94 if (*cur == method) return true;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
95 cur++;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
96 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
97 return false;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
98 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
99
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
100 bool add(nmethod* method) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
101 if (is_full()) return false;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
102 *_top = method;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
103 _top++;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
104 return true;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
105 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
106
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
107 bool remove(nmethod* method) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
108 nmethod** cur = bottom();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
109 while (cur != _top) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
110 if (*cur == method) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
111 memmove(cur, cur + 1, (_top - (cur + 1)) * sizeof(nmethod**));
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
112 _top--;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
113 return true;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
114 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
115 cur++;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
116 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
117 return false;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
118 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
119
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
120 void nmethods_do(CodeBlobClosure* blk);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
121
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
122 nmethod* pop() {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
123 if (is_empty()) {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
124 return NULL;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
125 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
126 _top--;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
127 return *_top;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
128 }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
129 };
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
130
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
131 // Implements storage for a set of code roots.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
132 // All methods that modify the set are not thread-safe except if otherwise noted.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
133 class G1CodeRootSet VALUE_OBJ_CLASS_SPEC {
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
134 private:
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
135 // Global free chunk list management
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
136 static FreeList<G1CodeRootChunk> _free_list;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
137 // Total number of chunks handed out
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
138 static size_t _num_chunks_handed_out;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
139
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
140 static G1CodeRootChunk* new_chunk();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
141 static void free_chunk(G1CodeRootChunk* chunk);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
142 // Free all elements of the given list.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
143 static void free_all_chunks(FreeList<G1CodeRootChunk>* list);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
144
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
145 // Return the chunk that contains the given nmethod, NULL otherwise.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
146 // Scans the list of chunks backwards, as this method is used to add new
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
147 // entries, which are typically added in bulk for a single nmethod.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
148 G1CodeRootChunk* find(nmethod* method);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
149 void free(G1CodeRootChunk* chunk);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
150
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
151 size_t _length;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
152 FreeList<G1CodeRootChunk> _list;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
153
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
154 public:
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
155 G1CodeRootSet();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
156 ~G1CodeRootSet();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
157
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
158 static void initialize();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
159 static void purge_chunks(size_t keep_ratio);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
160
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
161 static size_t static_mem_size();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
162 static size_t fl_mem_size();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
163
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
164 // Search for the code blob from the recently allocated ones to find duplicates more quickly, as this
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
165 // method is likely to be repeatedly called with the same nmethod.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
166 void add(nmethod* method);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
167
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
168 void remove(nmethod* method);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
169 nmethod* pop();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
170
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
171 bool contains(nmethod* method);
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
172
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
173 void clear();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
174
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
175 void nmethods_do(CodeBlobClosure* blk) const;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
176
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
177 bool is_empty() { return length() == 0; }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
178
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
179 // Length in elements
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
180 size_t length() const { return _length; }
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
181
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
182 // Memory size in bytes taken by this set.
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
183 size_t mem_size();
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
184
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
185 static void test() PRODUCT_RETURN;
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
186 };
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
187
191174b49bec 8035406: Improve data structure for Code Cache remembered sets
tschatzl
parents:
diff changeset
188 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1CODECACHEREMSET_HPP