[squeak-dev] How to become immediate objects? :-)

Chris Muller asqueaker at gmail.com
Thu Apr 16 19:01:13 UTC 2020


Hey Hernan,


http://lists.squeakfoundation.org/pipermail/squeak-dev/2000-January/006970.html

Done!   :)


On Wed, Apr 15, 2020 at 7:02 PM Eliot Miranda <eliot.miranda at gmail.com>
wrote:

> Hi Chris, Hi All,
>
> On Wed, Apr 15, 2020 at 3:14 PM Chris Muller <asqueaker at gmail.com> wrote:
>
>> But the hash can't always be copied over, so it's a tough decision what
>>> the default should be:
>>> - if the hash is not copied by default, the lack of rehashing will cause
>>> elements to be not found in the affected collections
>>
>> - if the hash is copied, runtime errors will be raised when coping the
>>> hash is not possible.
>>>
>>
>> I think a "lack of rehashing" issue could also occur in the latter case,
>> too, if the target of the become (the argument) was in a identity hashed
>> collection..
>>
>
> Right.  The major use case for which copyHash being true is correct is
> class reshaping where new instances of the reshaped class are created and
> all existing instances are forwarded to the new instances.  Were the new
> instances' hashes too be left alone, all hell would break lose.
>
> So I did the deed.  See commits below.  elementsForwardIdentityTo: now
> uses the primitive (number) that implicitly has copyHash false.
> elementsForwardIdentityAndHashTo: has the old behaviour with copyHash true;
> it is effectively the rename ing of the old elementsForwardIdentityTo:.
> The become: wrappers have been moved down to Object from ProtoObject.  The
> ClassBuilder and ClassDescription have been changed to use
> elementsForwardIdentityAndHashTo: when migrating.  So hopefully the system
> should continue as normal except that a casual use of becomeForward: to a
> read-only object should now work as expected.
>
> The change to the error c ode of the primitive will require new VMs.
> Those should be ready by week's end. Apologies until then.
>
> Name: Collections-eem.885
>
> Author: eem
>
> Time: 15 April 2020, 4:37:54.800631 pm
>
> UUID: 45d219d3-6ed0-4401-a820-44eebe21d71a
>
> Ancestors: Collections-eem.883, Collections-dtl.884
>
>
> Switch elementsForwardIdentityTo: to not copy the hash, see
> http://forum.world.st/How-to-become-immediate-objects-td5114931.html.
>
> Add elementsForwardIdentityAndHashTo: for the old behavior.
>
>
> Name: Kernel-eem.1322
>
> Author: eem
>
> Time: 15 April 2020, 4:39:29.367332 pm
>
> UUID: 94e874d1-0572-4a1d-9934-edcf87b8ecb5
>
> Ancestors: Kernel-eem.1321
>
>
> Move the become: methods from ProtoObject to Object.  See
> http://forum.world.st/How-to-become-immediate-objects-td5114931.html
>
>
> Name: Kernel-eem.1323
>
> Author: eem
>
> Time: 15 April 2020, 4:46:14.261016 pm
>
> UUID: 5ea740f0-f4c6-4808-b7b6-2e3aee87aa91
>
> Ancestors: Kernel-eem.1322
>
>
> Update the ClassBuilder and instance migration, given the changes in
> Collections-eem.885.  See
> http://forum.world.st/How-to-become-immediate-objects-td5114931.html.
>
>
>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200416/d4196e89/attachment.html>


More information about the Squeak-dev mailing list