< prev index next >

src/hotspot/share/classfile/classLoaderData.cpp

Print this page

        

*** 482,492 **** } // Remove a klass from the _klasses list for scratch_class during redefinition // or parsed class in the case of an error. void ClassLoaderData::remove_class(Klass* scratch_class) { ! assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint"); // Adjust global class iterator. ClassLoaderDataGraph::adjust_saved_class(scratch_class); Klass* prev = NULL; --- 482,492 ---- } // Remove a klass from the _klasses list for scratch_class during redefinition // or parsed class in the case of an error. void ClassLoaderData::remove_class(Klass* scratch_class) { ! assert_locked_or_safepoint(ClassLoaderDataGraph_lock); // Adjust global class iterator. ClassLoaderDataGraph::adjust_saved_class(scratch_class); Klass* prev = NULL;
*** 802,812 **** } } // Deallocate free metadata on the free list. How useful the PermGen was! void ClassLoaderData::free_deallocate_list() { ! // Don't need lock, at safepoint assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint"); assert(!is_unloading(), "only called for ClassLoaderData that are not unloading"); if (_deallocate_list == NULL) { return; } --- 802,813 ---- } } // Deallocate free metadata on the free list. How useful the PermGen was! void ClassLoaderData::free_deallocate_list() { ! // This must be called at a safepoint because it depends on metadata walking at ! // safepoint cleanup time. assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint"); assert(!is_unloading(), "only called for ClassLoaderData that are not unloading"); if (_deallocate_list == NULL) { return; }
*** 842,853 **** // unloading, this frees the C heap memory for items on the list, and unlinks // scratch or error classes so that unloading events aren't triggered for these // classes. The metadata is removed with the unloading metaspace. // There isn't C heap memory allocated for methods, so nothing is done for them. void ClassLoaderData::free_deallocate_list_C_heap_structures() { ! // Don't need lock, at safepoint ! assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint"); assert(is_unloading(), "only called for ClassLoaderData that are unloading"); if (_deallocate_list == NULL) { return; } // Go backwards because this removes entries that are freed. --- 843,853 ---- // unloading, this frees the C heap memory for items on the list, and unlinks // scratch or error classes so that unloading events aren't triggered for these // classes. The metadata is removed with the unloading metaspace. // There isn't C heap memory allocated for methods, so nothing is done for them. void ClassLoaderData::free_deallocate_list_C_heap_structures() { ! assert_locked_or_safepoint(ClassLoaderDataGraph_lock); assert(is_unloading(), "only called for ClassLoaderData that are unloading"); if (_deallocate_list == NULL) { return; } // Go backwards because this removes entries that are freed.
< prev index next >