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


Reply via email to