265
266 // Deoptimization
267 private:
268 static int mark_for_deoptimization(KlassDepChange& changes);
269 #ifdef HOTSWAP
270 static int mark_for_evol_deoptimization(InstanceKlass* dependee);
271 #endif // HOTSWAP
272
273 public:
274 static void mark_all_nmethods_for_deoptimization();
275 static int mark_for_deoptimization(Method* dependee);
276 static void make_marked_nmethods_not_entrant();
277
278 // Flushing and deoptimization
279 static void flush_dependents_on(InstanceKlass* dependee);
280 #ifdef HOTSWAP
281 // Flushing and deoptimization in case of evolution
282 static void flush_evol_dependents_on(InstanceKlass* dependee);
283 #endif // HOTSWAP
284 // Support for fullspeed debugging
285 static void flush_dependents_on_method(methodHandle dependee);
286
287 // tells how many nmethods have dependencies
288 static int number_of_nmethods_with_dependencies();
289
290 static int get_codemem_full_count(int code_blob_type) {
291 CodeHeap* heap = get_code_heap(code_blob_type);
292 return (heap != NULL) ? heap->full_count() : 0;
293 }
294 };
295
296
297 // Iterator to iterate over nmethods in the CodeCache.
298 template <class T, class Filter> class CodeBlobIterator : public StackObj {
299 private:
300 CodeBlob* _code_blob; // Current CodeBlob
301 GrowableArrayIterator<CodeHeap*> _heap;
302 GrowableArrayIterator<CodeHeap*> _end;
303
304 public:
305 CodeBlobIterator(T* nm = NULL) {
|
265
266 // Deoptimization
267 private:
268 static int mark_for_deoptimization(KlassDepChange& changes);
269 #ifdef HOTSWAP
270 static int mark_for_evol_deoptimization(InstanceKlass* dependee);
271 #endif // HOTSWAP
272
273 public:
274 static void mark_all_nmethods_for_deoptimization();
275 static int mark_for_deoptimization(Method* dependee);
276 static void make_marked_nmethods_not_entrant();
277
278 // Flushing and deoptimization
279 static void flush_dependents_on(InstanceKlass* dependee);
280 #ifdef HOTSWAP
281 // Flushing and deoptimization in case of evolution
282 static void flush_evol_dependents_on(InstanceKlass* dependee);
283 #endif // HOTSWAP
284 // Support for fullspeed debugging
285 static void flush_dependents_on_method(const methodHandle& dependee);
286
287 // tells how many nmethods have dependencies
288 static int number_of_nmethods_with_dependencies();
289
290 static int get_codemem_full_count(int code_blob_type) {
291 CodeHeap* heap = get_code_heap(code_blob_type);
292 return (heap != NULL) ? heap->full_count() : 0;
293 }
294 };
295
296
297 // Iterator to iterate over nmethods in the CodeCache.
298 template <class T, class Filter> class CodeBlobIterator : public StackObj {
299 private:
300 CodeBlob* _code_blob; // Current CodeBlob
301 GrowableArrayIterator<CodeHeap*> _heap;
302 GrowableArrayIterator<CodeHeap*> _end;
303
304 public:
305 CodeBlobIterator(T* nm = NULL) {
|