On 12/31/09 1:17 PM, Rob Shearman wrote:
2009/12/30 Jacek Caban<ja...@codeweavers.com>:
Hi Rob,

Thanks for your work on jscript. Unfortunately fixing Valgrind on jscript is
not going to be easy. Most of your fixes are good, except clear_global part
and "jscript: Fix a circular reference caused by object and function objects
being able to have properties that are objects and functions." patch. I've
sent a test showing that Windows doesn't do that.
I've resent the memory leak patch without the clear_global part.

Thanks.

To fix it properly we need
to implement a garbage collector. I've designed it in the very early days of
jscript, but I never had time to implement it.
That sounds like an excellent piece of work for someone interested in
algorithms as opposed to the usual bug fixing. I don't think I have
the time to follow through on this myself at the moment.

I can see how this would work for solving the general problem of
circular reference counts in jscript. However, I don't see how this
helps for managing the lifetime of global objects. It seems that
either the global constructors have state in which case they need to
be around for as long as the script context is, while not holding a
reference to the script context to avoid preventing it from dying, or
they don't have any state in which case they can be constructed lazily
and destroyed when the last reference is removed.

The general idea is that script_ctx_t structure is treated just like other objects by garbage collectors. This way, if there are no references stored outside script engine, as soon as engine is closed, it will be released because all its references will be circular. script_ctx_t will have to be treated a bit differently than regular objects in practice, but it's an implementation detail.

Thanks,
    Jacek


Reply via email to