2010/12/31 <[email protected]>: > Updates: > Cc: marcus.denker > > Comment #4 on issue 3498 by marianopeck: remove:ifAbsent: in linked list > leads to interruption/sync problems > http://code.google.com/p/pharo/issues/detail?id=3498 > > Stef, I am not Adrian, but yes, I think that can be the reasons. Just take > the example of Andreas. When you do foo == nil, when that's compiled, it put > a special bytcode for the == primitive (no method is send). > It seems the scheduler can change processes during method sends. In most > clases, this may not be a problem. But if you cahnge foo == nil, by foo > isNil, it may be a point where it can be preempted. And maybe there are > places where this cannot happen, probably the place where the the processes > are managed or the code needed for that, like Andras said, process, delay, > semaphore, etc. > > What I don't understand is that I thought that the compiler replaces foo > isNil by foo == nil. And if this is the case, then what has been explained > doesn't make sense :( >
No, only #ifNil: is a selector handled specially by Compiler. Nicolas
