<div dir="ltr">Hi All,<div><br></div><div>    in working on the compactor in the simulator I'm observing some loooong pauses due to some, um, interesting image code.  For example...</div><div><br></div><div><div><br></div><div>   -16r31A8 IdentityDictionary>scanFor: 16r7333E8: a(n) IdentityDictionary</div><div>   -16r3184 IdentityDictionary(Dictionary)>at:ifAbsent: 16r7333E8: a(n) IdentityDictionary</div><div>   -16r3160 MorphExtension>valueOfProperty: 16r4341A0: a(n) MorphExtension</div><div>   -16r3140 PasteUpMorph(Morph)>valueOfProperty: 16r898788: a(n) PasteUpMorph</div><div>   -16r3120 PasteUpMorph(Morph)>eventBubbleFilters 16r898788: a(n) PasteUpMorph</div><div>   -16r30F4 PasteUpMorph(Morph)>sendFilterEventBubble:for: 16r898788: a(n) PasteUpMorph</div><div>   -16r30CC PasteUpMorph(Morph)>handleEvent: 16r898788: a(n) PasteUpMorph</div><div>   -16r30A0 [] in MorphicEventDispatcher>doBubblingForFocusEvent:with: 16r2638F8: a(n) MorphicEventDispatcher</div><div>   -16r3080 PasteUpMorph(Morph)>withAllOwnersDo: 16r898788: a(n) PasteUpMorph</div><div>   -16r3060 FillInTheBlankMorph(Morph)>allOwnersDo: 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r3038 MorphicEventDispatcher>doBubblingForFocusEvent:with: 16r2638F8: a(n) MorphicEventDispatcher</div><div>   -16r3010 MorphicEventDispatcher>dispatchFocusEventFully:with: 16r2638F8: a(n) MorphicEventDispatcher</div><div>   -16r2B38 FillInTheBlankMorph(DialogWindow)>processFocusEvent:using: 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r2B14 FillInTheBlankMorph(Morph)>processFocusEvent: 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r2AE8 [] in HandMorph>sendFocusEvent:to:clear: 16rC85548: a(n) HandMorph</div><div>   -16r2AC4 BlockClosure>ensure: 16r263860: a(n) BlockClosure</div><div>   -16r2AA0 MouseEvent(MorphicEvent)>becomeActiveDuring: 16r2634C0: a(n) MouseEvent</div><div>   -16r2A74 [] in HandMorph>sendFocusEvent:to:clear: 16rC85548: a(n) HandMorph</div><div>   -16r2A50 BlockClosure>ensure: 16r263768: a(n) BlockClosure</div><div>   -16r2A2C HandMorph>becomeActiveDuring: 16rC85548: a(n) HandMorph</div><div>   -16r2A00 [] in HandMorph>sendFocusEvent:to:clear: 16rC85548: a(n) HandMorph</div><div>   -16r29DC BlockClosure>ensure: 16r263670: a(n) BlockClosure</div><div>   -16r29B8 PasteUpMorph>becomeActiveDuring: 16r898788: a(n) PasteUpMorph</div><div>   -16r2990 HandMorph>sendFocusEvent:to:clear: 16rC85548: a(n) HandMorph</div><div>   -16r2960 HandMorph>sendEvent:focus:clear: 16rC85548: a(n) HandMorph</div><div>   -16r2938 HandMorph>sendMouseEvent: 16rC85548: a(n) HandMorph</div><div>   -16r2914 HandMorph>handleEvent: 16rC85548: a(n) HandMorph</div><div>   -16r28E8 MouseOverHandler>processMouseOver: 16r2D08BC8: a(n) MouseOverHandler</div><div>   -16r28B8 HandMorph>processEvents 16rC85548: a(n) HandMorph</div><div>   -16r2898 [] in WorldState>doOneCycleNowFor: 16r126DFF8: a(n) WorldState</div><div>   -16r2870 Array(SequenceableCollection)>do: 16r434190: a(n) Array</div><div>   -16r2850 WorldState>handsDo: 16r126DFF8: a(n) WorldState</div><div>   -16r282C WorldState>doOneCycleNowFor: 16r126DFF8: a(n) WorldState</div><div>   -16r280C WorldState>doOneCycleFor: 16r126DFF8: a(n) WorldState</div><div>   -16r2330 WorldState>doOneSubCycleFor: 16r126DFF8: a(n) WorldState</div><div>   -16r2310 PasteUpMorph>doOneSubCycle 16r898788: a(n) PasteUpMorph</div><div>   -16r22E8 [] in FillInTheBlankMorph(DialogWindow)>getUserResponse 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r22C8 UndefinedObject(Object)>in: 16r41A280: a(n) UndefinedObject</div><div>   -16r22A0 [] in FillInTheBlankMorph(DialogWindow)>getUserResponse 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r2280 UndefinedObject(Object)>in: 16r41A280: a(n) UndefinedObject</div><div>   -16r2254 FillInTheBlankMorph(DialogWindow)>getUserResponse 16r9A498: a(n) FillInTheBlankMorph</div><div>   -16r2234 FillInTheBlankMorph class>request:initialAnswer:centerAt:inWorld:onCancelReturn:acceptOnCR:answerExtent: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r21FC FillInTheBlankMorph class>request:initialAnswer:centerAt:inWorld:onCancelReturn:acceptOnCR: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r21C8 FillInTheBlankMorph class>request:initialAnswer:centerAt:inWorld:onCancelReturn: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r2198 FillInTheBlankMorph class>request:initialAnswer:centerAt:inWorld: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r216C FillInTheBlankMorph class>request:initialAnswer:centerAt: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r2144 FillInTheBlankMorph class>request:initialAnswer: 16r12232B8: a(n) FillInTheBlankMorph class</div><div>   -16r2120 MorphicUIManager>request:initialAnswer: 16r821990: a(n) MorphicUIManager</div><div>   -16r20F8 SmalltalkImage>getFileNameFromUserSuggesting: 16r79FC80: a(n) SmalltalkImage</div><div>   -16r20D8 SmalltalkImage>getFileNameFromUser 16r79FC80: a(n) SmalltalkImage</div><div>   -16r20B8 SmalltalkImage>saveAs 16r79FC80: a(n) SmalltalkImage</div><div>   -16r209C TheWorldMainDockingBar>saveImageAs 16r739530: a(n) TheWorldMainDockingBar</div><div>   -16r2078 [] in MenuItemMorph>invokeWithEvent: 16r16E7B60: a(n) MenuItemMorph</div><div>   -16r2054 BlockClosure>ensure: 16r9DC50: a(n) BlockClosure</div><div>   -16r2030 CursorWithMask(Cursor)>showWhile: 16r70B1C0: a(n) CursorWithMask</div><div>   -16r200C MenuItemMorph>invokeWithEvent: 16r16E7B60: a(n) MenuItemMorph</div><div>scavenging(676)...scavenging(677)...scavenging(678)...scavenging(679)...scavenging(680)...scavenging(681)...scavenging(682)...</div><div><br></div><div>and so on.</div><div><br></div><div>It seems that doBubblingForFocusEvent:with hides a /lot/ of computation.  I wonder if the system might be more responsive if this were to receive some attention.</div><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>