< prev index next >


 // IMPORTANT: If you add new CodeHeaps to the code cache or change the
 // existing ones, make sure to adapt the dtrace scripts (jhelper.d) for
 // Solaris and BSD.
-class OopClosure;
+class ExceptionCache;
 class KlassDepChange;
+class OopClosure;
 class CodeCache : AllStatic {
   friend class VMStructs;
   friend class JVMCIVMStructs;
   template <class T, class Filter> friend class CodeBlobIterator;

@@ -91,10 +92,12 static address _high_bound; // Upper bound of CodeHeap addresses static int _number_of_nmethods_with_dependencies; // Total number of nmethods with dependencies static bool _needs_cache_clean; // True if inline caches of the nmethods needs to be flushed static nmethod* _scavenge_root_nmethods; // linked via nm->scavenge_root_link() + static ExceptionCache* volatile _exception_cache_purge_list; + static void mark_scavenge_root_nmethods() PRODUCT_RETURN; static void verify_perm_nmethods(CodeBlobClosure* f_or_null) PRODUCT_RETURN; // CodeHeap management static void initialize_heaps(); // Initializes the CodeHeaps
@@ -172,10 +175,12 // to) any unmarked codeBlobs in the cache. Sets "marked_for_unloading" // to "true" iff some code got unloaded. // "unloading_occurred" controls whether metadata should be cleaned because of class unloading. static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred); static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN; + static void release_exception_cache(ExceptionCache* entry); + static void purge_exception_caches(); // Apply f to every live code blob in scavengable nmethods. Prune nmethods // from the list of scavengable nmethods if f->fix_relocations() and a nmethod // no longer has scavengable oops. If f->fix_relocations(), then f must copy // objects to their new location immediately to avoid fixing nmethods on the
< prev index next >