< prev index next >
src/hotspot/share/code/codeCache.hpp
// "unloading_occurred" controls whether metadata should be cleaned because of class unloading.
class UnloadingScope: StackObj {
ClosureIsUnloadingBehaviour _is_unloading_behaviour;
public:
! UnloadingScope(BoolObjectClosure* is_alive)
! : _is_unloading_behaviour(is_alive)
! {
! IsUnloadingBehaviour::set_current(&_is_unloading_behaviour);
! increment_unloading_cycle();
! }
!
! ~UnloadingScope() {
! IsUnloadingBehaviour::set_current(NULL);
! }
};
static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
static uint8_t unloading_cycle() { return _unloading_cycle; }
static void increment_unloading_cycle();
static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
static void release_exception_cache(ExceptionCache* entry);
// "unloading_occurred" controls whether metadata should be cleaned because of class unloading.
class UnloadingScope: StackObj {
ClosureIsUnloadingBehaviour _is_unloading_behaviour;
public:
! UnloadingScope(BoolObjectClosure* is_alive);
! ~UnloadingScope();
};
+
static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
static uint8_t unloading_cycle() { return _unloading_cycle; }
static void increment_unloading_cycle();
static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN;
static void release_exception_cache(ExceptionCache* entry);
< prev index next >