[squeak-dev] The Trunk: Traits-nice.299.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sat Sep 21 19:52:03 UTC 2013


Please send reports, I'm all ear.
Though I'm not aware of any raised: no sender no implementor in my image.
Or is it raised ? It's a Morph thing...


2013/9/21 Frank Shearar <frank.shearar at gmail.com>

> For instance: http://build.squeak.org/job/SqueakTrunk/536/console
>
> Look for
>
> Exception MessageNotUnderstood raised:
> Behavior class>>compile:notifying:trailer:ifFail:
>
> I don't know where it's coming from yet - that's the entire stack trace.
>
> frank
>
>
> On 21 September 2013 18:17, Chris Muller <asqueaker at gmail.com> wrote:
> > I would expect these changes to break a lot of code..
> >
> > On Fri, Sep 20, 2013 at 2:45 PM,  <commits at source.squeak.org> wrote:
> >> Nicolas Cellier uploaded a new version of Traits to project The Trunk:
> >> http://source.squeak.org/trunk/Traits-nice.299.mcz
> >>
> >> ==================== Summary ====================
> >>
> >> Name: Traits-nice.299
> >> Author: nice
> >> Time: 20 September 2013, 9:45:04.474 pm
> >> UUID: d6c18da8-7e93-4bcc-b94e-7f67426a2965
> >> Ancestors: Traits-nice.298
> >>
> >> Don't pass a category to a Compiler, classifying is not its job.
> >>
> >> =============== Diff against Traits-nice.298 ===============
> >>
> >> Item was changed:
> >>   ----- Method: ClassDescription>>traitAddSelector:withMethod: (in
> category '*Traits-NanoKernel') -----
> >>   traitAddSelector: selector withMethod: traitMethod
> >>         "Add a method inherited from a trait.
> >>         Recompiles to avoid sharing and implement aliasing."
> >>         | oldMethod source methodNode newMethod originalSelector |
> >>         oldMethod := self compiledMethodAt: selector ifAbsent:[nil].
> >>         oldMethod ifNotNil:[
> >>                 "The following is an important optimization as it
> prevents exponential
> >>                 growth in recompilation. If T1 is used by T2 and T2 by
> T3 then (without
> >>                 this optimization) any change in T1 would cause all
> methods in T2 to be
> >>                 recompiled and each recompilation of a method in T2
> would cause T3
> >>                 to be fully recompiled. The test eliminates all such
> situations."
> >>                 (oldMethod sameTraitCodeAs: traitMethod)
> ifTrue:[^oldMethod].
> >>         ].
> >>         originalSelector := traitMethod selector.
> >>         source := traitMethod methodClass sourceCodeAt:
> originalSelector.
> >>         originalSelector == selector ifFalse:[
> >>                 "Replace source selectors for aliases"
> >>                 source := self replaceSelector: originalSelector
> withAlias: selector in: source.
> >>         ].
> >>         methodNode := self newCompiler
> >> +               compile: source in: self notifying: nil ifFail:[^nil].
> >> -               compile: source in: self classified: nil notifying: nil
> ifFail:[^nil].
> >>         newMethod := methodNode generate: self defaultMethodTrailer.
> >>         newMethod putSource: source fromParseNode: methodNode inFile: 2
> >>                 withPreamble: [:f | f cr; nextPut: $!!; nextChunkPut:
> 'Trait method'; cr].
> >>         newMethod originalTraitMethod: traitMethod.
> >>         ^super addSelectorSilently: selector withMethod: newMethod.!
> >>
> >>
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130921/de8ebc54/attachment.htm


More information about the Squeak-dev mailing list