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
This commit is contained in:
Eric Snow 2022-12-14 11:53:57 -07:00 committed by GitHub
parent 9663853800
commit aa8591e9ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 8 deletions

View File

@ -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) \

View File

@ -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.

View File

@ -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), \

View File

@ -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() \