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