Robert wrote:
> Is this going to be a general problem with any inside a
> NewTempExprNode (plain) ExprNode? That could be bad. On that note, is
> there any reason that temp freeing is done as a separate step now
> instead of as part of the disposal code? (Someone more familiar with
> the new code probably has a trivial answer to this.)

Some code is generated like this:

/*allocate node*/
if (something) {
  block A
  /* deallocate node */
} else {
  block B
  /* deallocate node */
}

If temp releasing is tied up with disposal, the temp can be reallocated
and reused in block B, leading to disaster. Also it would be released
twice. Etc.

If the C control flow matched the node tree, this wouldn't be a problem,
but it doesn't.

Pyrex didn't have this problem, but that meant that deallocation (i.e.
decrefs) is done later than necesarry.

Dag Sverre

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to