Re: [3/4] jscript: Fix various memory and reference count leaks.

2009-12-31 Thread Rob Shearman
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.

 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.

Thanks,
-- 
Rob Shearman




Re: [3/4] jscript: Fix various memory and reference count leaks.

2009-12-31 Thread Jacek Caban

On 12/31/09 1:17 PM, Rob Shearman wrote:

2009/12/30 Jacek Cabanja...@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




Re: [3/4] jscript: Fix various memory and reference count leaks.

2009-12-30 Thread Jacek Caban

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. 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.


Thanks,
Jacek