[squeak-dev] The Trunk: Kernel-eem.1164.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Mar 27 18:45:01 UTC 2018


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!



More information about the Squeak-dev mailing list