You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2006/11/10 02:38:25 UTC
svn commit: r473160 -
/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
Author: gshimansky
Date: Thu Nov 9 17:38:24 2006
New Revision: 473160
URL: http://svn.apache.org/viewvc?view=rev&rev=473160
Log:
Applied HARMONY-1932 [drlvm] ClassLoader.defineClass() method should throw LinkageError if it's called more that once for the same class
Tests passed on ubuntu and windows xp
Modified:
incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?view=diff&rev=473160&r1=473159&r2=473160
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Thu Nov 9 17:38:24 2006
@@ -732,7 +732,6 @@
{
VM_thread* cur_thread = get_thread_ptr();
LoadingClass* loading;
- Class** pclss;
Class* clss = NULL;
m_lock._lock();
do
@@ -741,12 +740,8 @@
m_lock._unlock();
return NULL;
}
- if((pclss = m_loadedClasses->Lookup(className)) != NULL) {
- m_lock._unlock();
- return *pclss;
- }
loading = m_loadingClasses->Lookup(className);
- if(loading) {
+ if(loading && m_loadedClasses->Lookup(className) == NULL) {
TRACE2("classloader.collisions", this << " " << cur_thread << " DC " << className->bytes);
if(!loading->HasDefiner()) {
break;