Hi Stephane, I added the exception just to instrument code and trace the usage of degenerated Rectangles. You must execute the MessageTally snippet in a workspace and then do some normal Pharo activity (since I presume you have some developer activity, open a MC browser or system browser, select a method, browse implementors, etc...) The snippet does emulate the World activity, but is catching the DegeneratedRectangle notification and tallying the call stack each time this notification is raised. You then get a nice report of each and every call stack that raised a DegeneratedRectangle... Inserting a halt in place of the notification in the hope to debug it is impossible (try it) Otherwise you can try and use haltOnce, but IMO it's too limited. Nicolas 2013/2/14 stephane ducasse <stephane.ducasse@free.fr>:
Nicolas
I did what you suggest
Notification subclass: #DegeneratedRectangle instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Kernel-BasicObjects'
Rectangle>>setOrigin: topLeft corner: bottomRight origin := topLeft. corner := bottomRight. (self width < 0 or: [ self height < 0 ]) ifTrue: [ DegeneratedRectangle signal ]
Then in a workspace:
tally := MessageTally new. tally spyEvery: 100 on: ['em ezilaitini ot si siht' reverse]. tally class: World class method: World class>>#doOneCycle. "middle lines begin" tallyEnd := false. [(Delay forSeconds: 300) wait. tallyEnd := true] fork. [[World doOneCycle. Processor yield.tallyEnd] whileFalse] on: DegeneratedRectangle do: [:exc | tally tally: exc signalerContext by: 1. exc resume]. (StringHolder new contents: (String streamContents: [:s | tally report: s])) openLabel: 'DegeneratedRectangle Spy Results'. "middle lines end" tally close.
But I get nothing 20531 Then I do not understand the trace you sent where is the information about the wrong rectangle in it.
and here we go:
- 371 tallies, 2 msec.
**Tree** -------------------------------- Process: other processes -------------------------------- 38.3% {1ms} NautilusUI(AbstractNautilusUI)>>browseMessages 38.3% {1ms} NautilusUI(AbstractTool)>>browseMessagesFrom: 38.3% {1ms} NautilusUI(AbstractTool)>>getSelectorAndSendQuery:to:with:selector: 38.3% {1ms} SystemNavigation>>browseAllImplementorsOf: 38.3% {1ms} SystemNavigation>>browseImplementorsOf:name:autoSelect: 38.3% {1ms} SystemNavigation>>browseMessageList:name:autoSelect: 38.3% {1ms} MessageBrowser class>>openMessageList:name:autoSelect: 38.3% {1ms} MessageBrowser>>openWithSpec 38.3% {1ms} MessageBrowser(ComposableModel)>>openWithSpec 38.3% {1ms} MessageBrowser(ComposableModel)>>openWithSpec: 38.3% {1ms} WindowModel>>openWithSpec: 32.1% {1ms} WindowModel>>buildWithSpec: |24.8% {0ms} WindowModel>>addModelIn:withSpec: | |22.9% {0ms} MessageBrowser(ComposableModel)>>buildWithSpec: | | |19.4% {0ms} SpecInterpreter class>>buildWidgetFor:withSpec: | | | |19.4% {0ms} SpecInterpreter class>>interpretASpec:model: | | | | 19.4% {0ms} SpecInterpreter class>>interpretASpec:model:superSpec: | | | | 19.4% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | 19.4% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 19.4% {0ms} SpecInterpreter>>interpretASpec: | | | | 19.4% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | 19.4% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 19.4% {0ms} SpecInterpreter>>interpretASpec: | | | | 19.4% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | 9.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | |9.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | 9.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | 9.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | |4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec | | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec: | | | | | | 4.9% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | | |2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec | | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec: | | | | | | | 2.7% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 2.7% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>instance | | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>initializeInstance | | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 2.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | | | |1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | | | 1.3% {0ms} RawSpec>>defaultReceiver:model: | | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | | 2.2% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>instance | | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>initializeInstance | | | | | | 2.2% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.2% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | 4.9% {0ms} RawSpec>>defaultReceiver:model: | | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec: | | | | | 4.9% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | |2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec: | | | | | | 2.7% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>instance | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>initializeInstance | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | | |1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | | 1.3% {0ms} RawSpec>>defaultReceiver:model: | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | 2.2% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>instance | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>initializeInstance | | | | | 2.2% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.2% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | 9.7% {0ms} RawSpec>>defaultReceiver:model: | | | | 9.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec: | | | | 9.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 9.7% {0ms} SpecInterpreter>>interpretASpec: | | | | 9.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | |4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec | | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec: | | | | | 4.9% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | |2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec | | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec: | | | | | | 2.7% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>instance | | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>initializeInstance | | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 2.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | | |1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | | 1.3% {0ms} RawSpec>>defaultReceiver:model: | | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | 2.2% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>instance | | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>initializeInstance | | | | | 2.2% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.2% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | 4.9% {0ms} RawSpec>>defaultReceiver:model: | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec | | | | 4.9% {0ms} MultiColumnListModel(ComposableModel)>>private_buildWithSpec: | | | | 4.9% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | 4.9% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 4.9% {0ms} SpecInterpreter>>interpretASpec: | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | |2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec | | | | | 2.7% {0ms} DropListModel(ComposableModel)>>private_buildWithSpec: | | | | | 2.7% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.7% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>instance | | | | | 2.7% {0ms} DropListSpec(AbstractSpec)>>initializeInstance | | | | | 2.7% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 2.7% {0ms} SpecInterpreter>>interpretASpec: | | | | | 2.7% {0ms} SpecInterpreter>>retreiveSpecFrom: | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model:superSpec: | | | | | |1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | | 1.3% {0ms} RawSpec>>defaultReceiver:model: | | | | | 1.3% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model: | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | | 1.3% {0ms} SpecInterpreter>>interpretASpec: | | | | | 1.3% {0ms} SpecInterpreter>>convertSymbolOfClassToInstance: | | | | | 1.3% {0ms} DropListMorph class(Behavior)>>new | | | | | 1.3% {0ms} DropListMorph>>initialize | | | | 2.2% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>instance | | | | 2.2% {0ms} MultiColumnListSpec(AbstractSpec)>>initializeInstance | | | | 2.2% {0ms} SpecInterpreter class>>private_interpretASpec:model: | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model: | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | | | | 2.2% {0ms} SpecInterpreter>>interpretASpec: | | | | 2.2% {0ms} SpecInterpreter>>retreiveSpecFrom: | | |3.5% {0ms} MessageBrowser(ComposableModel)>>ensureExtentFor: | | | 3.5% {0ms} PanelMorph(Morph)>>extent: | | | 3.5% {0ms} PanelMorph(Morph)>>changed | | | 3.5% {0ms} PanelMorph(Morph)>>privateFullBounds | | | 3.5% {0ms} PanelMorph(Morph)>>submorphBounds | | | 3.5% {0ms} PanelMorph(Morph)>>fullBounds | | | 3.5% {0ms} PanelMorph(Morph)>>doLayoutIn: | | | 3.5% {0ms} ProportionalLayout>>layout:in: | | | 3.5% {0ms} PluggableTextMorph(Morph)>>layoutProportionallyIn: | | | 3.2% {0ms} PluggableTextMorph(Morph)>>layoutInBounds: | | | 2.7% {0ms} PluggableTextMorph(Morph)>>bounds: | | | 1.6% {0ms} PluggableTextMorph>>extent: | |1.9% {0ms} StandardWindow(SystemWindow)>>addMorph:frame: | | 1.9% {0ms} StandardWindow(SystemWindow)>>addMorph:fullFrame: | | 1.9% {0ms} PanelMorph>>adoptPaneColor: | | 1.9% {0ms} PanelMorph(Morph)>>color: | | 1.9% {0ms} PanelMorph(Morph)>>changed | | 1.9% {0ms} PanelMorph(Morph)>>privateFullBounds | | 1.9% {0ms} PanelMorph(Morph)>>submorphBounds | | 1.9% {0ms} PanelMorph(Morph)>>fullBounds | | 1.9% {0ms} PanelMorph(Morph)>>doLayoutIn: | | 1.9% {0ms} ProportionalLayout>>layout:in: | | 1.9% {0ms} PluggableTextMorph(Morph)>>layoutProportionallyIn: | | 1.6% {0ms} PluggableTextMorph(Morph)>>layoutInBounds: |7.3% {0ms} SpecInterpreter class>>private_buildWidgetFor:withSpec: | 7.3% {0ms} SpecInterpreter class>>private_interpretASpec:model: | 7.3% {0ms} SpecInterpreter>>interpretASpec:model: | 7.3% {0ms} SpecInterpreter>>interpretASpec:model:superSpec: | 7.3% {0ms} SpecInterpreter>>interpretASpec: | 7.3% {0ms} SpecInterpreter>>actionToPerformWithSelector:arguments: | 7.3% {0ms} WindowSpec(AbstractSpec)>>instance | 7.3% {0ms} WindowSpec>>initializeInstance | 7.3% {0ms} StandardWindow class(Behavior)>>new | 7.3% {0ms} StandardWindow>>initialize | 3.8% {0ms} StandardWindow(SystemWindow)>>initialize | |3.5% {0ms} StandardWindow(SystemWindow)>>extent: | | 3.5% {0ms} StandardWindow(Morph)>>extent: | | 3.5% {0ms} StandardWindow(Morph)>>changed | | 3.5% {0ms} StandardWindow(Morph)>>privateFullBounds | | 3.5% {0ms} StandardWindow(Morph)>>submorphBounds | | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | | 3.2% {0ms} RowLayout>>layout:in: | | 3.0% {0ms} Point>>extent: | | 3.0% {0ms} Rectangle class>>origin:extent: | | 3.0% {0ms} Rectangle>>setOrigin:corner: | 3.5% {0ms} StandardWindow(SystemWindow)>>setWindowColor: | 3.5% {0ms} StandardWindow(SystemWindow)>>setStripeColorsFrom: | 3.5% {0ms} StandardWindow(Morph)>>fillStyle: | 3.5% {0ms} StandardWindow(Morph)>>changed | 3.5% {0ms} StandardWindow(Morph)>>privateFullBounds | 3.5% {0ms} StandardWindow(Morph)>>submorphBounds | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | 3.2% {0ms} RowLayout>>layout:in: | 3.0% {0ms} Point>>extent: | 3.0% {0ms} Rectangle class>>origin:extent: | 3.0% {0ms} Rectangle>>setOrigin:corner: 6.2% {0ms} StandardWindow(Morph)>>openInWorld 6.2% {0ms} StandardWindow(SystemWindow)>>openInWorld: 3.5% {0ms} StandardWindow(Morph)>>bounds: |3.5% {0ms} StandardWindow(SystemWindow)>>position: | 3.5% {0ms} StandardWindow(Morph)>>position: | 3.5% {0ms} StandardWindow(Morph)>>fullBounds | 3.5% {0ms} StandardWindow(Morph)>>doLayoutIn: | 3.5% {0ms} ProportionalLayout>>layout:in: | 3.5% {0ms} AlignmentMorph(Morph)>>layoutProportionallyIn: | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | 3.2% {0ms} RowLayout>>layout:in: | 3.0% {0ms} Point>>extent: | 3.0% {0ms} Rectangle class>>origin:extent: | 3.0% {0ms} Rectangle>>setOrigin:corner: 2.7% {0ms} StandardWindow>>openAsIsIn: 2.7% {0ms} StandardWindow(SystemWindow)>>openAsIsIn: 2.7% {0ms} StandardWindow(SystemWindow)>>activate 2.7% {0ms} StandardWindow(SystemWindow)>>navigateFocusForward 2.7% {0ms} StandardWindow(Morph)>>navigateFocusForward 2.7% {0ms} PluggableTextMorph(Morph)>>takeKeyboardFocus 2.7% {0ms} HandMorph>>newKeyboardFocus: 2.7% {0ms} PluggableTextMorph>>keyboardFocusChange: 2.7% {0ms} TextMorphForEditView(Morph)>>takeKeyboardFocus 2.7% {0ms} HandMorph>>newKeyboardFocus: 2.7% {0ms} TextMorphForEditView>>keyboardFocusChange: 2.7% {0ms} SmalltalkEditor(TextEditor)>>focused: 2.7% {0ms} SmalltalkEditingState>>focused:from: 2.7% {0ms} SmalltalkEditingState(EditingState)>>focused:from: 2.7% {0ms} EditorFindReplaceDialogWindow class>>on: 2.7% {0ms} EditorFindReplaceDialogWindow>>on: 2.7% {0ms} EditorFindReplaceDialogWindow(StandardWindow)>>model: 2.7% {0ms} EditorFindReplaceDialogWindow(SystemWindow)>>model: 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>fillStyle: 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>changed 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>privateFullBounds
2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>submorphBounds
2.7% {0ms} AlignmentMorph(Morph)>>fullBounds
2.4% {0ms} AlignmentMorph(Morph)>>doLayoutIn:
2.4% {0ms} RowLayout>>layout:in:
2.2% {0ms} Point>>extent:
2.2% {0ms} Rectangle class>>origin:extent:
2.2% {0ms} Rectangle>>setOrigin:corner: 38.3% {1ms} MethodToolbar>>versionMethod 38.3% {1ms} AbstractTool>>browseVersionsFrom: 38.3% {1ms} VersionsBrowser class>>browseVersionsOf:class:meta:category:selector: 38.3% {1ms} VersionsBrowser class>>browseVersionsOf:class:meta:category:selector:lostMethodPointer: 38.3% {1ms} VersionsBrowser class(ChangeList class)>>open:name:multiSelect: 38.3% {1ms} VersionsBrowser class(ChangeList class)>>openAsMorph:name:multiSelect: 38.3% {1ms} VersionsBrowser(ChangeList)>>openAsMorphName:multiSelect: 28.0% {1ms} SystemWindow(Morph)>>openInWorld |28.0% {1ms} SystemWindow>>openInWorld: | 15.1% {0ms} SystemWindow(Morph)>>bounds: | |15.1% {0ms} SystemWindow>>position: | | 15.1% {0ms} SystemWindow(Morph)>>position: | | 15.1% {0ms} SystemWindow(Morph)>>fullBounds | | 15.1% {0ms} SystemWindow(Morph)>>doLayoutIn: | | 14.8% {0ms} ProportionalLayout>>layout:in: | | 14.8% {0ms} AlignmentMorph(Morph)>>layoutProportionallyIn: | | 13.2% {0ms} AlignmentMorph(Morph)>>fullBounds | | |12.9% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | | | 12.4% {0ms} ProportionalLayout>>layout:in: | | | 12.4% {0ms} PanelMorph(Morph)>>layoutProportionallyIn: | | | 11.9% {0ms} PanelMorph(Morph)>>layoutInBounds: | | | 10.2% {0ms} PanelMorph(Morph)>>bounds: | | | 8.1% {0ms} PanelMorph(Morph)>>position: | | | 6.5% {0ms} PanelMorph(Morph)>>fullBounds | | | 5.7% {0ms} PanelMorph(Morph)>>doLayoutIn: | | | 4.0% {0ms} TableLayout>>layout:in: | | | |3.2% {0ms} TableLayout>>placeCells:in:horizontal:target: | | | | 3.2% {0ms} PluggableTextMorph(Morph)>>layoutInBounds: | | | | 3.2% {0ms} PluggableTextMorph(Morph)>>bounds: | | | | 3.2% {0ms} PluggableTextMorph>>extent: | | | | 1.6% {0ms} TextMorphForEditView(TextMorph)>>extent: | | | | 1.3% {0ms} PluggableTextMorph(ScrollPane)>>extent: | | | 1.6% {0ms} PanelMorph(Morph)>>privateFullBounds | | 1.6% {0ms} AlignmentMorph(Morph)>>layoutInBounds: | | 1.6% {0ms} AlignmentMorph(Morph)>>bounds: | 12.9% {0ms} SystemWindow>>openAsIsIn: | 12.7% {0ms} SystemWindow>>activate | 12.7% {0ms} SystemWindow>>basicActivate | 7.8% {0ms} SystemWindow(Morph)>>changed | |7.8% {0ms} SystemWindow(Morph)>>privateFullBounds | | 7.8% {0ms} SystemWindow(Morph)>>submorphBounds | | 7.8% {0ms} AlignmentMorph(Morph)>>fullBounds | | 7.8% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | | 7.8% {0ms} ProportionalLayout>>layout:in: | | 7.8% {0ms} PanelMorph(Morph)>>layoutProportionallyIn: | | 7.8% {0ms} PanelMorph(Morph)>>fullBounds | | 7.8% {0ms} PanelMorph(Morph)>>doLayoutIn: | | 7.8% {0ms} TableLayout>>layout:in: | | 6.2% {0ms} TableLayout>>placeCells:in:horizontal:target: | | |6.2% {0ms} DiffMorph(Morph)>>layoutInBounds: | | | 6.2% {0ms} DiffMorph(Morph)>>bounds: | | | 5.7% {0ms} DiffMorph>>extent: | | | 5.7% {0ms} DiffMorph>>calibrateScrollbar | | | 5.7% {0ms} DiffMorph(Morph)>>fullBounds | | | 5.7% {0ms} DiffMorph(Morph)>>doLayoutIn: | | | 5.7% {0ms} ProportionalLayout>>layout:in: | | | 5.7% {0ms} PanelMorph(Morph)>>layoutProportionallyIn: | | | 5.4% {0ms} PanelMorph(Morph)>>layoutInBounds: | | | 4.6% {0ms} PanelMorph(Morph)>>bounds: | | | 3.5% {0ms} PanelMorph(Morph)>>position: | | | 2.7% {0ms} PanelMorph(Morph)>>fullBounds | | | 2.2% {0ms} PanelMorph(Morph)>>doLayoutIn: | | | 1.3% {0ms} PanelMorph(Morph)>>privateFullBounds | | 1.6% {0ms} TableLayout>>computeCellSizes:in:horizontal: | | 1.6% {0ms} DiffMorph(Morph)>>minExtent | | 1.6% {0ms} ProportionalLayout>>minExtentOf:in: | | 1.6% {0ms} PanelMorph(Morph)>>minExtent | | 1.6% {0ms} PanelMorph(Morph)>>layoutBounds | 4.9% {0ms} VersionsBrowser(CodeHolder)>>modelWakeUpIn: | 4.9% {0ms} VersionsBrowser>>updateListsAndCodeIn: | 4.9% {0ms} VersionsBrowser>>reformulateList | 4.9% {0ms} VersionsBrowser>>contentsChanged | 4.9% {0ms} VersionsBrowser>>buildDiffCodePane | 4.9% {0ms} VersionsBrowser>>buildDiffMorphFromOldString:toNewString:contextClass: | 4.6% {0ms} DiffMorph class(Behavior)>>new | 4.6% {0ms} DiffMorph>>initialize | 4.6% {0ms} DiffMorph>>extent: | 4.6% {0ms} DiffMorph>>calibrateScrollbar | 4.6% {0ms} DiffMorph(Morph)>>fullBounds | 4.6% {0ms} DiffMorph(Morph)>>doLayoutIn: | 2.7% {0ms} DiffMorph(Morph)>>privateFullBounds | |2.7% {0ms} DiffMorph(Morph)>>submorphBounds | | 2.7% {0ms} PanelMorph(Morph)>>fullBounds | | 2.2% {0ms} PanelMorph(Morph)>>doLayoutIn: | | 1.3% {0ms} PanelMorph(Morph)>>privateFullBounds | 1.9% {0ms} ProportionalLayout>>layout:in: | 1.9% {0ms} PanelMorph(Morph)>>layoutProportionallyIn: | 1.6% {0ms} PanelMorph(Morph)>>layoutInBounds: 3.8% {0ms} SystemWindow class>>labelled: |3.8% {0ms} SystemWindow class(Behavior)>>new | 3.8% {0ms} SystemWindow>>initialize | 3.5% {0ms} SystemWindow>>extent: | 3.5% {0ms} SystemWindow(Morph)>>extent: | 3.5% {0ms} SystemWindow(Morph)>>changed | 3.5% {0ms} SystemWindow(Morph)>>privateFullBounds | 3.5% {0ms} SystemWindow(Morph)>>submorphBounds | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | 3.2% {0ms} RowLayout>>layout:in: | 3.0% {0ms} Point>>extent: | 3.0% {0ms} Rectangle class>>origin:extent: | 3.0% {0ms} Rectangle>>setOrigin:corner: 3.5% {0ms} SystemWindow>>model: |3.5% {0ms} SystemWindow(Morph)>>fillStyle: | 3.5% {0ms} SystemWindow(Morph)>>changed | 3.5% {0ms} SystemWindow(Morph)>>privateFullBounds | 3.5% {0ms} SystemWindow(Morph)>>submorphBounds | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | 3.2% {0ms} RowLayout>>layout:in: | 3.0% {0ms} Point>>extent: | 3.0% {0ms} Rectangle class>>origin:extent: | 3.0% {0ms} Rectangle>>setOrigin:corner: 1.9% {0ms} VersionsBrowser(CodeHolder)>>addLowerPanesTo:at:with: 1.9% {0ms} VersionsBrowser(CodeHolder)>>addOptionalButtonsTo:at:plus: 17.5% {0ms} ToolRegistry>>openClassBrowser 17.5% {0ms} Nautilus class>>open 17.5% {0ms} Nautilus class>>openInEnvironment: 17.5% {0ms} Nautilus>>open 17.5% {0ms} NautilusUI>>open 17.5% {0ms} NautilusUI(AbstractNautilusUI)>>open 7.3% {0ms} NautilusWindow class(Behavior)>>new |7.3% {0ms} NautilusWindow(StandardWindow)>>initialize | 3.8% {0ms} NautilusWindow(SystemWindow)>>initialize | |3.5% {0ms} NautilusWindow(SystemWindow)>>extent: | | 3.5% {0ms} NautilusWindow(Morph)>>extent: | | 3.5% {0ms} NautilusWindow(Morph)>>changed | | 3.5% {0ms} NautilusWindow(Morph)>>privateFullBounds | | 3.5% {0ms} NautilusWindow(Morph)>>submorphBounds | | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | | 3.2% {0ms} RowLayout>>layout:in: | | 3.0% {0ms} Point>>extent: | | 3.0% {0ms} Rectangle class>>origin:extent: | | 3.0% {0ms} Rectangle>>setOrigin:corner: | 3.5% {0ms} NautilusWindow(SystemWindow)>>setWindowColor: | 3.5% {0ms} NautilusWindow(SystemWindow)>>setStripeColorsFrom: | 3.5% {0ms} NautilusWindow(Morph)>>fillStyle: | 3.5% {0ms} NautilusWindow(Morph)>>changed | 3.5% {0ms} NautilusWindow(Morph)>>privateFullBounds | 3.5% {0ms} NautilusWindow(Morph)>>submorphBounds | 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds | 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: | 3.2% {0ms} RowLayout>>layout:in: | 3.0% {0ms} Point>>extent: | 3.0% {0ms} Rectangle class>>origin:extent: | 3.0% {0ms} Rectangle>>setOrigin:corner: 6.7% {0ms} NautilusUI>>addAll: |5.7% {0ms} NautilusUI>>buildColumns:height: | 1.3% {0ms} NautilusUI>>buildNavigationList | 1.3% {0ms} DropListMorph class>>on:list:selected:changeSelected: | 1.3% {0ms} DropListMorph class(Behavior)>>new | 1.3% {0ms} DropListMorph>>initialize 3.5% {0ms} NautilusWindow(Morph)>>openInWorld 3.5% {0ms} NautilusWindow(SystemWindow)>>openInWorld: 3.5% {0ms} NautilusWindow(Morph)>>bounds: 3.5% {0ms} NautilusWindow(SystemWindow)>>position: 3.5% {0ms} NautilusWindow(Morph)>>position: 3.5% {0ms} NautilusWindow(Morph)>>fullBounds 3.5% {0ms} NautilusWindow(Morph)>>doLayoutIn: 3.5% {0ms} ProportionalLayout>>layout:in: 3.5% {0ms} AlignmentMorph(Morph)>>layoutProportionallyIn: 3.5% {0ms} AlignmentMorph(Morph)>>fullBounds 3.2% {0ms} AlignmentMorph(Morph)>>doLayoutIn: 3.2% {0ms} RowLayout>>layout:in: 3.0% {0ms} Point>>extent: 3.0% {0ms} Rectangle class>>origin:extent: 3.0% {0ms} Rectangle>>setOrigin:corner: 3.2% {0ms} WorldState>>doOneCycleNowFor: 3.2% {0ms} HandMorph>>processEvents 3.2% {0ms} HandMorph>>handleEvent: 3.2% {0ms} HandMorph>>sendMouseEvent: 3.2% {0ms} HandMorph>>sendEvent:focus:clear: 3.2% {0ms} PasteUpMorph(Morph)>>processEvent: 3.2% {0ms} PasteUpMorph>>processEvent:using: 3.2% {0ms} PasteUpMorph(Morph)>>processEvent:using: 3.2% {0ms} MorphicEventDispatcher>>dispatchEvent:with: 3.2% {0ms} MorphicEventDispatcher>>dispatchMouseDown:with: 3.2% {0ms} PasteUpMorph(Morph)>>handleEvent: 3.2% {0ms} MouseButtonEvent>>sentTo: 3.2% {0ms} PasteUpMorph(Morph)>>handleMouseDown: 3.2% {0ms} PasteUpMorph>>mouseDown: 3.2% {0ms} PasteUpMorph>>invokeWorldMenu: 3.2% {0ms} MenuMorph>>popUpEvent:in: 3.2% {0ms} MenuMorph>>popUpAt:forHand:in: 3.2% {0ms} MenuMorph>>popUpAt:forHand:in:allowKeyboard: 3.2% {0ms} MenuMorph>>positionAt:relativeTo:inWorld: 3.2% {0ms} MenuMorph(Morph)>>fullBounds 3.2% {0ms} MenuMorph(Morph)>>doLayoutIn: 3.2% {0ms} TableLayout>>layout:in: 3.2% {0ms} TableLayout>>layoutTopToBottom:in: 2.4% {0ms} AlignmentMorph(Morph)>>layoutInBounds: 1.6% {0ms} AlignmentMorph(Morph)>>bounds: 1.6% {0ms} AlignmentMorph(Morph)>>position: 1.6% {0ms} AlignmentMorph(Morph)>>fullBounds 1.3% {0ms} AlignmentMorph(Morph)>>doLayoutIn: 2.7% {0ms} NautilusWindow(SystemWindow)>>closeBoxHit 2.7% {0ms} NautilusWindow>>delete 2.7% {0ms} NautilusWindow(StandardWindow)>>delete 2.7% {0ms} NautilusWindow(SystemWindow)>>delete 2.7% {0ms} SystemWindow class>>noteTopWindowIn: 2.7% {0ms} SystemWindow>>activate 2.7% {0ms} SystemWindow>>navigateFocusForward 2.7% {0ms} SystemWindow(Morph)>>navigateFocusForward 2.7% {0ms} PluggableTextMorph(Morph)>>takeKeyboardFocus 2.7% {0ms} HandMorph>>newKeyboardFocus: 2.7% {0ms} PluggableTextMorph>>keyboardFocusChange: 2.7% {0ms} TextMorphForEditView(Morph)>>takeKeyboardFocus 2.7% {0ms} HandMorph>>newKeyboardFocus: 2.7% {0ms} TextMorphForEditView>>keyboardFocusChange: 2.7% {0ms} SmalltalkEditor(TextEditor)>>focused: 2.7% {0ms} SmalltalkEditingState>>focused:from: 2.7% {0ms} SmalltalkEditingState(EditingState)>>focused:from: 2.7% {0ms} EditorFindReplaceDialogWindow class>>on: 2.7% {0ms} EditorFindReplaceDialogWindow>>on: 2.7% {0ms} EditorFindReplaceDialogWindow(StandardWindow)>>model: 2.7% {0ms} EditorFindReplaceDialogWindow(SystemWindow)>>model: 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>fillStyle: 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>changed 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>privateFullBounds 2.7% {0ms} EditorFindReplaceDialogWindow(Morph)>>submorphBounds 2.7% {0ms} AlignmentMorph(Morph)>>fullBounds 2.4% {0ms} AlignmentMorph(Morph)>>doLayoutIn: 2.4% {0ms} RowLayout>>layout:in: 2.2% {0ms} Point>>extent: 2.2% {0ms} Rectangle class>>origin:extent: 2.2% {0ms} Rectangle>>setOrigin:corner:
**Leaves** 100.0% {2ms} Rectangle>>setOrigin:corner:
**Memory** old +0 bytes young +4,588 bytes used +4,588 bytes free -4,588 bytes
**GCs** full 0 totalling 0ms (0.0% uptime) incr 0 totalling 0ms (0.0% uptime) tenures 0 root table 0 overflows
My feeling is that you are not thru with degenerated rectangles :) You'd better enforce the invariant in http://code.google.com/p/pharo/issues/detail?id=2601 rathert than remove it as requested in http://code.google.com/p/pharo/issues/detail?id=2441
Nicolas
2013/2/13 Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:
I tried to put a halt in Rectangle>>setOrigin: topLeft corner: bottomRight in latest Pharo (20543) if width < 0 or height < 0 and of course the image hung... which means that degenerated Rectangles are pretty much in use
I think I will juts raise a Notification, and catch it with a MessageTally hack to track the senders (as documented at http://bugs.squeak.org/bug_view_advanced_page.php?bug_id=6755 )
Nicolas
2013/2/13 Igor Stasenko <siguctua@gmail.com>:
yes.. and i'd like to add that in some places i replaced senders of
rect1 intersect: rect2
with:
rect1 intersect: rect2 ifNone: [ self error: 'should not happen'].
as it appears, it happens in some places... because of the above inconsistency.
-- Best regards, Igor Stasenko.