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/30 14:55:13 UTC
svn commit: r480927 - in
/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support: Initialize.cpp
Verifier_stub.cpp
Author: gshimansky
Date: Thu Nov 30 05:55:12 2006
New Revision: 480927
URL: http://svn.apache.org/viewvc?view=rev&rev=480927
Log:
Applied HARMONY-2248 [drlvm] failed assert(m_initializing_thread == 0) on eclipse startup
Tests passed on ubuntu, suse9 and win2003 server
Modified:
harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp
harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Verifier_stub.cpp
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp?view=diff&rev=480927&r1=480926&r2=480927
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Initialize.cpp Thu Nov 30 05:55:12 2006
@@ -88,8 +88,10 @@
TRACE2("class.init", "initializing class " << m_name->bytes << "STEP 6" );
assert(m_state == ST_ConstraintsVerified);
- m_state = ST_Initializing;
assert(m_initializing_thread == 0);
+ lock();
+ m_state = ST_Initializing;
+ unlock();
m_initializing_thread = p_TLS_vmthread;
jthread_monitor_exit(jlc);
@@ -105,7 +107,9 @@
get_super_class()->get_error_cause());
tmn_suspend_disable();
m_initializing_thread = NULL;
+ lock();
m_state = ST_Error;
+ unlock();
assert(!hythread_is_suspend_enabled());
jthread_monitor_notify_all(jlc);
jthread_monitor_exit(jlc);
@@ -118,7 +122,9 @@
Method* meth = m_static_initializer;
if(meth == NULL) {
jthread_monitor_enter(jlc);
+ lock();
m_state = ST_Initialized;
+ unlock();
TRACE2("classloader", "class " << m_name->bytes << " initialized");
m_initializing_thread = NULL;
assert(!hythread_is_suspend_enabled());
@@ -139,7 +145,9 @@
if(!p_error_object) {
jthread_monitor_enter(jlc);
+ lock();
m_state = ST_Initialized;
+ unlock();
TRACE2("classloader", "class " << m_name->bytes << " initialized");
m_initializing_thread = NULL;
assert(m_error == NULL);
@@ -178,7 +186,9 @@
// --- step 11 ----------------------------------------------------------
assert(!hythread_is_suspend_enabled());
jthread_monitor_enter(jlc);
+ lock();
m_state = ST_Error;
+ unlock();
m_initializing_thread = NULL;
assert(!hythread_is_suspend_enabled());
jthread_monitor_notify_all(jlc);
Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Verifier_stub.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Verifier_stub.cpp?view=diff&rev=480927&r1=480926&r2=480927
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Verifier_stub.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Verifier_stub.cpp Thu Nov 30 05:55:12 2006
@@ -111,9 +111,14 @@
// lock class and check result
lock();
- if(in_error()) {
+ switch(m_state)
+ {
+ case ST_ConstraintsVerified:
+ case ST_Initializing:
+ case ST_Initialized:
+ case ST_Error:
unlock();
- return false;
+ return true;
}
if( result != VER_OK ) {
unlock();