> On 28 Aug 2015, at 02:15, Eliot Miranda <[email protected]> wrote: > > Hi Max, > > fixed in Squeak via a preamble in a new version of Traits. I must > remember to fix this in the bootstrap so that it doesn't afflict Pharo Spur.
Great, thanks! > > On Sun, Aug 23, 2015 at 4:34 AM, Max Leske <[email protected] > <mailto:[email protected]>> wrote: > >> On 22 Aug 2015, at 19:21, Eliot Miranda <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi Max, >> >> On Fri, Aug 21, 2015 at 2:11 PM, Max Leske <[email protected] >> <mailto:[email protected]>> wrote: >> >>> On 21 Aug 2015, at 19:31, Eliot Miranda <[email protected] >>> <mailto:[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” >> >> 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: #NewTrait > uses: #() > 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, > Max > >> >> Cheers, >> Max >> >>> >>> >>> Cheers, >>> Max >>> >>> >>> >>> -- >>> _,,,^..^,,,_ >>> best, Eliot >> >> >> >> >> -- >> _,,,^..^,,,_ >> best, Eliot > > > > > > > > -- > _,,,^..^,,,_ > best, Eliot
