Following up discussion on the Catalog sometimes delaying Spotter in locations with poor network http://forum.world.st/Catalog-loading-in-Spotter-td4934969.html#a4935842
Just sharing a poke I had at understanding the name resolution call chain down to the primitives. Attached is a Roassal/Artefact generated PDF based on "methods" and "links" from this... methods := NetNameResolver class methods select: [:m | m selector beginsWith: 'prim']. "start with primitives" methods := methods asSet. prevMethods := #() asSet. links := Set new. 3 timesRepeat: [ |newMethods todo| newMethods := methods difference: prevMethods. prevMethods := methods copy. todo := newMethods collect: [:m| |senders| ((((m methodClass inheritsFrom: TestAsserter) or: [m selector = #new]) or: [m methodClass printString beginsWith: 'SmaCC']) or: [m selector printString beginsWith: '#init']) ifTrue: [m -> #()] ifFalse: [m -> (m senders collect: [:rgmd| rgmd compiledMethod])]. ]. todo := todo select: [:sendersOf| sendersOf value size > 0]. "remove fluff" todo := todo sorted: [:sendersOf1 :sendersOf2| sendersOf1 value size > sendersOf2 value size]. "helps debugging" todo do: [:sendersOf| sendersOf value do: [:sender| methods add: sender. links add: (sender->sendersOf key). ] ]. ]. methods copy do: [:m| links detect: [:l| (m = l key) or: [ m = l value] ] ifNone: [ methods remove: m]]. "remove fluff" After loading Roassal from the Catalog into 60411 I started with Mondrian to graph like this... b := RTMondrian new. b shape box. b nodes: methods forEach: [:each| b shape withText: [:m| m methodClass printString, String cr, m selector printString]; withTextColor: Color black. b nodes: { each }. b layout ]. b shape arrowedLine withShorterDistanceAttachPoint. links do: [:l| b edges connectFrom: l value to: l key]. b layout horizontalDominanceTree horizontalGap: 100. b build. b view inspect But I wanted to fine tune the layout by moving around a few subtrees and couldn't work out how to add RTDraggableChildren to the Mondrian edges. So I tried Roassal direct like this... v := RTView new. v @ RTDraggableView. labelTemplate := (RTLabel new text: [:m | m methodClass printString, String cr, m selector printString]). els := labelTemplate elementsOn: methods. "also see alternative below" v addAll: els. eb := RTEdgeBuilder new view: v; elements: els. links do: [:l| eb connectFrom: l value to: l key]. RTHorizontalDominanceTreeLayout on: els. els @ RTDraggableChildren. v inspect. But couldn't work out how to put a border around the RTLabel, nor change its background colour. I saw RTShape>>#fillColor: and #fillColorElement: but couldn't determine how to make use of them. The best I could come up with is the following alternative that replaces the code in the middle that assigns "els" and "eb" with... els := RTBox elementsOn: methods. v addAll: els. RTNest new for: els add: [ :group :method | group addAll: (labelTemplate elementsOn: {method})]. eb := RTEdgeBuilder new view: v; elements: els. cheers -ben
NetNameResolver-3level-primitive-senders.pdf
Description: Adobe PDF document