#14059: Fix refcount/deallocation of integers
-----------------------------+----------------------------------------------
Reporter: SimonKing | Owner: rlm
Type: defect | Status: new
Priority: blocker | Milestone: sage-5.7
Component: memleak | Resolution:
Keywords: | Work issues:
Report Upstream: N/A | Reviewers:
Authors: | Merged in:
Dependencies: | Stopgaps:
-----------------------------+----------------------------------------------
Comment (by SimonKing):
What is the original purpose of fast_tp_dealloc? If I understand it
correctly, if there is enough room left on the stack, then dead integers
are put there (and I guess get freed in a whole bunch, which is cheaper
than freeing them one by one), otherwise fast_tp_dealloc explicitly
removes them.
And I see that the Integer class has a `__dealloc__` method; but it seems
that
{{{
hook_tp_functions(global_dummy_Integer, NULL, <newfunc>&fast_tp_new, NULL,
&fast_tp_dealloc, False)
}}}
is then used to override the __dealloc__, or what?
And concerning the global_dummy_Integer, I see the comment
{{{
# We use a global Integer element to steal all the references
# from. DO NOT INITIALIZE IT AGAIN and DO NOT REFERENCE IT!
cdef Integer global_dummy_Integer
global_dummy_Integer = Integer()
}}}
Sounds like black magic to me. Robert, can you elaborate how it all works?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14059#comment:6>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.