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]! |
Free forum by Nabble | Edit this page |