You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/10/24 21:33:52 UTC
svn commit: r467446 - in
/incubator/harmony/enhanced/drlvm/trunk/vm/thread/src:
thread_native_basic.c thread_native_condvar.c thread_native_park.c
Author: geirm
Date: Tue Oct 24 12:33:51 2006
New Revision: 467446
URL: http://svn.apache.org/viewvc?view=rev&rev=467446
Log:
HARMONY-1823
VM throws RuntimeException in AWT-EventDispatchThread with JET and OPT on all platforms
Verified failure with InterruptTest
Applied interrupt_fix.patch and states.patch
InterruptTest now passes
Also on Ubuntu 6 c-unit, smoke, ~kernel
Modified:
incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_basic.c
incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_condvar.c
incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_park.c
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_basic.c
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_basic.c?view=diff&rev=467446&r1=467445&r2=467446
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_basic.c (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_basic.c Tue Oct 24 12:33:51 2006
@@ -121,7 +121,6 @@
}
new_thread->priority = priority ? priority : HYTHREAD_PRIORITY_NORMAL;
- new_thread->state = TM_THREAD_STATE_ALIVE;
//new_thread->suspend_request = suspend ? 1 : 0;
start_proc_data = (thread_start_proc_data *) apr_palloc(new_thread->pool, sizeof(thread_start_proc_data));
@@ -590,7 +589,7 @@
thread_set_self(thread);
assert(thread == tm_self_tls);
- thread->state = TM_THREAD_STATE_ALIVE | TM_THREAD_STATE_RUNNABLE;
+ thread->state |= TM_THREAD_STATE_ALIVE | TM_THREAD_STATE_RUNNABLE;
if (!thread->thread_id) {
++next_id;
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_condvar.c
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_condvar.c?view=diff&rev=467446&r1=467445&r2=467446
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_condvar.c (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_condvar.c Tue Oct 24 12:33:51 2006
@@ -59,6 +59,8 @@
// check interrupted flag
if (interruptable && (this_thread->state & TM_THREAD_STATE_INTERRUPTED)) {
+ // clean interrupted flag
+ this_thread->state &= (~TM_THREAD_STATE_INTERRUPTED);
return TM_ERROR_INTERRUPT;
}
@@ -74,6 +76,8 @@
// check interrupted flag
if (interruptable && (this_thread->state & TM_THREAD_STATE_INTERRUPTED)) {
+ // clean interrupted flag
+ this_thread->state &= (~TM_THREAD_STATE_INTERRUPTED);
return TM_ERROR_INTERRUPT;
}
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_park.c
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_park.c?view=diff&rev=467446&r1=467445&r2=467446
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_park.c (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_native_park.c Tue Oct 24 12:33:51 2006
@@ -47,9 +47,17 @@
* @see hythread_unpark
*/
IDATA VMCALL hythread_park(I_64 millis, IDATA nanos) {
+ IDATA status;
hythread_t t = tm_self_tls;
assert(t);
- return hysem_wait_interruptable(t->park_event, millis, nanos);
+ status = hysem_wait_interruptable(t->park_event, millis, nanos);
+ //the status should be restored for j.u.c.LockSupport
+ ////
+ if (status == TM_ERROR_INTERRUPT) {
+ t->state |= TM_THREAD_STATE_INTERRUPTED;
+ }
+
+ return status;
}
/**