pharo-win-i386-201701151442-c50dec0.zip

On Wed, Jan 25, 2017 at 3:57 PM, Esteban Lorenzano <esteba...@gmail.com>
wrote:

> nevertheless it should be there in latests vms.
> which version are you using?
>
> Esteban
>
> On 25 Jan 2017, at 15:04, p...@highoctane.be wrote:
>
> Tried it and it returns false for this Windows VM.
>
> Phil
>
> On Wed, Jan 25, 2017 at 2:14 PM, Clément Bera <bera.clem...@gmail.com>
> wrote:
>
>> I introduced the method #supportsWriteBarrier in Pharo 6.
>>
>> You can backport it if you want:
>>
>> VirtualMachine>>#supportsWriteBarrier
>> "Answer whether the VM observes the per-object read-only flag and
>> consequently
>> aborts writes to inst vars of, and fails primitives that attempt to
>> write, to read-only objects."
>>
>> ^(self parameterAt: 65)
>> ifNil: [false]
>> ifNotNil:
>> [:param| "In older VMs this is a boolean reflecting
>> MULTIPLE_BYTECODE_SETS"
>> param isInteger "In newer VMs it is a set of integer flags, bit 1 of
>> which is IMMUTABILITY"
>> ifTrue: [param anyMask: 2]
>> ifFalse: [false]]
>>
>>
>>
>> On Wed, Jan 25, 2017 at 2:06 PM, p...@highoctane.be <p...@highoctane.be>
>> wrote:
>>
>>> The "latest" Windows VM I do use has no such method.
>>>
>>> Virtual Machine
>>> ---------------
>>> C:\Users\Philippe\Dropbox\Sibelga\JiraAutomation\Pharo5.0\la
>>> testvm\pharo.exe
>>> CoInterpreter * VMMaker.oscog-eem.2090 uuid:
>>> 63a161b9-17e1-4911-a89a-1687d9ba9a1a Jan 15 2017
>>> StackToRegisterMappingCogit * VMMaker.oscog-eem.2090 uuid:
>>> 63a161b9-17e1-4911-a89a-1687d9ba9a1a Jan 15 2017
>>> VM: 201701151442 https://github.com/pharo-project/pharo-vm.git $ Date:
>>> Sun Jan 15 15:42:39 2017 +0100 $ Plugins: 201701151442
>>> https://github.com/pharo-project/pharo-vm.git $
>>>
>>> Win32 built on Jan 15 2017 15:59:52 CUT Compiler: 5.4.0
>>> VMMaker versionString VM: 201701151442 https://github.com/pharo-proje
>>> ct/pharo-vm.git $ Date: Sun Jan 15 15:42:39 2017 +0100 $ Plugins:
>>> 201701151442 https://github.com/pharo-project/pharo-vm.git $
>>> CoInterpreter * VMMaker.oscog-eem.2090 uuid:
>>> 63a161b9-17e1-4911-a89a-1687d9ba9a1a Jan 15 2017
>>> StackToRegisterMappingCogit * VMMaker.oscog-eem.2090 uuid:
>>> 63a161b9-17e1-4911-a89a-1687d9ba9a1a Jan 15 2017
>>>
>>> <image.png>
>>>
>>>
>>> On Wed, Jan 25, 2017 at 1:54 PM, Clément Bera <bera.clem...@gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Jan 25, 2017 at 11:35 AM, Norbert Hartl <norb...@hartl.name>
>>>> wrote:
>>>>
>>>>> Does anyone know the state of immutability support in vm and image?
>>>>> The latest vm downloadable is compiled with
>>>>>
>>>>> IMMUTABILITY=1
>>>>>
>>>>> (Esteban said that). When I open a pharo6 image with this VM and do:
>>>>>
>>>>> ASUser new
>>>>>         setIsReadOnlyObject: true;
>>>>>         name: 'foo'
>>>>>
>>>>> with
>>>>>
>>>>> ASUser>>#name: arg1
>>>>>         name := arg1
>>>>>
>>>>> I don't get an exception. Is there something missing or am I not
>>>>> understanding?
>>>>>
>>>>
>>>> Hi Norbert,
>>>>
>>>> Thank you very much for looking read-only objects.
>>>>
>>>> When mutating an instance variable, the VM triggers a call-back that by
>>>> default does nothing. In your case, running your code does not raise an
>>>> exception but the object should not be modified either. If you want an
>>>> exception, you need to change the call-back code, i.e., the method
>>>> Object>>#attemptToAssign: value withIndex: index. For example, you could
>>>> write:
>>>>
>>>> Object>>#attemptToAssign: value withIndex: index
>>>> | process |
>>>> self notify: 'object changed !'.
>>>> process := Processor activeProcess.
>>>> [ process suspendedContext: process suspendedContext sender ] forkAt:
>>>> Processor activePriority + 1.
>>>> Processor yield.
>>>>
>>>> Then, your code should open a notification window with 'object
>>>> changed', and proceeding keeps running the code without mutating the 
>>>> object.
>>>>
>>>> One needs to build a ModificationTracker framework on top of the VM
>>>> support I introduced. Multiple things are required, like default behavior
>>>> in this call-back and in primitive failure code. I am willing to support
>>>> and help anyone willing to build such a framework, but I won't build it
>>>> myself.
>>>>
>>>> If you have any other questions or if you find bug don't hesitate to
>>>> ask further questions
>>>>
>>>> Best,
>>>>
>>>> PS: Make sure "Smalltalk vm supportsWriteBarrier" answers true in your
>>>> system, if this is not the case it means the VM does not support read-only
>>>> objects.
>>>>
>>>> Clement
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>> Norbert
>>>>>
>>>>
>>>>
>>>
>>
>
>

Reply via email to