{{ message }}
Conversation
Only define PyObject.ob_refcnt as an anonymous union on C11 and newer, or when GCC is used. If GCC is used on C99 and older, add __extension__ on the union. On C99 and older without GCC, Py_INCREF() and Py_DECREF() are implemented as function calls.
Member
Author
Member
Author
|
For now, my PR implements Py_INCREF() and Py_DECREF() as opaque function calls on C99 and newer. Maybe later, this code path can still be optimized to inline the code. But a solution without anonymous union should be found for that. |
Member
Author
|
To test this PR, I added the following code to #ifdef _PYOBJECT_REFCNT_ANON_UNION
printf("PyObject.ob_refcnt is an union\n");
#else
printf("PyObject.ob_refcnt type is Py_ssize_t\n");
#endifAnd I modified |
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Only define PyObject.ob_refcnt as an anonymous union on C11 and newer, or when GCC is used. If GCC is used on C99 and older, add extension on the union. On C99 and older without GCC, Py_INCREF() and Py_DECREF() are implemented as function calls.