You should look in VM code clement / eliot can reply more precisely but the idea is to see when do you accept to suspend a computation. In Smalltlak this is after each message.
Stef > Stef, > > Am 14.11.2013 um 12:10 schrieb Stéphane Ducasse <stephane.duca...@inria.fr>: > >> Note that it would be good to have a special syntactic construct for that >> because now >> we rely on the way the compiler works to ensure such properties and it means >> that >> an accessor and a direct access are not semantically equals. >> > I was asking for pointers/locations where to look at. I like to wrap my head > around it in order to understand how it works and thus figuring out where and > when there is a problem. > > Norbert >> >> Stef >> >> >>>> On 14 Nov 2013, at 10:15, Stephan Eggermont <step...@stack.nl> wrote: >>>> >>>>> Reading this code, made me wonder what operations are actually atomic. >>>>> Anyone having a good explanation? >>>>> >>>>> Stephan >>>>> >>>>> AtomicQueueItem>makeCircular >>>>> "Make a receiver circular, i.e. point to itself, >>>>> answer the old value of next variable. >>>>> Note, this operation should be atomic" >>>>> >>>>> | temp | >>>>> >>>>> " atomic swap here" >>>>> temp := next. >>>>> next := self. >>>>> >>>>> ^ temp >>>>> >>>> -> no message send >>>> -> no back jump bytecode >>>> >>>> therefore it can not be interrupted and process switches can not happen >>>> between the statements. >>> >>> Thanks, I learn something new every day. I’ve never thought about the >>> condition when a process switch can happen. Can you say in short when a >>> switch of processes is checked? Because I think I won’t finding it in a >>> reasonable time looking myself. >>> >>> Norbert >>> >>> >> >> > >