[squeak-dev] decompiler breaks some methods

David T. Lewis lewis at mail.msen.com
Tue May 18 23:33:03 UTC 2010


On Tue, May 18, 2010 at 02:17:40PM -0700, Eliot Miranda wrote:
> Hi Hans-Martin,
> 
> On Tue, May 18, 2010 at 12:15 PM, Hans-Martin Mosner <hmm at heeg.de> wrote:
> 
> > Hello,
> > while looking at the decompiled code of some OMeta methods I noticed
> > that the temp name handling in the decompiler seems to be broken.
> > When you compile a method with temps that are referenced from blocks,
> > the decompiler tends to rearrange the temp names, so this method
> >
> > test
> >    | one two |
> >    two := 2.
> >    ^{[one := 1].
> >    [ [one + two] value]}
> >
> > gets decompiled to this:
> >
> > test
> >    | one two |
> >    one := 2.
> >    ^ {[two := 1]. [[two + one] value]}
> >
> 
> OK, the issue in Squeak 4.1 is that the
> CodeHolder>>decompiledSourceIntoContents method is out of date.  Find
> attached.

I tried the Decompiler.1.cs patch in Squeak trunk, and it produces some undesirable
side effects. Here is what I did:

- saved a copy of changes file
- created a new method in a browser
- save and exit
- copy saved changes file back to changes file (to eliminate the source for new method)
- restart image
- decompiled code in browser shows bug reported by Hans-Martin Mosner
- loaded Decompiler.1.cs
- decompiled code in browser produces a "Note:" dialog, and the following
  (garbage) in the codeholder window:

    "ueak/Squeak3.10-dev/squeak.10.image"

Dave




More information about the Squeak-dev mailing list