[squeak-dev] Re: becomeForward: alternative

Rob Withers reefedjib at yahoo.com
Thu Sep 18 16:09:06 UTC 2008


----- Original Message ----- 
From: "Paolo Bonzini" <bonzini at gnu.org>
To: "The general-purpose Squeak developers list" 
<squeak-dev at lists.squeakfoundation.org>
Sent: Tuesday, September 16, 2008 3:59 PM
Subject: [squeak-dev] Re: becomeForward: alternative


> Rob Withers wrote:
>> I am trying to becomeForward with an object and a small integer.  This
>> of course doesn't work.  Is there an alternative that would allow me to
>> do this?
>
> There's actually no reason why the *destination* of a becomeForward:
> cannot be a SmallInteger.  It's a VM bug in my opinion.
>

Thanks, Paolo.

I tried looking into this a bit and here is what I have found.  First off, 
this will only work with
    #elementsForwardIdentityTo: anArrayWithSmallIntegers copyHash: false.
It would not work to copy the source hash to a SmallInteger.

Next is understanding forwarding blocks and the process of remapping objects 
using them.  There are three steps:
    1) #prepareForwardingTableForBecoming:with:twoWay:  "create and init 
forwarding blocks, and install into original headers"
    2) #mapPointersInObjectsFrom:to:  "point pointers to forwarded oop"
    3) #restoreHeadersAfterForwardBecome: "restore original headers"
The question seems to come down to the following.  Can forwarding blocks 
point to SmallIntegers?

Rob

> Paolo
> 




More information about the Squeak-dev mailing list