> On 21 Aug 2015, at 19:31, Eliot Miranda <[email protected]> wrote:
>
> Hi Max,
>
> On Fri, Aug 21, 2015 at 8:57 AM, Max Leske <[email protected]
> <mailto:[email protected]>> wrote:
> Hi folks
>
> I’ve been trying to load Fuel into Squeak 5 but can’t because I get errors
> when loading Traits (they have not instance variables). The reason for this
> error seems to be that #instSize answers 2 for Traits when it should answer 0.
>
> The current implementation is:
>
> ^format bitAnd: 16rFFFF
>
> The comment in the 4.6 version says:
>
> "
> NOTE: This code supports the backward-compatible extension to 8 bits
> of instSize.
> When we revise the image format, it should become...
> ^ ((format bitShift: -1) bitAnd: 16rFF) - 1
> Note also that every other method in this category will require
> 2 bits more of right shift after the change.
> “
>
> When I use that version in TraitBehaviour>>instSize in Squeak 5 I get 0 as
> expected and I can load Fuel without problems.
>
> So Spur has a different layout for format than V3. The above implementation
> (format bitAnd: 16rFFFF) is correct for Spur. In loading classes or traits
> via Fuel from 4.6 to 5.0 you're going to have to convert the format inst var
> to reflect its usage in Spur. So we need to be clear here.
>
> Is the issue that you're trying to load classes and/or traits from a Fuel
> file written by 4.6 or is it that as part of the Fuel load a new Trait gets
> created which has a format of 2?
The latter. This is reproducible by simply creating a new Trait:
Trait named: #NewTrait
uses: #()
category: ‘new cat’.
NewTrait instSize “—> 2”
Cheers,
Max
>
>
> Cheers,
> Max
>
>
>
> --
> _,,,^..^,,,_
> best, Eliot