Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1164.mcz==================== Summary ====================
Name: Kernel-eem.1164
Author: eem
Time: 27 March 2018, 11:44:42.020383 am
UUID: 1e50cd13-d194-479f-877a-eac64559142b
Ancestors: Kernel-cbc.1163
The selector of a method should never be found (unless it occurs as a literal or in a pragma) irrespective of thorough search.
=============== Diff against Kernel-cbc.1163 ===============
Item was changed:
----- Method: CompiledCode>>refersTo:bytecodeScanner:thorough: (in category 'literals') -----
refersTo: literal bytecodeScanner: scanBlockOrNil thorough: thorough
"Answer if the receiver refers to the literal. If the scan block is non-nil, then
use it to find the literal in bytecode. If thorough is true, dive down into
literal arrays and method properties to locate references to the literal there-in."
+ 2 to: (self isCompiledBlock
+ ifTrue: [self numLiterals] "exclude outerCode or methodClass"
+ ifFalse: [self numLiterals - 1]) "exclude selector/properties and methodClass"
- 2 to: ((self isCompiledBlock or: [thorough])
- ifTrue: [self numLiterals] "exclude outerCode or methodClass"
- ifFalse: [self numLiterals - 1]) "exclude selector/properties and methodClass"
do: [:i| | lit |
lit := self objectAt: i.
(literal == lit or: [literal literalEqual: lit]) ifTrue: [^true]. "== for Float bindingOf: #NaN since NaN ~= NaN"
lit isCompiledCode
ifTrue:
[(lit refersTo: literal bytecodeScanner: scanBlockOrNil thorough: thorough) ifTrue:
[^true]]
ifFalse:
[thorough ifTrue:
[lit isVariableBinding
ifTrue:
[literal == lit key ifTrue: [^true]]
ifFalse:
[(lit isArray
and: [(lit hasLiteral: literal)
or: [literal isVariableBinding
and: [literal key isSymbol
and: [lit hasLiteral: literal key]]]]) ifTrue:
[^true]]]]].
scanBlockOrNil ifNotNil:
[(self scanFor: scanBlockOrNil) ifTrue:
[^true]].
^false!