summaryrefslogtreecommitdiffstats
path: root/Include/internal/pycore_runtime_init.h
diff options
context:
space:
mode:
authorMichael Droettboom <mdboom@gmail.com>2025-03-27 13:57:06 (GMT)
committerGitHub <noreply@github.com>2025-03-27 13:57:06 (GMT)
commit8614f86b7163b1c39798b481902dbb511292a537 (patch)
tree2bf6a46b432df3d6bf01a4176f3a614a01c48566 /Include/internal/pycore_runtime_init.h
parentcf5e438c0297954c4411c1c3ae4ba67a48b134ea (diff)
downloadcpython-8614f86b7163b1c39798b481902dbb511292a537.zip
cpython-8614f86b7163b1c39798b481902dbb511292a537.tar.gz
cpython-8614f86b7163b1c39798b481902dbb511292a537.tar.bz2
gh-131525: Cache the result of tuple_hash (#131529)
* gh-131525: Cache the result of tuple_hash * Fix debug builds * Add blurb * Fix formatting * Pre-compute empty tuple singleton * Mostly set the cache within tuple_alloc * Fixes for TSAN * Pre-compute empty tuple singleton * Fix for 32-bit platforms * Assert that op != NULL in _PyTuple_RESET_HASH_CACHE * Use FT_ATOMIC_STORE_SSIZE_RELAXED macro * Update Include/internal/pycore_tuple.h Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> * Fix alignment * atomic load * Update Objects/tupleobject.c Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> --------- Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Chris Eibl <138194463+chris-eibl@users.noreply.github.com>
Diffstat (limited to 'Include/internal/pycore_runtime_init.h')
-rw-r--r--Include/internal/pycore_runtime_init.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/Include/internal/pycore_runtime_init.h b/Include/internal/pycore_runtime_init.h
index 8f866fd..2b2e439 100644
--- a/Include/internal/pycore_runtime_init.h
+++ b/Include/internal/pycore_runtime_init.h
@@ -27,6 +27,7 @@ extern "C" {
#include "pycore_runtime_init_generated.h" // _Py_bytes_characters_INIT
#include "pycore_signal.h" // _signals_RUNTIME_INIT
#include "pycore_tracemalloc.h" // _tracemalloc_runtime_state_INIT
+#include "pycore_tuple.h" // _PyTuple_HASH_EMPTY
extern PyTypeObject _PyExc_MemoryError;
@@ -106,6 +107,7 @@ extern PyTypeObject _PyExc_MemoryError;
}, \
.tuple_empty = { \
.ob_base = _PyVarObject_HEAD_INIT(&PyTuple_Type, 0), \
+ .ob_hash = _PyTuple_HASH_EMPTY, \
}, \
.hamt_bitmap_node_empty = { \
.ob_base = _PyVarObject_HEAD_INIT(&_PyHamt_BitmapNode_Type, 0), \