Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.1006.mcz==================== Summary ====================
Name: System-eem.1006
Author: eem
Time: 14 March 2018, 1:42:43.001695 pm
UUID: ed1f0de6-02eb-494d-8d50-3f65cd70bdaa
Ancestors: System-eem.1005
Have MethodReference>>compiledMethod answer nil when the method is no longer present, instead of throwing an error. Use this to make SystemNavigation>>allCallsOn:fromMethodReferences:sorted: more robust.
=============== Diff against System-eem.1005 ===============
Item was changed:
----- Method: MethodReference>>compiledMethod (in category 'accessing') -----
compiledMethod
+ ^self actualClass compiledMethodAt: methodSymbol ifAbsent: nil!
- ^ self actualClass compiledMethodAt: methodSymbol!
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 |
result := CompiledCode
scanBlocksForLiteral: aLiteral
do: [:primaryScanner :secondaryScanner | | thorough |
"Possibly search for literals embedded in literal arrays or pragmas, etc."
thorough := self class thoroughSenders.
methodReferences select:
[ :reference |
reference compiledMethod
+ ifNil: [false]
+ ifNotNil:
+ [:method|
+ method
+ refersTo: aLiteral
+ primaryBytecodeScanner: primaryScanner
+ secondaryBytecodeScanner: secondaryScanner
+ thorough: thorough]]].
- refersTo: aLiteral
- primaryBytecodeScanner: primaryScanner
- secondaryBytecodeScanner: secondaryScanner
- thorough: thorough]].
sorted ifTrue:
[result sort].
^result!