[squeak-dev] Immutability and become

Bert Freudenberg bert at freudenbergs.de
Tue Jul 18 14:51:58 UTC 2017


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.

- Bert -

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


More information about the Squeak-dev mailing list