Index: vm/vmcore/include/classloader.h
===================================================================
--- vm/vmcore/include/classloader.h (revision 521143)
+++ vm/vmcore/include/classloader.h (working copy)
@@ -155,8 +155,7 @@
public:
ClassLoader() : m_loader(NULL), m_parent(NULL), m_name(NULL), m_package_table(NULL),
m_loadedClasses(NULL), m_loadingClasses(NULL), m_reportedClasses(NULL),
- m_javaTypes(NULL), m_nativeLibraries(NULL), m_markBit(0),
- m_unloading(false), m_fullSize(0), m_verifyData(NULL)
+ m_javaTypes(NULL), m_nativeLibraries(NULL), m_verifyData(NULL)
{
apr_pool_create(&pool, 0);
}
@@ -209,9 +208,6 @@
public:
bool IsBootstrap() { return m_loader == NULL; }
- void Mark() { m_markBit = 1; }
- bool NotMarked() { return (m_markBit == 0); }
- unsigned GetFullSize();
ManagedObject* GetLoader() { return m_loader; }
const String* GetName() { return m_name; }
ClassLoader* GetParent() { return m_parent; }
@@ -229,9 +225,6 @@
VMEXPORT static ClassLoader* LookupLoader( ManagedObject* loader );
static void UnloadClassLoader( ManagedObject* loader );
static void gc_enumerate();
- static void ClearMarkBits();
- static void StartUnloading();
- static void PrintUnloadingStats();
static unsigned GetClassLoaderNumber() { return m_nextEntry; }
static ClassLoader** GetClassLoaderTable() { return m_table; }
static void DeleteClassLoaderTable(){
@@ -280,9 +273,6 @@
NativeLibraryList m_nativeLibraries;
Lock_Manager m_lock;
Lock_Manager m_types_cache_lock;
- unsigned m_markBit:1;
- unsigned m_unloading;
- unsigned m_fullSize;
void* m_verifyData;
apr_pool_t* pool;
PoolManager *CodeMemoryManager;
Index: vm/vmcore/include/Class.h
===================================================================
--- vm/vmcore/include/Class.h (revision 521143)
+++ vm/vmcore/include/Class.h (working copy)
@@ -1021,9 +1021,6 @@
// SourceDebugExtension class attribute support
String* m_sourceDebugExtension;
- // struct Class accessibility for unloading
- unsigned m_markBit:1;
-
// verifier private data pointer
void* m_verify_data;
@@ -1750,20 +1747,6 @@
return m_sourceDebugExtension->bytes;
}
- // Class unloading support
-
- /** Checks whether the given class is reachable through its loader
- * or any live object.
- * @return true if the given class is reachable,
- * otherwise false.*/
- bool is_reachable() { return m_markBit == 1; }
-
- /** Clears a reachability mark.*/
- void reset_reachable() { m_markBit = 0; }
-
- /** Marks the given class as reachable.*/
- void mark_reachable() { m_markBit = 1; }
-
/** Stores a verifier specific pointer into the given class.
* @param[in] data - a verifier specific data pointer*/
void set_verification_data(void* data) {
Index: vm/vmcore/include/unloading.h
===================================================================
--- vm/vmcore/include/unloading.h (revision 521143)
+++ vm/vmcore/include/unloading.h (working copy)
@@ -22,8 +22,5 @@
#ifndef __UNLOADING_H__
#define __UNLOADING_H__
-void class_unloading_clear_mark_bits();
-void class_unloading_start();
-
#endif
Index: vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp
===================================================================
--- vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp (revision 521143)
+++ vm/vmcore/src/gc/stop_the_world_root_set_enum.cpp (working copy)
@@ -98,8 +98,6 @@
jvmti_send_gc_start_event();
- class_unloading_clear_mark_bits();
-
current_vm_thread = p_TLS_vmthread;
// Run through list of active threads and enumerate each one of them.
hythread_t tm_thread = hythread_iterator_next(&iterator);
@@ -163,8 +161,6 @@
assert(p_the_safepoint_control_thread == p_TLS_vmthread);
p_the_safepoint_control_thread = 0;
- class_unloading_start();
-
jvmti_send_gc_finish_event();
jvmti_clean_reclaimed_object_tags();
Index: vm/vmcore/src/class_support/Class.cpp
===================================================================
--- vm/vmcore/src/class_support/Class.cpp (revision 521143)
+++ vm/vmcore/src/class_support/Class.cpp (working copy)
@@ -141,7 +141,6 @@
m_sourceDebugExtension = NULL;
m_lock = new Lock_Manager();
- m_markBit = 0;
m_verify_data = 0;
}
@@ -922,17 +921,6 @@
}
-static void mark_classloader(ClassLoader* cl)
-{
- if(cl->GetLoader() && cl->NotMarked()) {
- TRACE2("classloader.unloading.markloader", " Marking loader "
- << cl << " (" << (void*)cl->GetLoader() << " : "
- << cl->GetLoader()->vt()->clss->get_name()->bytes << ")");
- cl->Mark();
- }
-}
-
-
// end pointers between struct Class and java.lang.Class
////////////////////////////////////////////////////////////////////
Index: vm/vmcore/src/class_support/classloader.cpp
===================================================================
--- vm/vmcore/src/class_support/classloader.cpp (revision 521143)
+++ vm/vmcore/src/class_support/classloader.cpp (working copy)
@@ -484,104 +484,6 @@
}
-void ClassLoader::ClearMarkBits()
-{
- TRACE2("classloader.unloading.clear", "Clearing mark bits");
- LMAutoUnlock aulock( &(ClassLoader::m_tableLock) );
- ClassTable::iterator cti;
- unsigned i;
- for(i = 0; i < m_nextEntry; i++) {
- if(m_table[i]->m_unloading) {
- TRACE2("classloader.unloading.debug", " Skipping \"unloaded\" classloader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes << ")");
- continue;
- }
- TRACE2("classloader.unloading.debug", " Clearing mark bits in classloader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes << ") and its classes");
- // clear mark bits in loader and classes
- m_table[i]->m_markBit = 0;
- for(cti = m_table[i]->m_loadedClasses->begin();
- cti != m_table[i]->m_loadedClasses->end(); cti++)
- {
- if(cti->second->get_class_loader() == m_table[i]) {
- cti->second->reset_reachable();
- }
- }
- }
- TRACE2("classloader.unloading.clear", "Finished clearing mark bits");
- TRACE2("classloader.unloading.marking", "Starting mark loaders");
-}
-
-
-void ClassLoader::StartUnloading()
-{
- TRACE2("classloader.unloading.marking", "Finished marking loaders");
- TRACE2("classloader.unloading.do", "Start checking loaders ready to be unloaded");
- LMAutoUnlock aulock( &(ClassLoader::m_tableLock) );
- unsigned i;
- for(i = 0; i < m_nextEntry; i++) {
- if(m_table[i]->m_unloading) {
- TRACE2("classloader.unloading.debug", " Skipping \"unloaded\" classloader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes << ")");
- continue;
- }
- TRACE2("classloader.unloading.debug", " Scanning loader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes << ")");
- if(!m_table[i]->m_markBit) {
- TRACE2("classloader.unloading.stats", " (!) Ready to unload classloader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes << ")");
- TRACE2("classloader.unloading.stats", " (!) This will free "
- << m_table[i]->GetFullSize() << " bytes in C heap");
- m_table[i]->m_unloading = true;
- m_unloadedBytes += m_table[i]->GetFullSize();
- }
- }
- TRACE2("classloader.unloading.do", "Finished checking loaders");
-}
-
-
-void ClassLoader::PrintUnloadingStats()
-{
- unsigned i;
- TRACE2("classloader.unloading.stats", "----------------------------------------------");
- TRACE2("classloader.unloading.stats", "Class unloading statistics:");
- hythread_suspend_disable();
- for(i = 0; i < m_nextEntry; i++) {
- if(m_table[i]->m_unloading) {
- TRACE2("classloader.unloading.stats", " Class loader "
- << m_table[i] << " (" << m_table[i]->m_loader << " : "
- << ((VTable*)(*(unsigned**)(m_table[i]->m_loader)))->clss->get_name()->bytes
- << ") contains " << m_table[i]->GetFullSize() << " bytes in C heap");
- }
- }
- hythread_suspend_enable();
- TRACE2("classloader.unloading.stats", "A total of "
- << m_unloadedBytes << " bytes would be freed in C heap for this scenario");
- TRACE2("classloader.unloading.stats", "----------------------------------------------");
-}
-
-
-void vm_classloader_iterate_objects(void *iterator) {
-
- // skip the object iteration if it is not needed
- // (logging is not enabled and
- // class unloading is not yet implemented).
- if (!is_info_enabled("class_unload")) return;
-
- Managed_Object_Handle obj;
- int nobjects = 0;
- while((obj = gc_get_next_live_object(iterator))) {
- nobjects++;
- }
- INFO2("class_unload", "classloader_iterate_objects " << nobjects << " iterated");
-}
-
-
ClassLoader* ClassLoader::AddClassLoader( ManagedObject* loader )
{
SuspendDisabledChecker sdc;
@@ -713,22 +615,6 @@
}
-unsigned ClassLoader::GetFullSize() {
- if(m_fullSize)
- return m_fullSize;
- m_fullSize = sizeof(ClassLoader);
- ClassTable::iterator cti;
- for(cti = m_loadedClasses->begin();
- cti != m_loadedClasses->end(); cti++)
- {
- if(cti->second->get_class_loader() == this) {
- m_fullSize += cti->second->calculate_size();
- }
- }
- return m_fullSize;
-}
-
-
Class* ClassLoader::WaitDefinition(Global_Env* env, const String* className)
{
VM_thread* cur_thread = get_thread_ptr();
@@ -1111,14 +997,6 @@
return NULL;
}
-void class_unloading_clear_mark_bits() {
- ClassLoader::ClearMarkBits();
-}
-
-void class_unloading_start() {
- ClassLoader::StartUnloading();
-}
-
inline void
BootstrapClassLoader::SetClasspathFromString(char* bcp,
apr_pool_t* tmp_pool)
Index: vm/vmcore/src/init/vm_shutdown.cpp
===================================================================
--- vm/vmcore/src/init/vm_shutdown.cpp (revision 521143)
+++ vm/vmcore/src/init/vm_shutdown.cpp (working copy)
@@ -172,7 +172,6 @@
// Print out gathered data.
#ifdef VM_STATS
- ClassLoader::PrintUnloadingStats();
VM_Statistics::get_vm_stats().print();
#endif