< prev index next >

src/hotspot/share/runtime/sweeper.cpp

Concurrent class unloading

*** 579,589 **** public: CompiledMethodMarker(CompiledMethod* cm) { JavaThread* current = JavaThread::current(); assert (current->is_Code_cache_sweeper_thread(), "Must be"); _thread = (CodeCacheSweeperThread*)current; ! if (!cm->is_zombie() && !cm->is_unloaded()) { // Only expose live nmethods for scanning _thread->set_scanned_compiled_method(cm); } } ~CompiledMethodMarker() { --- 579,589 ---- public: CompiledMethodMarker(CompiledMethod* cm) { JavaThread* current = JavaThread::current(); assert (current->is_Code_cache_sweeper_thread(), "Must be"); _thread = (CodeCacheSweeperThread*)current; ! if (!cm->is_zombie() && !cm->is_unloading()) { // Only expose live nmethods for scanning _thread->set_scanned_compiled_method(cm); } } ~CompiledMethodMarker() { ***************
*** 623,633 **** SWEEP(cm); // Skip methods that are currently referenced by the VM if (cm->is_locked_by_vm()) { // But still remember to clean-up inline caches for alive nmethods ! if (cm->is_alive()) { // Clean inline caches that point to zombie/non-entrant/unloaded nmethods MutexLocker cl(CompiledIC_lock); cm->cleanup_inline_caches(false); SWEEP(cm); } --- 623,633 ---- SWEEP(cm); // Skip methods that are currently referenced by the VM if (cm->is_locked_by_vm()) { // But still remember to clean-up inline caches for alive nmethods ! if (cm->is_alive() && !cm->is_unloading()) { // Clean inline caches that point to zombie/non-entrant/unloaded nmethods MutexLocker cl(CompiledIC_lock); cm->cleanup_inline_caches(false); SWEEP(cm); }
< prev index next >