Hello
Each Object implements the message
comeFullyUpOnReload
that means activities which have to be done after the object has been
reloaded from a file or stream.
The default is to do nothing.
Object
comeFullyUpOnReload: smartRefStream
"Normally this read-in object is exactly what we want to store. 7/26/96 tk"
^ self
http://wiki.squeak.org/squeak/1280But ImageSegment objects use a specialized method which hdoes a lot
http://wiki.squeak.org/squeak/1281ImageSegment comeFullyUpOnReload: smartRefStream
The method comment of ImageSegment comeFullyUpOnReload: smartRefStream
-------------------------------------------------------------------------------------------------------------
comeFullyUpOnReload: smartRefStream
"fix up the objects in the segment that changed size. An object in
the segment is the wrong size for the modern version of the class.
Construct a fake class that is the old size. Replace the modern class
with the old one in outPointers. Load the segment. Traverse the
instances, making new instances by copying fields, and running
conversion messages. Keep the new instances. Bulk forward become the
old to the new. Let go of the fake objects and classes.
After the install (below), arrayOfRoots is filled in. Globalize new
classes. Caller may want to do some special install on certain
objects in arrayOfRoots.
May want to write the segment out to disk in its new form."
-------------------------------------------------------------------------------------------------------------
Interestingly if you add returns and spaces and number we have a
pretty nice description of the algorithm
The same this time with returns and empty lines
-------------------------------------------------------------------------------------------------------------
"fix up the objects in the segment that changed size.
An object in the segment is the wrong size for the modern
version of the class.
1. Construct a fake class that is the old size.
2. Replace the modern class with the old one in outPointers.
3. Load the segment.
4. Traverse the instances,
making new instances by copying fields,
and running conversion messages.
5. Keep the new instances.
6. Bulk forward become the old to the new.
7. Let go of the fake objects and classes.
8. After the install (below), arrayOfRoots is filled in.
9. Globalize new classes.
10. Caller may want to do some special install on certain
objects in arrayOfRoots.
11. May want to write the segment out to disk in its new form."
-------------------------------------------------------------------------------------------------------------
The method is difficult to understand and I assume this is where
Trygve Reenskaug would say that we need a CONTEXT and an INTERACTION
object.....
Note: DiskProxy also implements has also a complex implementation of
comeFullyUpOnReload
Regards
Hannes