Mercurial > hg > graal-compiler
comparison src/share/vm/code/codeCache.hpp @ 1202:5f24d0319e54
4360113: Evict nmethods when code cache gets full
Summary: Speculatively unload the oldest nmethods when code cache gets full.
Reviewed-by: never, kvn
Contributed-by: eric.caspole@amd.com
author | kvn |
---|---|
date | Fri, 29 Jan 2010 09:27:22 -0800 |
parents | 148e5441d916 |
children | bfe29ec02863 |
comparison
equal
deleted
inserted
replaced
1201:24128c2ffa87 | 1202:5f24d0319e54 |
---|---|
44 static CodeHeap * _heap; | 44 static CodeHeap * _heap; |
45 static int _number_of_blobs; | 45 static int _number_of_blobs; |
46 static int _number_of_nmethods_with_dependencies; | 46 static int _number_of_nmethods_with_dependencies; |
47 static bool _needs_cache_clean; | 47 static bool _needs_cache_clean; |
48 static nmethod* _scavenge_root_nmethods; // linked via nm->scavenge_root_link() | 48 static nmethod* _scavenge_root_nmethods; // linked via nm->scavenge_root_link() |
49 static nmethod* _saved_nmethods; // linked via nm->saved_nmethod_look() | |
49 | 50 |
50 static void verify_if_often() PRODUCT_RETURN; | 51 static void verify_if_often() PRODUCT_RETURN; |
51 | 52 |
52 static void mark_scavenge_root_nmethods() PRODUCT_RETURN; | 53 static void mark_scavenge_root_nmethods() PRODUCT_RETURN; |
53 static void verify_perm_nmethods(CodeBlobClosure* f_or_null) PRODUCT_RETURN; | 54 static void verify_perm_nmethods(CodeBlobClosure* f_or_null) PRODUCT_RETURN; |
139 static address first_address(); // first address used for CodeBlobs | 140 static address first_address(); // first address used for CodeBlobs |
140 static address last_address(); // last address used for CodeBlobs | 141 static address last_address(); // last address used for CodeBlobs |
141 static size_t capacity() { return _heap->capacity(); } | 142 static size_t capacity() { return _heap->capacity(); } |
142 static size_t max_capacity() { return _heap->max_capacity(); } | 143 static size_t max_capacity() { return _heap->max_capacity(); } |
143 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); } | 144 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); } |
145 static bool needs_flushing() { return unallocated_capacity() < CodeCacheFlushingMinimumFreeSpace; } | |
144 | 146 |
145 static bool needs_cache_clean() { return _needs_cache_clean; } | 147 static bool needs_cache_clean() { return _needs_cache_clean; } |
146 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; } | 148 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; } |
147 static void clear_inline_caches(); // clear all inline caches | 149 static void clear_inline_caches(); // clear all inline caches |
150 | |
151 static nmethod* find_and_remove_saved_code(methodOop m); | |
152 static void remove_saved_code(nmethod* nm); | |
153 static void speculatively_disconnect(nmethod* nm); | |
148 | 154 |
149 // Deoptimization | 155 // Deoptimization |
150 static int mark_for_deoptimization(DepChange& changes); | 156 static int mark_for_deoptimization(DepChange& changes); |
151 #ifdef HOTSWAP | 157 #ifdef HOTSWAP |
152 static int mark_for_evol_deoptimization(instanceKlassHandle dependee); | 158 static int mark_for_evol_deoptimization(instanceKlassHandle dependee); |