Oct. 22, 2012
9:17 a.m.
Hello, I don't understand something on BlockClosure>>ensure:. Why does it use 'self valueNoContextSwitch' and not 'self value' ? In which case is there an issue ? Thank you for any answers BlockClosure>>ensure: is implemented this way : ensure: aBlock "Evaluate a termination block after evaluating the receiver, regardless of whether the receiver's evaluation completes. N.B. This method is *not* implemented as a primitive. Primitive 198 always fails. The VM uses prim 198 in a context's method as the mark for an ensure:/ifCurtailed: activation." | complete returnValue | <primitive: 198> returnValue := *self valueNoContextSwitch*. complete ifNil:[ complete := true. aBlock value. ]. ^ returnValue