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

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sat Sep 21 21:43:09 UTC 2013


Ah now I understand better thanks!
funny miss-interpretation...


2013/9/21 Bob Arning <arning315 at comcast.net>

>  I think the line
>
> Exception MessageNotUnderstood raised:
>
>
> means that MNU occurred (raised as in the java fanboy corruption of signal)
>
> Probably like this (from debug log posted moments ago):
>
> ClassDescription class(Object)>>doesNotUnderstand:
> #compile:notifying:trailer:ifFail:
>     Receiver: ClassDescription
>     Arguments and temporary variables:
>         aMessage:     compile: 'compile: text classified: category
> withStamp: changeStamp n...etc...
>         exception:     MessageNotUnderstood: ClassDescription
> class>>compile:notifying:trai...etc...
>         resumeValue:     nil
>     Receiver's instance variables:
>         superclass:     Behavior
>         methodDict:     a MethodDictionary(size 167)
>         format:     140
>         instanceVariables:     #('instanceVariables' 'organization')
>         organization:     ('initialize-release' forgetDoIts obsolete
> superclass:methodDicti...etc...
>         subclasses:     {TraitBehavior . Class . Metaclass}
>         name:     #ClassDescription
>         classPool:     a Dictionary(#TraitImpl->Trait )
>         sharedPools:     nil
>         environment:     Smalltalk
>         category:     #'Kernel-Classes'
>
> [] in MethodAddition>>createCompiledMethod
>     Receiver: a MethodAddition
>     Arguments and temporary variables:
> <<error during printing>
>
> Cheers,
> Bob
>
>  On 9/21/13 3:52 PM, Nicolas Cellier wrote:
>
>  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/e9d97b00/attachment.htm


More information about the Squeak-dev mailing list