Eliot Miranda uploaded a new version of System to project The Trunk: http://source.squeak.org/trunk/System-eem.438.mcz
==================== Summary ====================
Name: System-eem.438 Author: eem Time: 23 May 2011, 6:14:14.008 pm UUID: c038f616-9da6-4abd-94be-1b5d43c9ed03 Ancestors: System-ul.437
Use literalsDo: in place of literals do: in some SystemNavigation trawling code.
=============== Diff against System-ul.437 ===============
Item was changed: ----- Method: SystemNavigation>>allGlobalRefsWithout: (in category 'query') ----- allGlobalRefsWithout: classesAndMessagesPair "Answer a set of symbols that may be refs to Global names. In some sense we should only need the associations, but this will also catch, eg, HTML tag types. This method computes its result in the absence of specified classes and messages." "may be a problem if namespaces are introduced as for the moment only Smalltalk is queried. sd 29/4/03" | globalRefs absentClasses absentSelectors | globalRefs := IdentitySet new: CompiledMethod instanceCount. absentClasses := classesAndMessagesPair first. absentSelectors := classesAndMessagesPair second. self flag: #shouldBeRewrittenUsingSmalltalkAllClassesDo:. "sd 29/04/03" Cursor execute showWhile: [Smalltalk classNames do: [:cName | ((absentClasses includes: cName) ifTrue: [{}] ifFalse: [{Smalltalk at: cName. (Smalltalk at: cName) class}]) do: [:cl | (absentSelectors isEmpty ifTrue: [cl selectors] ifFalse: [cl selectors copyWithoutAll: absentSelectors]) do: [:sel | "Include all capitalized symbols for good measure" + (cl compiledMethodAt: sel) literalsDo: [:m | + ((m isSymbol) + and: [m size > 0 + and: [m first canBeGlobalVarInitial]]) + ifTrue: [globalRefs add: m]. + (m isMemberOf: Array) + ifTrue: [m + do: [:x | ((x isSymbol) + and: [x size > 0 + and: [x first canBeGlobalVarInitial]]) + ifTrue: [globalRefs add: x]]]. + m isVariableBinding + ifTrue: [m key + ifNotNil: [globalRefs add: m key]]]]]]]. - (cl compiledMethodAt: sel) literals - do: [:m | - ((m isSymbol) - and: [m size > 0 - and: [m first canBeGlobalVarInitial]]) - ifTrue: [globalRefs add: m]. - (m isMemberOf: Array) - ifTrue: [m - do: [:x | ((x isSymbol) - and: [x size > 0 - and: [x first canBeGlobalVarInitial]]) - ifTrue: [globalRefs add: x]]]. - m isVariableBinding - ifTrue: [m key - ifNotNil: [globalRefs add: m key]]]]]]]. ^ globalRefs!
Item was changed: ----- Method: SystemNavigation>>allReferencesToPool:from: (in category 'query') ----- allReferencesToPool: aPool from: aClass "Answer all the references to variables from aPool" | list | list := OrderedCollection new. aClass withAllSubclassesDo:[:cls| + cls selectorsAndMethodsDo:[:sel :meth| + (meth hasLiteralSuchThat: [:lit| lit isVariableBinding and:[(aPool bindingOf: lit key) notNil]]) ifTrue: + [list add:(MethodReference new setStandardClass: cls methodSymbol: sel)]]]. - cls selectorsAndMethodsDo:[:sel :meth| | ref | - ref := meth literals detect:[:lit| - lit isVariableBinding and:[(aPool bindingOf: lit key) notNil] - ] ifNone:[nil]. - ref ifNotNil:[ - list add:(MethodReference new setStandardClass: cls methodSymbol: sel) - ]. - ]. - ]. ^list!
Item was changed: ----- Method: SystemNavigation>>allSentMessagesWithout: (in category 'query') ----- allSentMessagesWithout: classesAndMessagesPair "Answer the set of selectors which are sent somewhere in the system, computed in the absence of the supplied classes and messages." | sent absentClasses absentSelectors | sent := IdentitySet new: CompiledMethod instanceCount. absentClasses := classesAndMessagesPair first. absentSelectors := classesAndMessagesPair second. self flag: #shouldBeRewrittenUsingSmalltalkAllClassesDo:. "sd 29/04/03" Cursor execute showWhile: [ Smalltalk classNames , Smalltalk traitNames do: [:name | ((absentClasses includes: name) ifTrue: [{}] ifFalse: [{Smalltalk at: name. (Smalltalk at: name) classSide}]) do: [:each | (absentSelectors isEmpty ifTrue: [each selectors] ifFalse: [each selectors copyWithoutAll: absentSelectors]) do: [:sel | "Include all sels, but not if sent by self" + (each compiledMethodAt: sel) literalsDo: [:m | - (each compiledMethodAt: sel) literals - do: [:m | (m isSymbol) ifTrue: ["might be sent" m == sel ifFalse: [sent add: m]]. (m isMemberOf: Array) ifTrue: ["might be performed" m do: [:x | (x isSymbol) ifTrue: [x == sel ifFalse: [sent add: x]]]]]]]]. "The following may be sent without being in any literal frame" 1 to: Smalltalk specialSelectorSize do: [:index | sent add: (Smalltalk specialSelectorAt: index)]]. Smalltalk presumedSentMessages do: [:sel | sent add: sel]. ^ sent!