Chris Muller uploaded a new version of Tools to project The Trunk: http://source.squeak.org/trunk/Tools-cmm.519.mcz
==================== Summary ====================
Name: Tools-cmm.519 Author: cmm Time: 18 February 2014, 4:17:22.819 pm UUID: dae6bdb9-8b54-491a-a2a4-0b114f02e10d Ancestors: Tools-cmm.518
- Fix cloning MessageSet's. - Pointer-chaser, display the id-hash of Morph's in the path to chased object.
=============== Diff against Tools-cmm.518 ===============
Item was changed: ----- Method: MessageSet>>veryDeepInner: (in category 'copying') ----- veryDeepInner: deepCopier - "Copy all of my instance variables. Some need to be not copied at all, but shared. See DeepCopier class comment." - super veryDeepInner: deepCopier. + messageList := messageList veryDeepCopyWith: deepCopier. - messageListIndex := messageListIndex veryDeepCopyWith: deepCopier. editSelection := editSelection veryDeepCopyWith: deepCopier.!
Item was changed: ----- Method: PointerFinder>>buildList (in category 'application') ----- buildList | list obj parent object key | list := OrderedCollection new. obj := goal. [list addFirst: obj. obj := parents at: obj ifAbsent: []. obj == nil] whileFalse. list removeFirst. parent := Smalltalk. objectList := OrderedCollection new. pointerList := OrderedCollection new. [list isEmpty] whileFalse: [object := list removeFirst. key := nil. (parent isKindOf: Dictionary) ifTrue: [list size >= 2 ifTrue: [key := parent keyAtValue: list second ifAbsent: []. key == nil ifFalse: [object := list removeFirst; removeFirst. pointerList add: key printString , ' -> ' , object class name]]]. key == nil ifTrue: [parent class == object ifTrue: [key := 'CLASS']. key == nil ifTrue: [1 to: parent class instSize do: [:i | key == nil ifTrue: [(parent instVarAt: i) == object ifTrue: [key := parent class allInstVarNames at: i]]]]. key == nil ifTrue: [1 to: parent basicSize do: [:i | key == nil ifTrue: [(parent basicAt: i) == object ifTrue: [key := i printString]]]]. key == nil ifTrue: [(parent isMorph and: [object isKindOf: Array]) ifTrue: [key := 'submorphs?']]. key == nil ifTrue: [(parent isCompiledMethod and: [object isVariableBinding]) ifTrue: [key := 'literals?']]. key == nil ifTrue: [key := '???']. + pointerList add: key , ': ' , object class name, (object isMorph ifTrue: [' (', object identityHash asString, ')'] ifFalse: [ String empty ]) ]. - pointerList add: key , ': ' , object class name]. objectList add: object. parent := object]!
packages@lists.squeakfoundation.org