Mathieu Suen writes:
Hi,
Where can I find the #becomeCompactAt:.
Sorry, that seems to be an Exupery extension. I don't think I wrote this method.
It's here:
Behavior>>becomeCompactAt: anInteger "Here are the restrictions on compact classes in order for export segments to work: A compact class index may not be reused. If a class was compact in a release of Squeak, no other class may use that index. The class might not be compact later, and there should be nil in its place in the array." | cct index |
self isWeak ifTrue:[^ self halt: 'You must not make a weak class compact']. cct := self environment compactClassesArray. (self indexIfCompact > 0 or: [cct includes: self]) ifTrue: [^ self halt: self name , 'is already compact']. index := anInteger. (cct at: index) isNil ifFalse: [self halt: 'The compact class index is already used']. "Install this class in the compact class table" cct at: index put: self. "Update instspec so future instances will be compact" format := format + (index bitShift: 11). "Make up new instances and become old ones into them" self updateInstancesFrom: self. "Purge any old instances" Smalltalk garbageCollect.