Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
How to swap out an object using an image segment
Last updated at 7:55 am UTC on 23 March 2003
The following method shows how an object may be "swapped out" into an ImageSegment and thus reducing the footprint ot the main image. The object is automatically brought in again if is is used again.

The example shows a method from an "account" object I have:

swapOut
    "Swaps out this object using an ImageSegment.
    Returns the ImageSegment created. Each reference to me or into
    any of my parts will be turned into an ImageSegmentRootStub
    which acts as an autoloading proxy thus bringing me back in
    at first access. The stubs know the ImageSegment so it does not need
    to be remembered. The ImageSegment can be brought in
    directly by calling #install on it."

    | is myParent |
    myParent _ parent.
    parent _ nil.
    is _ ImageSegment new.
    is copyFromRoots: (Array with: self) sizeHint: 500000 areUnique: true.
    is segmentName: 'account', id fullPrintString.
    is extract; writeToFile.
    parent _ myParent.
    ^is

This would "swap out" the object and replace all references with autoloading stubs. It works like a charm! And especially loading it back in is FAST.

Goran Hultgren