[squeak-dev] The Inbox: System-kfr.1036.mcz

David T. Lewis lewis at mail.msen.com
Sat Jun 23 21:49:19 UTC 2018


I moved System-kfr.1036 to trunk. I'm sure if someone thinks it's a bad
idea, they will speak up soon :-)

Dave

On Sat, Jun 23, 2018 at 09:15:50PM +0200, H. Hirzel wrote:
> Retest of loading this version
> 
> http://etoys.laptop.org/src/Content/ExampleEtoys/CarAndPen.014.pr
> 
> still works after applying System-kfr.1036.mcz
> 
> On 6/23/18, karl ramberg <karlramberg at gmail.com> wrote:
> > FlasherMorph to Flasher is a known rename. But if you use Flasher in a new
> > project in trunk 5.2 it would create a false positive rename on loading.
> > This is a hopefully a fix for that issue.
> >
> > Best,
> > Karl
> > On Sat, 23 Jun 2018 at 19:58, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> >
> >> I did a re-test with loading
> >>
> >> https://freudenbergs.de/bert/squeakjs/Etoys/Home.007.pr
> >>
> >> No problem with loading and FlasherMorph.
> >> http://wiki.squeak.org/squeak/1169
> >>
> >> The car moves around.
> >>
> >> A unrelated problem as it seems with a script though.
> >>
> >> --Hannes
> >>
> >> On 6/23/18, David T. Lewis <lewis at mail.msen.com> wrote:
> >> > On Sat, Jun 23, 2018 at 04:02:29PM +0200, H. Hirzel wrote:
> >> >> Adding the two lines
> >> >>
> >> >> "make sure we don't try to convert classes not in structures to
> >> >> renamed
> >> >> classes"
> >> >> renamed keysDo:[ :renamedClass | structures at: renamedClass
> >> >> ifAbsent:[ renamed removeKey: renamedClass]].
> >> >>
> >> >>
> >> >> to
> >> >>
> >> >> SmartRefStream>>reshapedClassesIn:
> >> >>
> >> >>
> >> >> makes a number of *.pr  (SqueakLand project files) load into Squeak
> >> >> 5.2a which previously did not load.  See screen shot. This does not
> >> >> necessarily mean that they work, but they load without an error
> >> >> message.
> >> >
> >> > Thanks for the explanation, and the screen shot illustrates nicely :-)
> >> >
> >> >
> >> >>
> >> >> The instance variable 'renamed' of SmartRefStream contains a
> >> >> dictionary of Classes who have a different name.
> >> >>
> >> >> When loading a project an instance of the new class is made and a
> >> >> conversion call is sent to that instance.
> >> >>
> >> >> (old class name symbol -> new class name).
> >> >>
> >> >>
> >> >> The instance variable 'structures' contains the structure of classes
> >> >> (class version and order and names of instance variables written then
> >> >> the *.pr file was saved
> >> >>
> >> >> Example:
> >> >>
> >> >> structures
> >> >>
> >> >> Dictionary of (#Rectangle -> #(<classVersionInteger> 'origin'
> >> 'corner')).
> >> >>
> >> >> Inst var names are strings.
> >> >>
> >> >>
> >> >>
> >> ----------------------------------------------------------------------------------
> >> >> Recommendation: This fix should be moved to the trunk
> >> >>
> >> ----------------------------------------------------------------------------------
> >> >>
> >> >
> >> > +1
> >> >
> >> > Any objections?
> >> >
> >> > This would be good to move to trunk. I don't think it causes any issues
> >> > for the upcoming release, and it is a good improvement (since after
> >> > all,
> >> > you cannot debug Etoys projects if you cannot even load them in the
> >> > first
> >> > place.
> >> >
> >> > I do have one question. Is this a workaround for a bug elsewhere in
> >> > SmarRefStream?
> >> > It seems like #reshapedClassesIn: is expecting that anything in the
> >> renamed
> >> > dictionary should already be in the structures dictionary. If that is
> >> > not
> >> > the case, is that because of a bug, or is it simply the case the the
> >> > situation
> >> > occurs normally when dealing with a class that does not exist in the
> >> system
> >> > at all?
> >> >
> >> > I tried loading EtoysProjects/Home.007.pr to check this in a debugger,
> >> and
> >> > I can see that the condition occurs when trying to load FlasherMorph,
> >> which
> >> > is not in my image. That suggests this is a "normal" condition, and the
> >> > end result after loading this project would be unresolved references to
> >> > that missing class.
> >> >
> >> > Sorry for the long question, I'm just trying to understand how this
> >> works.
> >> >
> >> > Either way, +1 for moving to trunk.
> >> >
> >> > Dave
> >> >
> >> >>
> >> >>
> >> >>
> >> >> On Thu, 21 Jun 2018 18:49:47 0000, commits at source.squeak.org
> >> >> <commits at source.squeak.org> wrote:
> >> >> > A new version of System was added to project The Inbox:
> >> >> > http://source.squeak.org/inbox/System-kfr.1036.mcz
> >> >> >
> >> >> > ==================== Summary ====================
> >> >> >
> >> >> > Name: System-kfr.1036
> >> >> > Author: kfr
> >> >> > Time: 21 June 2018, 8:49:18.217801 pm
> >> >> > UUID: 4150334e-4f5f-744c-b5b7-814cef973cc0
> >> >> > Ancestors: System-kfr.1035
> >> >> >
> >> >> > Remove classes from SmartRefStream instanceVariable renamed that not
> >> are
> >> >> > in
> >> >> > structures so we avoid false positives
> >> >> >
> >> >> > =============== Diff against System-kfr.1035 ===============
> >> >> >
> >> >> > Item was changed:
> >> >> >   ----- Method: SmartRefStream>>reshapedClassesIn: (in category
> >> 'import
> >> >> > image segment') -----
> >> >> >   reshapedClassesIn: outPointers
> >> >> >    "Look for classes in the outPointer array that have changed
> >> >> > shape.
> >> >> > Make
> >> >> > a fake class for the old shape.  Return a dictionary mapping Fake
> >> >> > classes to
> >> >> > Real classes.  Substitute fake classes for real ones in
> >> >> > outPointers."
> >> >> >
> >> >> >    | mapFakeClassesToReal |
> >> >> >
> >> >> >    self flag: #bobconv.
> >> >> > +  "make sure we don't try to convert classes not in structures to
> >> >> > renamed
> >> >> > classes"
> >> >> > +  renamed keysDo:[ :renamedClass | structures at: renamedClass
> >> >> > ifAbsent:[
> >> >> > renamed removeKey: renamedClass]].
> >> >> >
> >> >> > -
> >> >> >    mapFakeClassesToReal := IdentityDictionary new.
> >> >> >    outPointers withIndexDo: [:outp :ind | | originalName fakeCls |
> >> >> >            outp isBehavior ifTrue: [
> >> >> >                    originalName := renamed keyAtValue: outp name
> >> >> >                            ifAbsent: [renamedConv at: ind ifAbsent:
> >> [outp name]].
> >> >> > +                  "in DiskProxy>>comeFullyUpOnReload: we saved the
> >> name at the index"
> >> >> > -                  structures at: originalName ifAbsent:
> >> [originalName := outp name].
> >> >> > "check for false positives in renamed"
> >> >> > -                          "in DiskProxy>>comeFullyUpOnReload: we
> >> saved the name at the
> >> >> > index"
> >> >> >                    fakeCls := self mapClass: outp origName:
> >> originalName.
> >> >> >                    fakeCls == outp ifFalse: [
> >> >> >                            mapFakeClassesToReal at: fakeCls put:
> >> >> > outp.
> >> >> >                            outPointers at: ind put: fakeCls]]].
> >> >> >    ^ mapFakeClassesToReal!
> >> >> >
> >> >> >
> >> >> >
> >> >
> >> >
> >> >>
> >> >
> >> >
> >> >
> >>
> >>
> >
> 


More information about the Squeak-dev mailing list