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

Bob Arning arning315 at comcast.net
Sat Sep 21 21:12:55 UTC 2013


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 
> <mailto: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
>     <mailto: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
>     <mailto: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/34840c92/attachment.htm


More information about the Squeak-dev mailing list