comparison src/share/vm/code/codeCache.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents d2a62e0f25eb
children 8966c2d65d96
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
1 /* 1 /*
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
78 static void flush(); // flushes all CodeBlobs 78 static void flush(); // flushes all CodeBlobs
79 static bool contains(void *p); // returns whether p is included 79 static bool contains(void *p); // returns whether p is included
80 static void blobs_do(void f(CodeBlob* cb)); // iterates over all CodeBlobs 80 static void blobs_do(void f(CodeBlob* cb)); // iterates over all CodeBlobs
81 static void blobs_do(CodeBlobClosure* f); // iterates over all CodeBlobs 81 static void blobs_do(CodeBlobClosure* f); // iterates over all CodeBlobs
82 static void nmethods_do(void f(nmethod* nm)); // iterates over all nmethods 82 static void nmethods_do(void f(nmethod* nm)); // iterates over all nmethods
83 static void alive_nmethods_do(void f(nmethod* nm)); // iterates over all alive nmethods
83 84
84 // Lookup 85 // Lookup
85 static CodeBlob* find_blob(void* start); 86 static CodeBlob* find_blob(void* start);
86 static nmethod* find_nmethod(void* start); 87 static nmethod* find_nmethod(void* start);
87 88
168 169
169 static bool needs_cache_clean() { return _needs_cache_clean; } 170 static bool needs_cache_clean() { return _needs_cache_clean; }
170 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; } 171 static void set_needs_cache_clean(bool v) { _needs_cache_clean = v; }
171 static void clear_inline_caches(); // clear all inline caches 172 static void clear_inline_caches(); // clear all inline caches
172 173
173 static nmethod* find_and_remove_saved_code(methodOop m); 174 static nmethod* find_and_remove_saved_code(Method* m);
174 static void remove_saved_code(nmethod* nm); 175 static void remove_saved_code(nmethod* nm);
175 static void speculatively_disconnect(nmethod* nm); 176 static void speculatively_disconnect(nmethod* nm);
176 177
177 // Deoptimization 178 // Deoptimization
178 static int mark_for_deoptimization(DepChange& changes); 179 static int mark_for_deoptimization(DepChange& changes);
179 #ifdef HOTSWAP 180 #ifdef HOTSWAP
180 static int mark_for_evol_deoptimization(instanceKlassHandle dependee); 181 static int mark_for_evol_deoptimization(instanceKlassHandle dependee);
181 #endif // HOTSWAP 182 #endif // HOTSWAP
182 183
183 static void mark_all_nmethods_for_deoptimization(); 184 static void mark_all_nmethods_for_deoptimization();
184 static int mark_for_deoptimization(methodOop dependee); 185 static int mark_for_deoptimization(Method* dependee);
185 static void make_marked_nmethods_zombies(); 186 static void make_marked_nmethods_zombies();
186 static void make_marked_nmethods_not_entrant(); 187 static void make_marked_nmethods_not_entrant();
187 188
188 // tells how many nmethods have dependencies 189 // tells how many nmethods have dependencies
189 static int number_of_nmethods_with_dependencies(); 190 static int number_of_nmethods_with_dependencies();