On 14 nov. 2013, at 12:38, Stéphane Ducasse <stephane.duca...@inria.fr> wrote:
> 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. Except for #== and inlined message like #ifTrue:ifFalse: , #to:do: , etc... See http://forum.world.st/About-and-td3898409.html for more details > 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 >>>> >>>> >>> >>> >> >> > >