Index: vm/vmcore/include/jni_utils.h =================================================================== --- vm/vmcore/include/jni_utils.h (revision 504044) +++ vm/vmcore/include/jni_utils.h (working copy) @@ -37,7 +37,6 @@ VMEXPORT jobject jni_class_loader_from_handle(JNIEnv*, ClassLoaderHandle); VMEXPORT ClassLoaderHandle class_loader_lookup(jobject loader); VMEXPORT void class_loader_load_native_lib(const char* lib, ClassLoaderHandle loader); -VMEXPORT ClassLoaderHandle class_loader_find_if_exists(jobject loader); VMEXPORT jvalue *get_jvalue_arg_array(Method *method, va_list args); Index: vm/vmcore/src/jni/jni_utils.cpp =================================================================== --- vm/vmcore/src/jni/jni_utils.cpp (revision 504044) +++ vm/vmcore/src/jni/jni_utils.cpp (working copy) @@ -90,17 +90,6 @@ } -ClassLoaderHandle class_loader_find_if_exists(jobject loader) -{ - ObjectHandle h = (ObjectHandle)loader; - - hythread_suspend_disable(); //---------------------------------v - ClassLoader* cl = ClassLoader::FindByObject(h->object); - hythread_suspend_enable(); //---------------------------------^ - - return cl; -} //class_loader_find_if_exists - VMEXPORT jvalue *get_jvalue_arg_array(Method *method, va_list args) { Index: vm/vmcore/src/class_support/classloader.cpp =================================================================== --- vm/vmcore/src/class_support/classloader.cpp (revision 504044) +++ vm/vmcore/src/class_support/classloader.cpp (working copy) @@ -415,7 +415,7 @@ ClassLoader* ClassLoader::FindByObject(ManagedObject* loader) { - LMAutoUnlock aulock( &(ClassLoader::m_tableLock) ); + LMAutoUnlock aulock(&(ClassLoader::m_tableLock)); ClassLoader* cl; for(unsigned i = 0; i < m_nextEntry; i++) { @@ -428,6 +428,7 @@ ClassLoader* ClassLoader::LookupLoader( ManagedObject* loader ) { + LMAutoUnlock aulock(&(ClassLoader::m_tableLock)); if( !loader ) return NULL; ClassLoader *cl = FindByObject( loader ); if( cl ) @@ -568,7 +569,6 @@ { SuspendDisabledChecker sdc; - LMAutoUnlock aulock( &(ClassLoader::m_tableLock) ); ClassLoader* cl = new UserDefinedClassLoader(); TRACE2("classloader.unloading.add", "Adding class loader " << cl << " (" << loader << " : "