[squeak-dev] The Trunk: Kernel-ar.411.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Feb 26 18:38:17 UTC 2010


Andreas Raab uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ar.411.mcz

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

Name: Kernel-ar.411
Author: ar
Time: 26 February 2010, 7:36:40.257 pm
UUID: b69a28db-8475-bc4b-89ed-285ccf3841cd
Ancestors: Kernel-ul.410

Add MethodDictionary class>>compactAllInstances to save space in releases. Compacting all MDs in my images saves 600k in image size which isn't bad at all.

=============== Diff against Kernel-ul.410 ===============

Item was added:
+ ----- Method: MethodDictionary class>>compactAllInstances (in category 'initialization') -----
+ compactAllInstances	"MethodDictionary compactAllInstances"
+ 	"Compacts all MethodDictionaries to save space"
+ 
+ 	| oldInstances newInstances |
+ 	oldInstances := self allInstances.
+ 	newInstances := oldInstances collect:[:md|
+ 		(self new: md size) 
+ 			compactCopyFrom: md;
+ 			yourself].
+ 	oldInstances elementsForwardIdentityTo: newInstances.
+ !

Item was added:
+ ----- Method: MethodDictionary>>compactCopyFrom: (in category 'private') -----
+ compactCopyFrom: sourceMD
+ 	"Copy the contents of source dictionary without growing"
+ 
+ 	sourceMD keysAndValuesDo:[:key :value| | index |
+ 		index := self scanFor: key.
+ 		(self basicAt: index) ifNotNil:[self error: 'Something is horribly broken'].
+ 		self basicAt: index put: key.
+ 		array at: index put: value.
+ 		tally := tally + 1.
+ 	].
+ 	self size = self capacity ifTrue:[self grow]. "grow only if we reach capacity"
+ !




More information about the Squeak-dev mailing list