<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Hi all!<div><br></div><div>Thank you all for the clarification. Yes, please let's not copy the identity hash by default.</div><div><br></div><div>+1 on changing the default behind #becomeForward:</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
<p style="color: #AAAAAA; margin-top: 10px;">Am 15.04.2020 09:59:09 schrieb Levente Uzonyi <leves@caesar.elte.hu>:</p><div style="font-family:Arial,Helvetica,sans-serif">Hi Chris,
<br>
<br>On Tue, 14 Apr 2020, Chris Muller wrote:
<br>
<br>> Hi Eliot,
<br>>
<br>>
<br>> Right. A couple of questions are
<br>> 1. what the f**k are become: becomeForward: becomeForward:copyHash: et al doing in ProtoObject? (IMO, they should be in Object and have no business being in ProtoObject whatsoever).
<br>>
<br>>
<br>> For Proxy's. They don't typically inherit from Object, but must be able to become their normal object upon receiving a message it #doesNotUnderstand:. Maybe you're implying those programs should be using the mirror
<br>> primitives, but those weren't always available, so hopefully that at least answers your question.
<br>
<br>The primitives are defined on arrays. A proxy can and should always do
<br>
<br> { self } elementsForwardIdentityTo: { proxiedObject }
<br>
<br>So, that's not a reason to have those methods implemented by ProtoObject.
<br>
<br>>
<br>> 2. whether becomeForward: should do copyHash: true by default. This seems wrong to me, and implementing is as copyHash: false makes more sense. But I'm wondering if there are important use cases.
<br>>
<br>>
<br>> Yes, changing the identityHash without changing the identity is basically "wrong", and even dangerous if it's a system Symbol used as keys in IdentityDictionary's like Environments, etc.
<br>>
<br>> Object new becomeForward: #size "do it = lock up your image"
<br>
<br>The VM won't let you overwrite the Symbol's identityHash in current
<br>Trunk, you'll get an error instead.
<br>
<br>
<br>Levente
<br>
<br>>
<br>> - Chris
<br>>
<br>><br></div></blockquote>
</div></body>