2011/2/5 Christian Tismer <tis...@stackless.com>:
> On 2/5/11 11:47 PM, Benjamin Peterson wrote:
>>
>> 2011/2/5 Christian Tismer<tis...@stackless.com>:
>>>
>>> Howdy,
>>>
>>> studying the differences of PyPy vs. CPython, most seem to be fine;
>>> one thing where I an unsure is the __del__ behavior.
>>>
>>> I am not addressing its delayed call or the number it is called, this
>>> is similar to Jython and IronPython.
>>>
>>> But assigning to __del__ after a class is created, is that so hard
>>> to implement?
>>
>> It's not a JIT problem rather a RPython/gc one. All the RPython
>> classes with finalizers must be known at translation time. __del__ is
>> expensive in the for gc. To implement user level __del__, a different
>> underlying interp class is used which has its own __del__ which the gc
>> will call.
>
> I understand. Then having a __del__ is always expensive, I guess?
> I mean, does it involve overhead to have a __del__ at all, runtime
> or compile time?

It just means there's a lot of runtime bookkeeping in the GC for
objects with __del__.

>
> How feasible would it be to generate always two versions of
> the RPython class with a stub __del__ method, which calls a
> yet non-existing function?
>
> sorry if that is non-sense, but maybe something can be done
> to isolate these bad spots, without simply silently not calling them.

Well, you do at least get a nice warning. I don't think this is too
hard to work around in apps. There's also weakrefs.

>
> cheers - chris



-- 
Regards,
Benjamin
_______________________________________________
pypy-dev@codespeak.net
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to