harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yuri Kashnikoff" <yuri.kashnik...@gmail.com>
Subject Re: [drlvm][gc] How to iterate MOS?
Date Wed, 26 Mar 2008 09:17:01 GMT
Xiao-Feng, thank you for your answers!

>  1. your allocated separate mem is not collected by GC, right?
>  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

View raw message