The Trunk: Tools-eem.762.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tools-eem.762.mcz

commits-2
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.762.mcz

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

Name: Tools-eem.762
Author: eem
Time: 8 June 2017, 12:03:05.548717 pm
UUID: 8fbc1072-9aae-4c6e-bcc6-2c3f2f7c3207
Ancestors: Tools-pre.761

Tools fixes (some harvested from Terf).
When creating a subclass template in a brtowser mark the text as changed so it doesn't get lost.

Use isCompiledCode in PointerFinder code.
Use instVarNameForIndex: instaed of longer winded code, also in PointerFinder.

=============== Diff against Tools-pre.761 ===============

Item was changed:
  ----- Method: Browser>>makeNewSubclass (in category 'class functions') -----
  makeNewSubclass
 
  self selectedClassOrMetaClass ifNil: [^ self].
  self okToChange ifFalse: [^ self].
  self editSelection: #newClass.
+ self contentsChanged.
+ "Force the text view to assume there are changes"
+ self changed: #editString with: self contents!
- self contentsChanged!

Item was changed:
  ----- Method: Object>>shouldFollowOutboundPointers (in category '*Tools-Debugger') -----
  shouldFollowOutboundPointers
  "Allow other subclasses of ProtoObject to hook this method."
+ (self class isPointers or: [ self isCompiledCode ]) ifFalse: [ ^ false ].
- (self class isPointers or: [ self isCompiledMethod ]) ifFalse: [ ^ false ].
  ^ (self class isWeak not or: [ self class instSize > 0 ]) and: [ self isLiteral not ]!

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 instVarNameForIndex: i]]]].
+ key == nil ifTrue: [parent isCompiledCode ifTrue: [key := 'literals?']].
- == object ifTrue: [key := parent class allInstVarNames at: i]]]].
- key == nil ifTrue: [parent isCompiledMethod 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: [key := '???'].
  pointerList add: key , ': ' , object class name, (object isMorph ifTrue: [' (', object identityHash asString, ')'] ifFalse: [ String empty ]) ].
  objectList add: object.
  parent := object]!