[squeak-dev] The Trunk: Traits-nice.299.mcz
Frank Shearar
frank.shearar at gmail.com
Sat Sep 21 17:33:40 UTC 2013
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.!
>>
>>
>
More information about the Squeak-dev
mailing list
|