Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.518.mcz
==================== Summary ====================
Name: Tools-cmm.518
Author: cmm
Time: 3 February 2014, 3:40:50.779 pm
UUID: 6277da39-26fa-467e-9b30-244ee58b4000
Ancestors: Tools-topa.517
References through named instVars are strong even on weak classes. Fix PointerFinder behavior accordingly.
Add comment reminding about the purpose of Object>>#shouldFollowOutboundPointers.
=============== Diff against Tools-topa.517 ===============
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 isCompiledMethod ]) ifFalse: [ ^ false ].
+ ^ (self class isWeak not or: [ self class instSize > 0 ]) and: [ self isLiteral not ]!
- ^ self class isWeak not and: [ self isLiteral not ]!
Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.518.mcz
==================== Summary ====================
Name: Tools-cmm.518
Author: cmm
Time: 3 February 2014, 3:40:50.779 pm
UUID: 6277da39-26fa-467e-9b30-244ee58b4000
Ancestors: Tools-topa.517
References through named instVars are strong even on weak classes. Fix PointerFinder behavior accordingly.
Add comment reminding about the purpose of Object>>#shouldFollowOutboundPointers.
=============== Diff against Tools-topa.517 ===============
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 isCompiledMethod ]) ifFalse: [ ^ false ].
+ ^ (self class isWeak not or: [ self class instSize > 0 ]) and: [ self isLiteral not ]!
- ^ self class isWeak not and: [ self isLiteral not ]!
Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.518.mcz
==================== Summary ====================
Name: Tools-cmm.518
Author: cmm
Time: 3 February 2014, 3:40:50.779 pm
UUID: 6277da39-26fa-467e-9b30-244ee58b4000
Ancestors: Tools-topa.517
References through named instVars are strong even on weak classes. Fix PointerFinder behavior accordingly.
Add comment reminding about the purpose of Object>>#shouldFollowOutboundPointers.
=============== Diff against Tools-topa.517 ===============
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 isCompiledMethod ]) ifFalse: [ ^ false ].
+ ^ (self class isWeak not or: [ self class instSize > 0 ]) and: [ self isLiteral not ]!
- ^ self class isWeak not and: [ self isLiteral not ]!
Chris Muller uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.564.mcz
==================== Summary ====================
Name: Collections-ul.564
Author: ul
Time: 3 February 2014, 2:35:36.802 pm
UUID: 4b9a37ef-df86-40a0-a0dd-8e8b2c04d4ed
Ancestors: Collections-ul.563
Make sure that Array >> #isLiteral won't get into an infinite recursion, even if the receiver has an recursive structure.
=============== Diff against Collections-ul.563 ===============
Item was changed:
----- Method: Array>>isLiteral (in category 'testing') -----
isLiteral
+
+ ^self class == Array and: [
+ self isLiteralIfContainedBy: IdentitySet new ]!
- ^self class == Array and: [self allSatisfy: [:each | each isLiteral]]!
Item was added:
+ ----- Method: Array>>isLiteralIfContainedBy: (in category 'testing') -----
+ isLiteralIfContainedBy: parents
+ " Answer whether the receiver has a literal text form recognized by the compiler. Precondition: the receiver is an instance of Array. "
+
+ (parents includes: self) ifTrue: [ ^false ].
+ parents add: self.
+ 1 to: self size do: [ :index |
+ | element |
+ element := self at: index.
+ (element class == Array
+ ifTrue: [ element isLiteralIfContainedBy: parents ]
+ ifFalse: [ element isLiteral ]) ifFalse: [ ^false ] ].
+ parents remove: self.
+ ^true!
Chris Muller uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.564.mcz
==================== Summary ====================
Name: Collections-ul.564
Author: ul
Time: 3 February 2014, 2:35:36.802 pm
UUID: 4b9a37ef-df86-40a0-a0dd-8e8b2c04d4ed
Ancestors: Collections-ul.563
Make sure that Array >> #isLiteral won't get into an infinite recursion, even if the receiver has an recursive structure.
=============== Diff against Collections-ul.563 ===============
Item was changed:
----- Method: Array>>isLiteral (in category 'testing') -----
isLiteral
+
+ ^self class == Array and: [
+ self isLiteralIfContainedBy: IdentitySet new ]!
- ^self class == Array and: [self allSatisfy: [:each | each isLiteral]]!
Item was added:
+ ----- Method: Array>>isLiteralIfContainedBy: (in category 'testing') -----
+ isLiteralIfContainedBy: parents
+ " Answer whether the receiver has a literal text form recognized by the compiler. Precondition: the receiver is an instance of Array. "
+
+ (parents includes: self) ifTrue: [ ^false ].
+ parents add: self.
+ 1 to: self size do: [ :index |
+ | element |
+ element := self at: index.
+ (element class == Array
+ ifTrue: [ element isLiteralIfContainedBy: parents ]
+ ifFalse: [ element isLiteral ]) ifFalse: [ ^false ] ].
+ parents remove: self.
+ ^true!
Chris Muller uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.564.mcz
==================== Summary ====================
Name: Collections-ul.564
Author: ul
Time: 3 February 2014, 2:35:36.802 pm
UUID: 4b9a37ef-df86-40a0-a0dd-8e8b2c04d4ed
Ancestors: Collections-ul.563
Make sure that Array >> #isLiteral won't get into an infinite recursion, even if the receiver has an recursive structure.
=============== Diff against Collections-ul.563 ===============
Item was changed:
----- Method: Array>>isLiteral (in category 'testing') -----
isLiteral
+
+ ^self class == Array and: [
+ self isLiteralIfContainedBy: IdentitySet new ]!
- ^self class == Array and: [self allSatisfy: [:each | each isLiteral]]!
Item was added:
+ ----- Method: Array>>isLiteralIfContainedBy: (in category 'testing') -----
+ isLiteralIfContainedBy: parents
+ " Answer whether the receiver has a literal text form recognized by the compiler. Precondition: the receiver is an instance of Array. "
+
+ (parents includes: self) ifTrue: [ ^false ].
+ parents add: self.
+ 1 to: self size do: [ :index |
+ | element |
+ element := self at: index.
+ (element class == Array
+ ifTrue: [ element isLiteralIfContainedBy: parents ]
+ ifFalse: [ element isLiteral ]) ifFalse: [ ^false ] ].
+ parents remove: self.
+ ^true!