Xiao-Feng, thank you for your answers! > 1. your allocated separate mem is not collected by GC, right? Yes. > 2. the original copy of a copied object is unmarked (as dead), right? You are right again.
> If they are yes, then it might have problems when GC compacts. The > problems could be: > 1. how are the pointers to copied objects updated to point to the new copies? > 2. you set a fw pointer from original copy to new copy, but that > doesn't help, because the compaction doesn't follow fw pointer at all. > > For problem 1, you need extra operations to update all the references > to the new copies. Ok. I temporarily solved this problem by the following mechanism. I am collecting pairs old/mid and mid/new so updating pointers phase just links this info old->mid->new. So now (temporarily) I don't need to change any info in object. > For problem 2, you need install the fw pointer inside the object body, > not in object header, so that it does not impact the obj_end > computation. But you need a bit somewhere to indicate the object has > been copied away. In this way, in the ref updating phase, you can > check the flag, and follow the fw pointer. Thank you. I will try this approach. By the previously described mechanism now I don't need to install fw pointer. But during updating pointers phase I've got a problem with vt. May I somehow corrupt vt? Please ask if any additional info needed. -- Yuri S. Kashnikov Novosibirsk State University, Russia 2 Pirogova street 630090, Novosibirsk-90 [EMAIL PROTECTED]
