120 OopClosure* keep_alive,
121 bool unloading_occurred);
122 static void oops_do(OopClosure* f) {
123 CodeBlobToOopClosure oopc(f, /*do_marking=*/ false);
124 blobs_do(&oopc);
125 }
126 static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
127 static void scavenge_root_nmethods_do(CodeBlobClosure* f);
128
129 static nmethod* scavenge_root_nmethods() { return _scavenge_root_nmethods; }
130 static void set_scavenge_root_nmethods(nmethod* nm) { _scavenge_root_nmethods = nm; }
131 static void add_scavenge_root_nmethod(nmethod* nm);
132 static void drop_scavenge_root_nmethod(nmethod* nm);
133 static void prune_scavenge_root_nmethods();
134
135 // Printing/debugging
136 static void print() PRODUCT_RETURN; // prints summary
137 static void print_internals();
138 static void verify(); // verifies the code cache
139 static void print_trace(const char* event, CodeBlob* cb, int size = 0) PRODUCT_RETURN;
140
141 // The full limits of the codeCache
142 static address low_bound() { return (address) _heap->low_boundary(); }
143 static address high_bound() { return (address) _heap->high_boundary(); }
144
145 // Profiling
146 static address first_address(); // first address used for CodeBlobs
147 static address last_address(); // last address used for CodeBlobs
148 static size_t capacity() { return _heap->capacity(); }
149 static size_t max_capacity() { return _heap->max_capacity(); }
150 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); }
151 static bool needs_flushing() { return unallocated_capacity() < CodeCacheFlushingMinimumFreeSpace; }
152
153 static bool needs_cache_clean() { return _needs_cache_clean; }
154 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
155 static void clear_inline_caches(); // clear all inline caches
156
157 static nmethod* find_and_remove_saved_code(methodOop m);
158 static void remove_saved_code(nmethod* nm);
159 static void speculatively_disconnect(nmethod* nm);
|
120 OopClosure* keep_alive,
121 bool unloading_occurred);
122 static void oops_do(OopClosure* f) {
123 CodeBlobToOopClosure oopc(f, /*do_marking=*/ false);
124 blobs_do(&oopc);
125 }
126 static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
127 static void scavenge_root_nmethods_do(CodeBlobClosure* f);
128
129 static nmethod* scavenge_root_nmethods() { return _scavenge_root_nmethods; }
130 static void set_scavenge_root_nmethods(nmethod* nm) { _scavenge_root_nmethods = nm; }
131 static void add_scavenge_root_nmethod(nmethod* nm);
132 static void drop_scavenge_root_nmethod(nmethod* nm);
133 static void prune_scavenge_root_nmethods();
134
135 // Printing/debugging
136 static void print() PRODUCT_RETURN; // prints summary
137 static void print_internals();
138 static void verify(); // verifies the code cache
139 static void print_trace(const char* event, CodeBlob* cb, int size = 0) PRODUCT_RETURN;
140 static void print_bounds(outputStream* st); // Prints a summary of the bounds of the code cache
141
142 // The full limits of the codeCache
143 static address low_bound() { return (address) _heap->low_boundary(); }
144 static address high_bound() { return (address) _heap->high_boundary(); }
145
146 // Profiling
147 static address first_address(); // first address used for CodeBlobs
148 static address last_address(); // last address used for CodeBlobs
149 static size_t capacity() { return _heap->capacity(); }
150 static size_t max_capacity() { return _heap->max_capacity(); }
151 static size_t unallocated_capacity() { return _heap->unallocated_capacity(); }
152 static bool needs_flushing() { return unallocated_capacity() < CodeCacheFlushingMinimumFreeSpace; }
153
154 static bool needs_cache_clean() { return _needs_cache_clean; }
155 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
156 static void clear_inline_caches(); // clear all inline caches
157
158 static nmethod* find_and_remove_saved_code(methodOop m);
159 static void remove_saved_code(nmethod* nm);
160 static void speculatively_disconnect(nmethod* nm);
|