[squeak-dev] The Trunk: Tools-bf.726.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Sep 13 19:50:11 UTC 2016


Bert Freudenberg uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-bf.726.mcz

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

Name: Tools-bf.726
Author: bf
Time: 13 September 2016, 9:49:34.324302 pm
UUID: 12fb04ec-ae59-4436-ae4a-942568bb28b6
Ancestors: Tools-bf.725

Fix PointerFinder for CompiledMethods.

=============== Diff against Tools-bf.725 ===============

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: [(parent isCompiledMethod and: [object isVariableBinding]) ifTrue: [key := 'literals?']].
  					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 ]) ].
  			objectList add: object.
  			parent := object]!



More information about the Squeak-dev mailing list