#include "STM.h"
#include "OSThreads.h"
#include "Capability.h"
+#include "Storage.h"
#include "Schedule.h"
#include "Sparks.h"
#include "Trace.h"
cap->mut_lists[g] = NULL;
}
- cap->free_tvar_wait_queues = END_STM_WAIT_QUEUE;
+ cap->free_tvar_watch_queues = END_STM_WATCH_QUEUE;
+ cap->free_invariant_check_queues = END_INVARIANT_CHECK_QUEUE;
cap->free_trec_chunks = END_STM_CHUNK_LIST;
cap->free_trec_headers = NO_TREC;
cap->transaction_tokens = 0;
// we now have the Capability, its run queue and spare workers
// list are both empty.
- // We end up here only in THREADED_RTS
- closeMutex(&cap->lock);
+ // ToDo: we can't drop this mutex, because there might still be
+ // threads performing foreign calls that will eventually try to
+ // return via resumeThread() and attempt to grab cap->lock.
+ // closeMutex(&cap->lock);
}
/* ----------------------------------------------------------------------------