| OCR Text |
Show :32 obj ect descriptor is compared with the object descriptor that was compiled-in with t he application. If th ey a re diflerent then t he read-in object descriptor is saved for obj ect evolution. On enco untering the object flag , the object tag is read and based 0 11 Uw tag numbe r , the proper obj_info structure is obtain ed. After that , tlw object is read in from the bin a ry fi le. T'he virtual table pointer of the obj ect is 1nean ingless in t he new context , so it is rep laced by the virtu al table poin ter of a sample object (see Figure :Ll ). The s lots of the object a.re trave rsed n ext. If it is a poi11 ter to a h11 il1.- i11 t ype ( cl ollh le , flo<t1~ . long , un s igned lon g, int , shor t , tJnsignecl .'il1o rt, char , uusi g necl char ) o r clJ<trac te r str ing t hen suffic ient nwrnory is a ll ocated et.ud Llw data is read-in. Otherwise if it is a pointer of type "*" , or ">" th en the load routine is recursively invoked a nd t he pointer is replaced by the address where t he target object gets lo a cl('~ d . If it is a pointer of type "(Ql" then it is known that all the I ist eleme nts app ear consecutive ly. A 11 t l1 ese li st objects are read-in one after i.lw other , th e list is formed , and the address of the obj ect which is at the bead of tbe li st is used to patch the pointer. If the object descriptor for the obj ect that was loaded is different from the one compiled- in , then the object is evolved. Since the object moves as a result of this, a ll o hj ect re fe rences to th is object hav(' t.o he patched by the new ad dress. For sha.red obj ects, it is same as above except that the object along with its old l' ir! lletl rlclc!ress is cut('rccl i11 the s har( 'd_tablc. 1·\J r refe rences to o bjects, t he obj ect corresponding to t.be virtual address is fetch ed from the sbared_table. T he object reference is patched with this address. |