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
>>> 
>>> 
>> 
>> 
> 
> 


Reply via email to