thinking some more about it, I think the implementation should respect the comment. Clearly, as it is, we can put the same process on multiple lists, which seems very wrong. Also, a process that stopped executing by waiting on a semaphore has started executing again without the semaphore being signalled, and with the process still on the semaphore's list.
| evaluationProcess result sema testProcess | sema := Semaphore new. testProcess := Processor activeProcess. result := OrderedCollection new. evaluationProcess := [ result add: testProcess isBlocked. testProcess resume. result add: testProcess isBlocked. result add: (sema includes: testProcess). ] fork. sema wait. result
vm-dev@lists.squeakfoundation.org