On 22 Aug 2015, at 19:21, Eliot Miranda <eliot.miranda@gmail.com> wrote:Hi Max,On Fri, Aug 21, 2015 at 2:11 PM, Max Leske <maxleske@gmail.com> wrote:On 21 Aug 2015, at 19:31, Eliot Miranda <eliot.miranda@gmail.com> wrote:Hi Max,On Fri, Aug 21, 2015 at 8:57 AM, Max Leske��<maxleske@gmail.com>��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: #NewTraituses: #()category: ���new cat���.NewTrait instSize ������> 2���I just took a look at this and it doesn't reproduce.�� I'm using a trunk Squeak 5 image and I get 0 and required. ?Thanks Eliot. You���re right. The problem is not with #instSize, I don���t know how I managed to get the above���The problem is actually, that TApplyingOnClassSide (which is already present) has a format of 2:TApplyingOnClassSide instSize ������> 2���Also, all Traits in the image have format 2, while new Traits have format 0:format2 := Smalltalk allTraits select: [ :e | e format = 2 ].Smalltalk allTraits size = format2 size ������> true"Trait named: #NewTraituses: #()category: 'new cat���.NewTrait instSize ������> 0"format2 := Smalltalk allTraits select: [ :e | e format = 2 ].Smalltalk allTraits size = format2 size ������> false���This is with build 15113 (which is trunk I suppose).Cheers,MaxCheers,Max
Cheers,
Max--��_,,,^..^,,,_best,��Eliot--_,,,^..^,,,_best,��Eliot