You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2007/02/07 14:29:09 UTC

svn commit: r504541 - in /harmony/enhanced/drlvm/trunk/vm/vmcore: include/jni_utils.h src/class_support/classloader.cpp src/jni/jni_utils.cpp

Author: varlax
Date: Wed Feb  7 05:29:08 2007
New Revision: 504541

URL: http://svn.apache.org/viewvc?view=rev&rev=504541
Log:
Applied HARMONY-2264 [drlvm] race condition in ClassLoader::LookupLoader

Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/include/jni_utils.h
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni_utils.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/include/jni_utils.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/include/jni_utils.h?view=diff&rev=504541&r1=504540&r2=504541
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/include/jni_utils.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/include/jni_utils.h Wed Feb  7 05:29:08 2007
@@ -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);
 

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?view=diff&rev=504541&r1=504540&r2=504541
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Wed Feb  7 05:29:08 2007
@@ -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 << " : "

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni_utils.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni_utils.cpp?view=diff&rev=504541&r1=504540&r2=504541
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni_utils.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jni/jni_utils.cpp Wed Feb  7 05:29:08 2007
@@ -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)
 {