[squeak-dev] The Inbox: System-mt.697.mcz
Eliot Miranda
eliot.miranda at gmail.com
Tue Jan 27 21:55:45 UTC 2015
On Tue, Jan 27, 2015 at 1:21 PM, Levente Uzonyi <leves at elte.hu> wrote:
> AndreasSystemProfiler has the same bug, and it's annoyed me forever, so
> thanks for the fix.
>
> I'm not an expert, but here's an example:
>
> AndreasSystemProfiler spyOn: [
> [ #((1 2 3)) do: [ :each |
> each findLast: [ :ea |
> ea squared = ea ] ] ] bench ].
>
> Before the patch you got:
>
> 99.98 (5,018) UndefinedObject DoIt
> 10.39 (521) Array [SequenceableCollection] findLast:
> 9.68 (486) Array [SequenceableCollection] do:
> 5.94 (298) Time class millisecondClockValue
>
> But the profiled block doesn't send #findLast, nor #do:, and neither
> #millisecondClockValue. It sends #bench to a block, and nothing else.
>
> After the fix it's:
>
> 99.98 (5,018) UndefinedObject DoIt
> 99.98 (5,018) BlockClosure bench
> 99.96 (5,017) UndefinedObject DoIt
> 20.9 (1,049) Array [SequenceableCollection] do:
> |16.01 (804) UndefinedObject DoIt
> | 16.01 (803) Array [SequenceableCollection] findLast:
> 5.7 (286) Time class millisecondClockValue
>
> Which is much better, and almost exact. #millisecondsClockValue is sent
> from #bench, not from a block.
There's a printing bug there. IMO it should look like
99.98 (5,018) UndefinedObject DoIt
99.98 (5,018) BlockClosure bench
99.96 (5,017) [] in UndefinedObject DoIt
20.9 (1,049) Array [SequenceableCollection] do:
|16.01 (804) [] in UndefinedObject DoIt
| 16.01 (803) Array [SequenceableCollection] findLast:
5.7 (286) Time class millisecondClockValue
I'll take a look.
>
> Levente
>
>
> On Tue, 27 Jan 2015, Chris Muller wrote:
>
> This is easy for an expert to glance at and understand the nature of
>> the bug but could someone explain it to help our Smalltalk-user
>> community understand what has been wrong with MessageTally all these
>> years?
>>
>> Thanks!
>>
>> On Tue, Jan 27, 2015 at 12:54 PM, Bert Freudenberg <bert at freudenbergs.de>
>> wrote:
>>
>>> On 27.01.2015, at 19:37, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>>
>>>
>>> Wow, that's quite the bug :-)
>>>
>>>
>>> Indeed. I wonder how this could have ever worked. Or maybe just nobody
>>> noticed that certain chains were missing?
>>>
>>> - Bert -
>>>
>>>
>>>
>>> On Tue, Jan 27, 2015 at 8:53 AM, <commits at source.squeak.org> wrote:
>>>
>>>>
>>>> Marcel Taeumel uploaded a new version of System to project The Inbox:
>>>> http://source.squeak.org/inbox/System-mt.697.mcz
>>>>
>>>> ==================== Summary ====================
>>>>
>>>> Name: System-mt.697
>>>> Author: mt
>>>> Time: 27 January 2015, 5:53:38.431 pm
>>>> UUID: 9296f429-477d-0745-a878-6e11e7de5edd
>>>> Ancestors: System-cmm.696
>>>>
>>>> Let message tally ignore #home but just use #sender to handle block
>>>> closures correctly.
>>>>
>>>> =============== Diff against System-cmm.696 ===============
>>>>
>>>> Item was changed:
>>>> ----- Method: MessageTally>>tally:by: (in category 'tallying') -----
>>>> tally: context by: count
>>>> "Explicitly tally the specified context and its stack."
>>>> | sender |
>>>>
>>>> "Add to this node if appropriate"
>>>> context method == method ifTrue: [^self bumpBy: count].
>>>>
>>>> "No sender? Add new branch to the tree."
>>>> + (sender := context sender) ifNil: [
>>>> - (sender := context home sender)ifNil: [
>>>> ^ (self bumpBy: count) tallyPath: context by: count].
>>>>
>>>> "Find the node for the sending context (or add it if necessary)"
>>>> ^ (self tally: sender by: count) tallyPath: context by: count!
>>>>
>>>> Item was changed:
>>>> ----- Method: MessageTally>>tally:in:by: (in category 'tallying')
>>>> -----
>>>> tally: context in: aProcess by: count
>>>> "Explicitly tally the specified context and its stack."
>>>> | sender |
>>>>
>>>> "Add to this node if appropriate"
>>>> context method == method ifTrue: [^self bumpBy: count].
>>>>
>>>> "No sender? Add new branch to the tree."
>>>> + (sender := context sender) ifNil: [
>>>> - (sender := context home sender) ifNil: [
>>>> ^ (self bumpBy: count) tallyPath: context in: aProcess
>>>> by:
>>>> count].
>>>>
>>>> "Find the node for the sending context (or add it if necessary)"
>>>> ^ (self tally: sender in: aProcess by: count) tallyPath: context
>>>> in: aProcess by: count!
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> best,
>>> Eliot
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150127/0824b0dd/attachment-0001.htm
More information about the Squeak-dev
mailing list
|