GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||
GeezerVison is showing github.com — gh-112075: Add try-incref functions from nogil branch for use in dict thread safety by DinoV · Pull Request #114512 · python/cpython Conversation
|
|
|
||
| /* Tries to incref the object op and ensures that *src still points to it. */ | ||
| static inline int | ||
| _Py_TryAcquireObject(PyObject **src, PyObject *op) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I don't love this name, but I don't know what it should be called.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I don't really have a better name either :P
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Maybe just _Py_TryIncref()? Also maybe rename src to ptr for consistency with the other functions here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
818fc5f to
3e50cbe
Compare
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
A few minor suggestions, but otherwise LGTM.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
|
||
| /* Tries to incref the object op and ensures that *src still points to it. */ | ||
| static inline int | ||
| _Py_TryAcquireObject(PyObject **src, PyObject *op) |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Maybe just _Py_TryIncref()? Also maybe rename src to ptr for consistency with the other functions here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
3e50cbe to
d5fe7a1
Compare
colesbury/nogil@b6b12a9a94e Co-Authored-By: Sam Gross <[email protected]>
d5fe7a1 to
87e9465
Compare
…n dict thread safety (python#114512) * Bring in a subset of biased reference counting: colesbury/nogil@b6b12a9a94e The NoGIL branch has functions for attempting to do an incref on an object which may or may not be in flight. This just brings those functions over so that they will be usable from in the dict implementation to get items w/o holding a lock. There's a handful of small simple modifications: Adding inline to the force inline functions to avoid a warning, and switching from _Py_ALWAYS_INLINE to Py_ALWAYS_INLINE as that's available Remove _Py_REF_LOCAL_SHIFT as it doesn't exist yet (and is currently 0 in the 3.12 nogil branch anyway) ob_ref_shared is currently Py_ssize_t and not uint32_t, so use that _PY_LIKELY doesn't exist, so drop it _Py_ThreadLocal becomes _Py_IsOwnedByCurrentThread Add '_PyInterpreterState_GET()' to _Py_IncRefTotal calls. Co-Authored-By: Sam Gross <[email protected]>
…n dict thread safety (python#114512) * Bring in a subset of biased reference counting: colesbury/nogil@b6b12a9a94e The NoGIL branch has functions for attempting to do an incref on an object which may or may not be in flight. This just brings those functions over so that they will be usable from in the dict implementation to get items w/o holding a lock. There's a handful of small simple modifications: Adding inline to the force inline functions to avoid a warning, and switching from _Py_ALWAYS_INLINE to Py_ALWAYS_INLINE as that's available Remove _Py_REF_LOCAL_SHIFT as it doesn't exist yet (and is currently 0 in the 3.12 nogil branch anyway) ob_ref_shared is currently Py_ssize_t and not uint32_t, so use that _PY_LIKELY doesn't exist, so drop it _Py_ThreadLocal becomes _Py_IsOwnedByCurrentThread Add '_PyInterpreterState_GET()' to _Py_IncRefTotal calls. Co-Authored-By: Sam Gross <[email protected]>
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.