New implementation of wait, notify, and notifyAll. Uses an explicit
queue to represent the wait set instead of the implicit queue within
the monitor condition variable.
diff --git a/vm/Thread.c b/vm/Thread.c
index 2bd540d..fc200c1 100644
--- a/vm/Thread.c
+++ b/vm/Thread.c
@@ -1000,7 +1000,7 @@
/*
* Initialize invokeReq.
*/
- pthread_mutex_init(&thread->invokeReq.lock, NULL);
+ dvmInitMutex(&thread->invokeReq.lock);
pthread_cond_init(&thread->invokeReq.cv, NULL);
/*
@@ -1028,6 +1028,9 @@
memset(&thread->jniMonitorRefTable, 0, sizeof(thread->jniMonitorRefTable));
+ pthread_cond_init(&thread->waitCond, NULL);
+ dvmInitMutex(&thread->waitMutex);
+
return true;
}