[squeak-dev] Immutability and become

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Tue Jul 18 15:36:27 UTC 2017


2017-07-18 16:51 GMT+02:00 Bert Freudenberg <bert at freudenbergs.de>:

> On Tue, Jul 18, 2017 at 4:46 PM, Levente Uzonyi <leves at caesar.elte.hu>
> wrote:
>
>> On Tue, 18 Jul 2017, Bert Freudenberg wrote:
>>
>>     ​I don't know how the VM handles immutability in this case, but it's
>>> possible that it wouldn't let #become*: affect immutable objects.
>>>
>>>
>>> ​I think that would be fine, you should​ be able to become an immutable
>>> object and vice versa.
>>>
>>>       On the other hand, I'm sure it would let you change fields of
>>> immutable objects via #become*:, but that's not an issue in your case.
>>>
>>>
>>> ​This is debatable ...​ I would rather have the VM raise an error when
>>> trying to become a field of an immutable object. Immutable should mean
>>> immutable, no?
>>>
>>
>> #become: would become slow again if we had to find all objects
>> referencing the one we're about to swap. Or, we'd have to make the whole
>> object graph immutable when we make an object immutable. In that case
>> #become: could just fail when the receiver or the argument is immutable.
>>
>
> ​+1 for making the whole object graph be immutable. And
> "mutableObj becomeForward: immutableObj copyHash: false" should be the only
> allowed become case.
>
>
What if I change a class or superclass of an immutable?
(think add or remove an instance variable)


> - Bert -
>
> - Bert -​
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20170718/0625919b/attachment.html>


More information about the Squeak-dev mailing list