[Pkg] The Trunk: Collections-ul.292.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Feb 5 04:28:51 UTC 2010


Levente Uzonyi uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.292.mcz

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

Name: Collections-ul.292
Author: ul
Time: 5 February 2010, 4:27:13.702 am
UUID: 9ce9d2a0-0fad-7948-853c-788f56581c48
Ancestors: Collections-ul.291

- weak collection changes, part 2

=============== Diff against Collections-ul.291 ===============

Item was changed:
  ----- Method: WeakRegistry>>initialize: (in category 'initialize') -----
  initialize: n
  	valueDictionary := WeakKeyDictionary new: n.
+ 	accessLock := Semaphore forMutualExclusion.
+ 	self installFinalizer.!
- 	accessLock := Semaphore forMutualExclusion.!

Item was added:
+ ----- Method: WeakRegistry>>installFinalizer (in category 'initialize') -----
+ installFinalizer
+ 
+ 	valueDictionary finalizer: [ :value |
+ 		(objectsToFinalize ifNil: [ objectsToFinalize := OrderedCollection new ]) add: value ]!

Item was changed:
  ----- Method: WeakRegistry>>postCopy (in category 'copying') -----
  postCopy
+ 
+ 	self protected: [ "Uses the original accessLock"
+ 		accessLock := Semaphore forMutualExclusion.
+ 		valueDictionary := valueDictionary copy.
+ 		objectsToFinalize := objectsToFinalize copy.
+ 		self installFinalizer ]!
- 	accessLock := Semaphore forMutualExclusion.
- 	valueDictionary := valueDictionary copy.!

Item was changed:
  ----- Method: WeakRegistry>>finalizeValues (in category 'finalization') -----
  finalizeValues
  	"Some of our elements may have gone away. Look for those and activate the associated executors."
+ 	
  	| finiObjects |
+ 	self protected: [ 
+ 		valueDictionary finalizeValues.
+ 		finiObjects := objectsToFinalize.
+ 		objectsToFinalize := nil ].
- 	finiObjects := nil.
- 	"First collect the objects."
- 	self protected: [
- 		valueDictionary associationsDo: [ :assoc |
- 			assoc key ifNil: [
- 				(finiObjects ifNil: [ finiObjects := IdentitySet new ])
- 					add: assoc value ] ].
- 		finiObjects ifNotNil: [ valueDictionary finalizeValues: finiObjects ] ].
- 	"Then do the finalization"
  	finiObjects ifNil: [ ^self ].
+ 	finiObjects do: #finalize!
- 	finiObjects do: [ :each | each finalize ]!

Item was changed:
+ (PackageInfo named: 'Collections') postscript: 'WeakRegistry allInstancesDo: #installFinalizer'!
- (PackageInfo named: 'Collections') postscript: ''!



More information about the Packages mailing list