Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.940.mcz ==================== Summary ==================== Name: System-ul.940 Author: ul Time: 21 March 2017, 6:55:02.32896 pm UUID: bb942b8d-8893-42f6-b10f-ba058fbda68c Ancestors: System-ul.939 - SmalltalkImage >> #specialSelectors returns the raw array used by the VM - introduced SmalltalkImage >> #specialSelectorNames, which returns just the names of the special selectors without their argument count =============== Diff against System-ul.939 =============== Item was added: + ----- Method: SmalltalkImage>>specialSelectorNames (in category 'special objects') ----- + specialSelectorNames + "Return a collection with the names of the special selectors." + + | arrayOfPairs | + arrayOfPairs := self specialSelectors. + ^Array new: arrayOfPairs size // 2 streamContents: [ :stream | + arrayOfPairs pairsDo: [ :selector :numArgs | + stream nextPut: selector ] ] + ! Item was changed: ----- Method: SmalltalkImage>>specialSelectors (in category 'special objects') ----- specialSelectors + "Return an array with flattened special selector - argument count pairs. VMMaker relies on this." + ^self specialObjectsArray at: 24! - | arrayOfPairs | - arrayOfPairs := self specialObjectsArray at: 24. - ^Array new: arrayOfPairs size // 2 streamContents: [ :stream | - arrayOfPairs pairsDo: [ :selector :numArgs | - stream nextPut: selector ] ] - ! 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. "sd 29/04/03" Cursor execute showWhile: [ self environment allClassesAndTraitsDo: [:cls | ((absentClasses includes: cls name) ifTrue: [{}] ifFalse: [{cls. cls 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 | (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" + Smalltalk specialSelectorNames do: [:sel | sent add: sel]. - Smalltalk specialSelectors do: [:sel | sent add: sel]. Smalltalk presumedSentMessages do: [:sel | sent add: sel]. ^ sent.! |
Free forum by Nabble | Edit this page |