On Wed, Nov 22, 2017 at 9:05 PM, Stephane Ducasse <stepharo.s...@gmail.com> wrote:
> Hi clement > > you should discuss with marcus. I had the impression that he was > thinking that slot should disappear. > Then let's use fieldAt:/fieldAt:put: > > Stef > > On Wed, Nov 22, 2017 at 2:35 PM, Clément Bera <bera.clem...@gmail.com> > wrote: > > Hi All, > > > > It seems Pharo is lacking the slotAt: / slotAt:put: primitive and that > the > > instVarAt: / instVarAt:put: primitive is not doing what it says it does. > > When I look at Object>>#instVarAt: I see: > > > > "[...]Answer a fixed variable in an object. The numbering of the > variables > > corresponds to the named instance variables, followed by the indexed > > instance > > variables. Fail if the index is not an Integer or is not the index of a > > fixed variable[...]" > > > > Now in Pharo 7 when one does: > > > > #(iv1) instVarAt: 1, one gets #iv1. > > > > So the comment is wrong. > > > > The reason for this is that instVarAt: / instVarAt:put: should be > primitive > > 73/74, while they are in Pharo 173/174 (primitive slotAt:/slotAt:put:). > The > > slot primitive access pointer slots of objects, whichever inst var or > > variable fields. A good example would be: > > > > | t | > > t := #temp. > > [ t ] instVarAt: 4, one gets #temp > > > > So I have two solutions for this problem: > > 1) We change the instVarAt: / instVarAt:put: primitives comments to match > > the slotAt: / slotAt:put: behavior, and in Pharo instVarAt: / > instVarAt:put: > > means in factslotAt: / slotAt:put: . > > 2) We change the instVarAt: / instVarAt:put: primitives to primitive 73 > and > > 74, we introduce slotAt: / slotAt:put: with primitive 173/174 and we ask > > everyone to fix their code relying on instVarAt: / instVarAt:put: acting > as > > slotAt: / slotAt:put: > > > > What do you think ? > > > > Best, > > > > > > -- > > Clément Béra > > Pharo consortium engineer > > https://clementbera.wordpress.com/ > > Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq > > -- Clément Béra Pharo consortium engineer https://clementbera.wordpress.com/ Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq