130 bool unloading_occurred);
131 static void oops_do(OopClosure* f) {
132 CodeBlobToOopClosure oopc(f, /*do_marking=*/ false);
133 blobs_do(&oopc);
134 }
135 static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
136 static void scavenge_root_nmethods_do(CodeBlobClosure* f);
137
138 static nmethod* scavenge_root_nmethods() { return _scavenge_root_nmethods; }
139 static void set_scavenge_root_nmethods(nmethod* nm) { _scavenge_root_nmethods = nm; }
140 static void add_scavenge_root_nmethod(nmethod* nm);
141 static void drop_scavenge_root_nmethod(nmethod* nm);
142 static void prune_scavenge_root_nmethods();
143
144 // Printing/debugging
145 static void print() PRODUCT_RETURN; // prints summary
146 static void print_internals();
147 static void verify(); // verifies the code cache
148 static void print_trace(const char* event, CodeBlob* cb, int size = 0) PRODUCT_RETURN;
149 static void print_bounds(outputStream* st); // Prints a summary of the bounds of the code cache
150
151 // The full limits of the codeCache
152 static address low_bound() { return (address) _heap->low_boundary(); }
153 static address high_bound() { return (address) _heap->high_boundary(); }
154
155 // Profiling
156 static address first_address(); // first address used for CodeBlobs
157 static address last_address(); // last address used for CodeBlobs
158 static size_t capacity() { return _heap->capacity(); }
159 static size_t max_capacity() { return _heap->max_capacity(); }
160 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); }
161 static size_t largest_free_block() { return _heap->largest_free_block(); }
162 static bool needs_flushing() { return unallocated_capacity() < CodeCacheFlushingMinimumFreeSpace; }
163
164 static bool needs_cache_clean() { return _needs_cache_clean; }
165 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
166 static void clear_inline_caches(); // clear all inline caches
167
168 static nmethod* find_and_remove_saved_code(methodOop m);
169 static void remove_saved_code(nmethod* nm);
170 static void speculatively_disconnect(nmethod* nm);
171
172 // Deoptimization
173 static int mark_for_deoptimization(DepChange& changes);
174 #ifdef HOTSWAP
175 static int mark_for_evol_deoptimization(instanceKlassHandle dependee);
176 #endif // HOTSWAP
177
178 static void mark_all_nmethods_for_deoptimization();
179 static int mark_for_deoptimization(methodOop dependee);
180 static void make_marked_nmethods_zombies();
181 static void make_marked_nmethods_not_entrant();
182
|
130 bool unloading_occurred);
131 static void oops_do(OopClosure* f) {
132 CodeBlobToOopClosure oopc(f, /*do_marking=*/ false);
133 blobs_do(&oopc);
134 }
135 static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
136 static void scavenge_root_nmethods_do(CodeBlobClosure* f);
137
138 static nmethod* scavenge_root_nmethods() { return _scavenge_root_nmethods; }
139 static void set_scavenge_root_nmethods(nmethod* nm) { _scavenge_root_nmethods = nm; }
140 static void add_scavenge_root_nmethod(nmethod* nm);
141 static void drop_scavenge_root_nmethod(nmethod* nm);
142 static void prune_scavenge_root_nmethods();
143
144 // Printing/debugging
145 static void print() PRODUCT_RETURN; // prints summary
146 static void print_internals();
147 static void verify(); // verifies the code cache
148 static void print_trace(const char* event, CodeBlob* cb, int size = 0) PRODUCT_RETURN;
149 static void print_bounds(outputStream* st); // Prints a summary of the bounds of the code cache
150 static void log_state(outputStream* st);
151
152 // The full limits of the codeCache
153 static address low_bound() { return (address) _heap->low_boundary(); }
154 static address high_bound() { return (address) _heap->high_boundary(); }
155
156 // Profiling
157 static address first_address(); // first address used for CodeBlobs
158 static address last_address(); // last address used for CodeBlobs
159 static size_t capacity() { return _heap->capacity(); }
160 static size_t max_capacity() { return _heap->max_capacity(); }
161 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); }
162 static size_t largest_free_block() { return _heap->largest_free_block(); }
163 static bool needs_flushing() { return largest_free_block() < CodeCacheFlushingMinimumFreeSpace; }
164
165 static bool needs_cache_clean() { return _needs_cache_clean; }
166 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
167 static void clear_inline_caches(); // clear all inline caches
168
169 static nmethod* find_and_remove_saved_code(methodOop m);
170 static void remove_saved_code(nmethod* nm);
171 static void speculatively_disconnect(nmethod* nm);
172
173 // Deoptimization
174 static int mark_for_deoptimization(DepChange& changes);
175 #ifdef HOTSWAP
176 static int mark_for_evol_deoptimization(instanceKlassHandle dependee);
177 #endif // HOTSWAP
178
179 static void mark_all_nmethods_for_deoptimization();
180 static int mark_for_deoptimization(methodOop dependee);
181 static void make_marked_nmethods_zombies();
182 static void make_marked_nmethods_not_entrant();
183
|