On Dec 5, 2007, at 0:43 , Andreas Raab wrote:
Andreas Raab wrote:
I wouldn't call what I'm proposing a "dirty hack" - it's rather what I think primitiveSuspend really *ought* to do. The primitive is (and always was in my understanding) incomplete in this respect.
BTW, to emphasize this aspect have a look at the senders of #suspendingList. For example, ControlManager>>interruptName: does this
(suspendingList := activeControllerProcess suspendingList) == nil ifTrue: [activeControllerProcess == Processor activeProcess ifTrue: [activeControllerProcess suspend]] ifFalse: [suspendingList remove: activeControllerProcess ifAbsent: []. activeControllerProcess offList].
With the proposed change to #primitiveSuspend this becomes merely:
activeControllerProcess suspend.
(which is obviously the intended and correct way of doing things). Other places that get cleaned up with the modification include for example Process>>suspend (which becomes merely a call to #primitiveSuspend) and Project class>>interruptName: (and probably some others).
Sounds like the Right Thing to me.
- Bert -