From aa8591e9ca9a3e55e96a03c17fa9d3902f0674dc Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Wed, 14 Dec 2022 11:53:57 -0700 Subject: [PATCH] gh-90111: Minor Cleanup for Runtime-Global Objects (gh-100254) * move _PyRuntime.global_objects.interned to _PyRuntime.cached_objects.interned_strings (and use _Py_CACHED_OBJECT()) * rename _PyRuntime.global_objects to _PyRuntime.static_objects (This also relates to gh-96075.) https://github.com/python/cpython/issues/90111 --- Include/internal/pycore_global_objects.h | 8 ++++---- Include/internal/pycore_runtime.h | 2 +- Include/internal/pycore_runtime_init.h | 2 +- Objects/unicodeobject.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Include/internal/pycore_global_objects.h b/Include/internal/pycore_global_objects.h index 80f6bb2c8a7..d0461fa7e82 100644 --- a/Include/internal/pycore_global_objects.h +++ b/Include/internal/pycore_global_objects.h @@ -28,14 +28,16 @@ extern "C" { struct _Py_cached_objects { PyObject *str_replace_inf; + + PyObject *interned_strings; }; #define _Py_GLOBAL_OBJECT(NAME) \ - _PyRuntime.global_objects.NAME + _PyRuntime.static_objects.NAME #define _Py_SINGLETON(NAME) \ _Py_GLOBAL_OBJECT(singletons.NAME) -struct _Py_global_objects { +struct _Py_static_objects { struct { /* Small integers are preallocated in this array so that they * can be shared. @@ -59,8 +61,6 @@ struct _Py_global_objects { PyHamtNode_Bitmap hamt_bitmap_node_empty; _PyContextTokenMissing context_token_missing; } singletons; - - PyObject *interned; }; #define _Py_INTERP_CACHED_OBJECT(interp, NAME) \ diff --git a/Include/internal/pycore_runtime.h b/Include/internal/pycore_runtime.h index 92ed45956c9..d100e836c7d 100644 --- a/Include/internal/pycore_runtime.h +++ b/Include/internal/pycore_runtime.h @@ -163,7 +163,7 @@ typedef struct pyruntimestate { /* All the objects that are shared by the runtime's interpreters. */ struct _Py_cached_objects cached_objects; - struct _Py_global_objects global_objects; + struct _Py_static_objects static_objects; /* The following fields are here to avoid allocation during init. The data is exposed through _PyRuntimeState pointer fields. diff --git a/Include/internal/pycore_runtime_init.h b/Include/internal/pycore_runtime_init.h index 1431096e2d2..6342a28f4df 100644 --- a/Include/internal/pycore_runtime_init.h +++ b/Include/internal/pycore_runtime_init.h @@ -70,7 +70,7 @@ extern "C" { .types = { \ .next_version_tag = 1, \ }, \ - .global_objects = { \ + .static_objects = { \ .singletons = { \ .small_ints = _Py_small_ints_INIT, \ .bytes_empty = _PyBytes_SIMPLE_INIT(0, 0), \ diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index b721ccd805e..f0c7aa7707f 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -233,12 +233,12 @@ static inline PyObject* unicode_new_empty(void) */ static inline PyObject *get_interned_dict(void) { - return _PyRuntime.global_objects.interned; + return _Py_CACHED_OBJECT(interned_strings); } static inline void set_interned_dict(PyObject *dict) { - _PyRuntime.global_objects.interned = dict; + _Py_CACHED_OBJECT(interned_strings) = dict; } #define _Py_RETURN_UNICODE_EMPTY() \