David T. Lewis uploaded a new version of System to project The Trunk: http://source.squeak.org/trunk/System-dtl.462.mcz
==================== Summary ====================
Name: System-dtl.462 Author: dtl Time: 7 December 2011, 7:36:57.561 pm UUID: d28ec1e6-67ed-4068-94bd-88fe4c76e310 Ancestors: System-dtl.461
For Squeak 4.3 release code freeze, temporarily revert previous ReferenceStream changes due to unresolved issues (see http://lists.squeakfoundation.org/pipermail/squeak-dev/2011-December/162386....). The updates will be reintroduced following the Squeak 4.3 release.
Packages affected: Kernel-Objects System-Object Storage Tests-Object Storage
=============== Diff against System-dtl.461 ===============
Item was changed: ----- Method: DiskProxy>>storeDataOn: (in category 'i/o') ----- + storeDataOn: aDataStream - storeDataOn: aReferenceStream "Besides just storing, get me inserted into references, so structures will know about class DiskProxy."
+ super storeDataOn: aDataStream. + aDataStream references at: self put: #none. + "just so instVarInfo: will find it and put it into structures"! - super storeDataOn: aReferenceStream. - - "just so instVarInfo: will find it and put it into structures" - " aReferenceStream references at: self put: #none." - aReferenceStream addSpecialReference: self!
Item was removed: - ----- Method: ReferenceStream>>addSpecialReference: (in category 'writing') ----- - addSpecialReference: aDiskProxy - "See senders. Added to avoid breaking encapsulation (assuming that #references would answer the actual collection)" - references at: aDiskProxy put: #none!
Item was changed: ----- Method: ReferenceStream>>references (in category 'writing') ----- references + ^ references! - "Do not include provisory references created in #nextPutWeak that never became normal references, - because the referenced object was never added from a call to #nextPut:" - ^ references select: [ :value | value isNumber ]!
Item was changed: ----- Method: ReferenceStream>>statisticsOfRefs (in category 'statistics') ----- statisticsOfRefs "Analyze the information in references, the objects being written out"
+ | parents ownerBags tallies n nm owners | + parents := IdentityDictionary new: references size * 2. - | parents ownerBags tallies n nm owners normalReferences | - normalReferences := self references. "Exclude unrealized weaks" - parents := IdentityDictionary new: normalReferences size * 2. n := 0. 'Finding Owners...' + displayProgressFrom: 0 to: references size - displayProgressFrom: 0 to: normalReferences size during: [:bar | + references keysDo: - normalReferences keysDo: [:parent | | kids | bar value: (n := n+1). kids := parent class isFixed + ifTrue: [(1 to: parent class instSize) collect: [:i | parent + instVarAt: i]] - ifTrue: [(1 to: parent class instSize) collect: [:i | parent instVarAt: i]] ifFalse: [parent class isBits ifTrue: [Array new] + ifFalse: [(1 to: parent basicSize) collect: [:i | parent basicAt: + i]]]. + (kids select: [:x | references includesKey: x]) - ifFalse: [(1 to: parent basicSize) collect: [:i | parent basicAt: i]]]. - (kids select: [:x | normalReferences includesKey: x]) do: [:child | parents at: child put: parent]]]. ownerBags := Dictionary new. tallies := Bag new. n := 0. 'Tallying Owners...' + displayProgressFrom: 0 to: references size - displayProgressFrom: 0 to: normalReferences size during: [:bar | + references keysDo: "For each class of obj, tally a bag of owner + classes" - normalReferences keysDo: "For each class of obj, tally a bag of owner classes" [:obj | | objParent | bar value: (n := n+1). nm := obj class name. tallies add: nm. owners := ownerBags at: nm ifAbsent: [ownerBags at: nm put: Bag new]. (objParent := parents at: obj ifAbsent: [nil]) == nil ifFalse: [owners add: objParent class name]]]. ^ String streamContents: [:strm | tallies sortedCounts do: [:assn | n := assn key. nm := assn value. owners := ownerBags at: nm. strm cr; nextPutAll: nm; space; print: n. owners size > 0 ifTrue: [strm cr; tab; print: owners sortedCounts]]]!
squeak-dev@lists.squeakfoundation.org