equal
deleted
inserted
replaced
91 |
91 |
92 // CodeCache implementation |
92 // CodeCache implementation |
93 |
93 |
94 CodeHeap * CodeCache::_heap = new CodeHeap(); |
94 CodeHeap * CodeCache::_heap = new CodeHeap(); |
95 int CodeCache::_number_of_blobs = 0; |
95 int CodeCache::_number_of_blobs = 0; |
|
96 int CodeCache::_number_of_adapters = 0; |
|
97 int CodeCache::_number_of_nmethods = 0; |
96 int CodeCache::_number_of_nmethods_with_dependencies = 0; |
98 int CodeCache::_number_of_nmethods_with_dependencies = 0; |
97 bool CodeCache::_needs_cache_clean = false; |
99 bool CodeCache::_needs_cache_clean = false; |
98 nmethod* CodeCache::_scavenge_root_nmethods = NULL; |
100 nmethod* CodeCache::_scavenge_root_nmethods = NULL; |
99 nmethod* CodeCache::_saved_nmethods = NULL; |
101 nmethod* CodeCache::_saved_nmethods = NULL; |
100 |
102 |
174 void CodeCache::free(CodeBlob* cb) { |
176 void CodeCache::free(CodeBlob* cb) { |
175 assert_locked_or_safepoint(CodeCache_lock); |
177 assert_locked_or_safepoint(CodeCache_lock); |
176 verify_if_often(); |
178 verify_if_often(); |
177 |
179 |
178 print_trace("free", cb); |
180 print_trace("free", cb); |
179 if (cb->is_nmethod() && ((nmethod *)cb)->has_dependencies()) { |
181 if (cb->is_nmethod()) { |
180 _number_of_nmethods_with_dependencies--; |
182 _number_of_nmethods--; |
|
183 if (((nmethod *)cb)->has_dependencies()) { |
|
184 _number_of_nmethods_with_dependencies--; |
|
185 } |
|
186 } |
|
187 if (cb->is_adapter_blob()) { |
|
188 _number_of_adapters--; |
181 } |
189 } |
182 _number_of_blobs--; |
190 _number_of_blobs--; |
183 |
191 |
184 _heap->deallocate(cb); |
192 _heap->deallocate(cb); |
185 |
193 |
189 |
197 |
190 |
198 |
191 void CodeCache::commit(CodeBlob* cb) { |
199 void CodeCache::commit(CodeBlob* cb) { |
192 // this is called by nmethod::nmethod, which must already own CodeCache_lock |
200 // this is called by nmethod::nmethod, which must already own CodeCache_lock |
193 assert_locked_or_safepoint(CodeCache_lock); |
201 assert_locked_or_safepoint(CodeCache_lock); |
194 if (cb->is_nmethod() && ((nmethod *)cb)->has_dependencies()) { |
202 if (cb->is_nmethod()) { |
195 _number_of_nmethods_with_dependencies++; |
203 _number_of_nmethods++; |
196 } |
204 if (((nmethod *)cb)->has_dependencies()) { |
|
205 _number_of_nmethods_with_dependencies++; |
|
206 } |
|
207 } |
|
208 if (cb->is_adapter_blob()) { |
|
209 _number_of_adapters++; |
|
210 } |
|
211 |
197 // flush the hardware I-cache |
212 // flush the hardware I-cache |
198 ICache::invalidate_range(cb->instructions_begin(), cb->instructions_size()); |
213 ICache::invalidate_range(cb->instructions_begin(), cb->instructions_size()); |
199 } |
214 } |
200 |
215 |
201 |
216 |