Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1075.mcz==================== Summary ====================
Name: System-mt.1075
Author: mt
Time: 24 July 2019, 11:18:57.127109 am
UUID: 6b2a8705-b2bc-46c3-8dea-34873ae97d6e
Ancestors: System-mt.1074
Speed up search for senders based on Compiler-mt.405 and Kernel-mt.1249.
=============== Diff against System-mt.1074 ===============
Item was changed:
----- Method: SystemNavigation>>allCallsOn:fromBehaviors:sorted: (in category 'query') -----
allCallsOn: aLiteral fromBehaviors: behaviors sorted: sorted
"Answer a collection of all the methods implemented by behaviors that call on aLiteral even deeply embedded in literal arrays."
+ | result canBeSpecial |
- | result |
result := OrderedCollection new.
+ canBeSpecial := BytecodeEncoder canBeSpecialLiteral: aLiteral.
behaviors do: [:behavior |
behavior selectorsAndMethodsDo: [:selector :method |
+ (method hasLiteral: aLiteral scanForSpecial: canBeSpecial)
- (method hasLiteral: aLiteral)
ifTrue: [result addLast: method methodReference]]].
sorted ifTrue: [result sort].
^result!
Item was changed:
----- Method: SystemNavigation>>allCallsOn:fromMethodReferences:sorted: (in category 'query') -----
allCallsOn: aLiteral fromMethodReferences: methodReferences sorted: sorted
"Answer a collection of all the methods implemented by behaviors that call on aLiteral even deeply embedded in literal arrays."
+ | result canBeSpecial |
+ canBeSpecial := BytecodeEncoder canBeSpecialLiteral: aLiteral.
- | result |
result := methodReferences select: [:reference |
reference compiledMethod
ifNil: [false]
+ ifNotNil: [:method | method hasLiteral: aLiteral scanForSpecial: canBeSpecial]].
- ifNotNil: [:method | method hasLiteral: aLiteral]].
sorted ifTrue: [result sort].
^result!