[squeak-dev] The Trunk: Kernel-ul.516.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Nov 15 10:25:04 UTC 2010

Levente Uzonyi uploaded a new version of Kernel to project The Trunk:

==================== Summary ====================

Name: Kernel-ul.516
Author: ul
Time: 15 November 2010, 11:23:57.645 am
UUID: 6faf4568-4121-8543-897b-a4aef9f01454
Ancestors: Kernel-ul.515

- reverted Object >> #inboundPointersExcluding: and added a comment with some explanation about the use of #==.

=============== Diff against Kernel-ul.515 ===============

Item was changed:
  ----- Method: Object>>inboundPointersExcluding: (in category 'tracing') -----
  inboundPointersExcluding: objectsToExclude
  "Answer a list of all objects in the system that point to me, excluding those in the collection of objectsToExclude. I do my best to avoid creating any temporary objects that point to myself, especially method and block contexts. Adapted from PointerFinder class >> #pointersTo:except:"
  	| anObj pointers objectsToAlwaysExclude |
  	Smalltalk garbageCollect.
  	"big collection shouldn't grow, so it's contents array is always the same"
  	pointers := OrderedCollection new: 1000.
  	"#allObjectsDo: and #pointsTo: are expanded inline to keep spurious
  	 method and block contexts out of the results"
  	anObj := self someObject.
+ 	[0 == anObj] whileFalse: [ "We must use #== here, to avoid leaving the loop when anObj is another number that's equal to 0 (e.g. 0.0)."
- 	[0 = anObj] whileFalse: [
  		anObj isInMemory
  			ifTrue: [((anObj instVarsInclude: self)
  				or: [anObj class == self])
  					ifTrue: [pointers add: anObj]].
  		anObj := anObj nextObject].
  	objectsToAlwaysExclude := {
  		pointers collector.
  		thisContext sender.
  		thisContext sender sender.
  	^ pointers removeAllSuchThat: [:ea |
  		(objectsToAlwaysExclude identityIncludes: ea)
  			or: [objectsToExclude identityIncludes: ea]]!

More information about the Squeak-dev mailing list