Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Include/internal/pycore_global_strings.h
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,14 @@ struct _Py_global_strings {
STRUCT_FOR_ID(write)
STRUCT_FOR_ID(zipimporter)
} identifiers;
struct {
PyASCIIObject _ascii;
uint8_t _data[2];
} ascii[128];
struct {
PyCompactUnicodeObject _latin1;
uint8_t _data[2];
} latin1[128];
};
/* End auto-generated code */

Expand Down
278 changes: 277 additions & 1 deletion Include/internal/pycore_runtime_init.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,23 @@ extern "C" {
._ ## NAME = _PyASCIIObject_INIT(LITERAL)
#define INIT_ID(NAME) \
._ ## NAME = _PyASCIIObject_INIT(#NAME)

#define _PyCompactUnicodeObject_INIT(LITERAL) \
{ \
._latin1 = { \
._base = { \
.ob_base = _PyObject_IMMORTAL_INIT(&PyUnicode_Type), \
.length = sizeof(LITERAL) - 1, \
.hash = -1, \
.state = { \
.kind = 1, \
.compact = 1, \
.ascii = 0, \
.ready = 1, \
}, \
}, \
}, \
._data = LITERAL, \
}

/* The following is auto-generated by Tools/scripts/generate_global_objects.py. */
#define _Py_global_objects_INIT { \
Expand Down Expand Up @@ -963,6 +979,266 @@ extern "C" {
INIT_ID(write), \
INIT_ID(zipimporter), \
}, \
.ascii = { \
_PyASCIIObject_INIT("\x00"), \
_PyASCIIObject_INIT("\x01"), \
_PyASCIIObject_INIT("\x02"), \
_PyASCIIObject_INIT("\x03"), \
_PyASCIIObject_INIT("\x04"), \
_PyASCIIObject_INIT("\x05"), \
_PyASCIIObject_INIT("\x06"), \
_PyASCIIObject_INIT("\x07"), \
_PyASCIIObject_INIT("\x08"), \
_PyASCIIObject_INIT("\x09"), \
_PyASCIIObject_INIT("\x0a"), \
_PyASCIIObject_INIT("\x0b"), \
_PyASCIIObject_INIT("\x0c"), \
_PyASCIIObject_INIT("\x0d"), \
_PyASCIIObject_INIT("\x0e"), \
_PyASCIIObject_INIT("\x0f"), \
_PyASCIIObject_INIT("\x10"), \
_PyASCIIObject_INIT("\x11"), \
_PyASCIIObject_INIT("\x12"), \
_PyASCIIObject_INIT("\x13"), \
_PyASCIIObject_INIT("\x14"), \
_PyASCIIObject_INIT("\x15"), \
_PyASCIIObject_INIT("\x16"), \
_PyASCIIObject_INIT("\x17"), \
_PyASCIIObject_INIT("\x18"), \
_PyASCIIObject_INIT("\x19"), \
_PyASCIIObject_INIT("\x1a"), \
_PyASCIIObject_INIT("\x1b"), \
_PyASCIIObject_INIT("\x1c"), \
_PyASCIIObject_INIT("\x1d"), \
_PyASCIIObject_INIT("\x1e"), \
_PyASCIIObject_INIT("\x1f"), \
_PyASCIIObject_INIT("\x20"), \
_PyASCIIObject_INIT("\x21"), \
_PyASCIIObject_INIT("\x22"), \
_PyASCIIObject_INIT("\x23"), \
_PyASCIIObject_INIT("\x24"), \
_PyASCIIObject_INIT("\x25"), \
_PyASCIIObject_INIT("\x26"), \
_PyASCIIObject_INIT("\x27"), \
_PyASCIIObject_INIT("\x28"), \
_PyASCIIObject_INIT("\x29"), \
_PyASCIIObject_INIT("\x2a"), \
_PyASCIIObject_INIT("\x2b"), \
_PyASCIIObject_INIT("\x2c"), \
_PyASCIIObject_INIT("\x2d"), \
_PyASCIIObject_INIT("\x2e"), \
_PyASCIIObject_INIT("\x2f"), \
_PyASCIIObject_INIT("\x30"), \
_PyASCIIObject_INIT("\x31"), \
_PyASCIIObject_INIT("\x32"), \
_PyASCIIObject_INIT("\x33"), \
_PyASCIIObject_INIT("\x34"), \
_PyASCIIObject_INIT("\x35"), \
_PyASCIIObject_INIT("\x36"), \
_PyASCIIObject_INIT("\x37"), \
_PyASCIIObject_INIT("\x38"), \
_PyASCIIObject_INIT("\x39"), \
_PyASCIIObject_INIT("\x3a"), \
_PyASCIIObject_INIT("\x3b"), \
_PyASCIIObject_INIT("\x3c"), \
_PyASCIIObject_INIT("\x3d"), \
_PyASCIIObject_INIT("\x3e"), \
_PyASCIIObject_INIT("\x3f"), \
_PyASCIIObject_INIT("\x40"), \
_PyASCIIObject_INIT("\x41"), \
_PyASCIIObject_INIT("\x42"), \
_PyASCIIObject_INIT("\x43"), \
_PyASCIIObject_INIT("\x44"), \
_PyASCIIObject_INIT("\x45"), \
_PyASCIIObject_INIT("\x46"), \
_PyASCIIObject_INIT("\x47"), \
_PyASCIIObject_INIT("\x48"), \
_PyASCIIObject_INIT("\x49"), \
_PyASCIIObject_INIT("\x4a"), \
_PyASCIIObject_INIT("\x4b"), \
_PyASCIIObject_INIT("\x4c"), \
_PyASCIIObject_INIT("\x4d"), \
_PyASCIIObject_INIT("\x4e"), \
_PyASCIIObject_INIT("\x4f"), \
_PyASCIIObject_INIT("\x50"), \
_PyASCIIObject_INIT("\x51"), \
_PyASCIIObject_INIT("\x52"), \
_PyASCIIObject_INIT("\x53"), \
_PyASCIIObject_INIT("\x54"), \
_PyASCIIObject_INIT("\x55"), \
_PyASCIIObject_INIT("\x56"), \
_PyASCIIObject_INIT("\x57"), \
_PyASCIIObject_INIT("\x58"), \
_PyASCIIObject_INIT("\x59"), \
_PyASCIIObject_INIT("\x5a"), \
_PyASCIIObject_INIT("\x5b"), \
_PyASCIIObject_INIT("\x5c"), \
_PyASCIIObject_INIT("\x5d"), \
_PyASCIIObject_INIT("\x5e"), \
_PyASCIIObject_INIT("\x5f"), \
_PyASCIIObject_INIT("\x60"), \
_PyASCIIObject_INIT("\x61"), \
_PyASCIIObject_INIT("\x62"), \
_PyASCIIObject_INIT("\x63"), \
_PyASCIIObject_INIT("\x64"), \
_PyASCIIObject_INIT("\x65"), \
_PyASCIIObject_INIT("\x66"), \
_PyASCIIObject_INIT("\x67"), \
_PyASCIIObject_INIT("\x68"), \
_PyASCIIObject_INIT("\x69"), \
_PyASCIIObject_INIT("\x6a"), \
_PyASCIIObject_INIT("\x6b"), \
_PyASCIIObject_INIT("\x6c"), \
_PyASCIIObject_INIT("\x6d"), \
_PyASCIIObject_INIT("\x6e"), \
_PyASCIIObject_INIT("\x6f"), \
_PyASCIIObject_INIT("\x70"), \
_PyASCIIObject_INIT("\x71"), \
_PyASCIIObject_INIT("\x72"), \
_PyASCIIObject_INIT("\x73"), \
_PyASCIIObject_INIT("\x74"), \
_PyASCIIObject_INIT("\x75"), \
_PyASCIIObject_INIT("\x76"), \
_PyASCIIObject_INIT("\x77"), \
_PyASCIIObject_INIT("\x78"), \
_PyASCIIObject_INIT("\x79"), \
_PyASCIIObject_INIT("\x7a"), \
_PyASCIIObject_INIT("\x7b"), \
_PyASCIIObject_INIT("\x7c"), \
_PyASCIIObject_INIT("\x7d"), \
_PyASCIIObject_INIT("\x7e"), \
_PyASCIIObject_INIT("\x7f"), \
}, \
.latin1 = { \
_PyCompactUnicodeObject_INIT("\x80"), \
_PyCompactUnicodeObject_INIT("\x81"), \
_PyCompactUnicodeObject_INIT("\x82"), \
_PyCompactUnicodeObject_INIT("\x83"), \
_PyCompactUnicodeObject_INIT("\x84"), \
_PyCompactUnicodeObject_INIT("\x85"), \
_PyCompactUnicodeObject_INIT("\x86"), \
_PyCompactUnicodeObject_INIT("\x87"), \
_PyCompactUnicodeObject_INIT("\x88"), \
_PyCompactUnicodeObject_INIT("\x89"), \
_PyCompactUnicodeObject_INIT("\x8a"), \
_PyCompactUnicodeObject_INIT("\x8b"), \
_PyCompactUnicodeObject_INIT("\x8c"), \
_PyCompactUnicodeObject_INIT("\x8d"), \
_PyCompactUnicodeObject_INIT("\x8e"), \
_PyCompactUnicodeObject_INIT("\x8f"), \
_PyCompactUnicodeObject_INIT("\x90"), \
_PyCompactUnicodeObject_INIT("\x91"), \
_PyCompactUnicodeObject_INIT("\x92"), \
_PyCompactUnicodeObject_INIT("\x93"), \
_PyCompactUnicodeObject_INIT("\x94"), \
_PyCompactUnicodeObject_INIT("\x95"), \
_PyCompactUnicodeObject_INIT("\x96"), \
_PyCompactUnicodeObject_INIT("\x97"), \
_PyCompactUnicodeObject_INIT("\x98"), \
_PyCompactUnicodeObject_INIT("\x99"), \
_PyCompactUnicodeObject_INIT("\x9a"), \
_PyCompactUnicodeObject_INIT("\x9b"), \
_PyCompactUnicodeObject_INIT("\x9c"), \
_PyCompactUnicodeObject_INIT("\x9d"), \
_PyCompactUnicodeObject_INIT("\x9e"), \
_PyCompactUnicodeObject_INIT("\x9f"), \
_PyCompactUnicodeObject_INIT("\xa0"), \
_PyCompactUnicodeObject_INIT("\xa1"), \
_PyCompactUnicodeObject_INIT("\xa2"), \
_PyCompactUnicodeObject_INIT("\xa3"), \
_PyCompactUnicodeObject_INIT("\xa4"), \
_PyCompactUnicodeObject_INIT("\xa5"), \
_PyCompactUnicodeObject_INIT("\xa6"), \
_PyCompactUnicodeObject_INIT("\xa7"), \
_PyCompactUnicodeObject_INIT("\xa8"), \
_PyCompactUnicodeObject_INIT("\xa9"), \
_PyCompactUnicodeObject_INIT("\xaa"), \
_PyCompactUnicodeObject_INIT("\xab"), \
_PyCompactUnicodeObject_INIT("\xac"), \
_PyCompactUnicodeObject_INIT("\xad"), \
_PyCompactUnicodeObject_INIT("\xae"), \
_PyCompactUnicodeObject_INIT("\xaf"), \
_PyCompactUnicodeObject_INIT("\xb0"), \
_PyCompactUnicodeObject_INIT("\xb1"), \
_PyCompactUnicodeObject_INIT("\xb2"), \
_PyCompactUnicodeObject_INIT("\xb3"), \
_PyCompactUnicodeObject_INIT("\xb4"), \
_PyCompactUnicodeObject_INIT("\xb5"), \
_PyCompactUnicodeObject_INIT("\xb6"), \
_PyCompactUnicodeObject_INIT("\xb7"), \
_PyCompactUnicodeObject_INIT("\xb8"), \
_PyCompactUnicodeObject_INIT("\xb9"), \
_PyCompactUnicodeObject_INIT("\xba"), \
_PyCompactUnicodeObject_INIT("\xbb"), \
_PyCompactUnicodeObject_INIT("\xbc"), \
_PyCompactUnicodeObject_INIT("\xbd"), \
_PyCompactUnicodeObject_INIT("\xbe"), \
_PyCompactUnicodeObject_INIT("\xbf"), \
_PyCompactUnicodeObject_INIT("\xc0"), \
_PyCompactUnicodeObject_INIT("\xc1"), \
_PyCompactUnicodeObject_INIT("\xc2"), \
_PyCompactUnicodeObject_INIT("\xc3"), \
_PyCompactUnicodeObject_INIT("\xc4"), \
_PyCompactUnicodeObject_INIT("\xc5"), \
_PyCompactUnicodeObject_INIT("\xc6"), \
_PyCompactUnicodeObject_INIT("\xc7"), \
_PyCompactUnicodeObject_INIT("\xc8"), \
_PyCompactUnicodeObject_INIT("\xc9"), \
_PyCompactUnicodeObject_INIT("\xca"), \
_PyCompactUnicodeObject_INIT("\xcb"), \
_PyCompactUnicodeObject_INIT("\xcc"), \
_PyCompactUnicodeObject_INIT("\xcd"), \
_PyCompactUnicodeObject_INIT("\xce"), \
_PyCompactUnicodeObject_INIT("\xcf"), \
_PyCompactUnicodeObject_INIT("\xd0"), \
_PyCompactUnicodeObject_INIT("\xd1"), \
_PyCompactUnicodeObject_INIT("\xd2"), \
_PyCompactUnicodeObject_INIT("\xd3"), \
_PyCompactUnicodeObject_INIT("\xd4"), \
_PyCompactUnicodeObject_INIT("\xd5"), \
_PyCompactUnicodeObject_INIT("\xd6"), \
_PyCompactUnicodeObject_INIT("\xd7"), \
_PyCompactUnicodeObject_INIT("\xd8"), \
_PyCompactUnicodeObject_INIT("\xd9"), \
_PyCompactUnicodeObject_INIT("\xda"), \
_PyCompactUnicodeObject_INIT("\xdb"), \
_PyCompactUnicodeObject_INIT("\xdc"), \
_PyCompactUnicodeObject_INIT("\xdd"), \
_PyCompactUnicodeObject_INIT("\xde"), \
_PyCompactUnicodeObject_INIT("\xdf"), \
_PyCompactUnicodeObject_INIT("\xe0"), \
_PyCompactUnicodeObject_INIT("\xe1"), \
_PyCompactUnicodeObject_INIT("\xe2"), \
_PyCompactUnicodeObject_INIT("\xe3"), \
_PyCompactUnicodeObject_INIT("\xe4"), \
_PyCompactUnicodeObject_INIT("\xe5"), \
_PyCompactUnicodeObject_INIT("\xe6"), \
_PyCompactUnicodeObject_INIT("\xe7"), \
_PyCompactUnicodeObject_INIT("\xe8"), \
_PyCompactUnicodeObject_INIT("\xe9"), \
_PyCompactUnicodeObject_INIT("\xea"), \
_PyCompactUnicodeObject_INIT("\xeb"), \
_PyCompactUnicodeObject_INIT("\xec"), \
_PyCompactUnicodeObject_INIT("\xed"), \
_PyCompactUnicodeObject_INIT("\xee"), \
_PyCompactUnicodeObject_INIT("\xef"), \
_PyCompactUnicodeObject_INIT("\xf0"), \
_PyCompactUnicodeObject_INIT("\xf1"), \
_PyCompactUnicodeObject_INIT("\xf2"), \
_PyCompactUnicodeObject_INIT("\xf3"), \
_PyCompactUnicodeObject_INIT("\xf4"), \
_PyCompactUnicodeObject_INIT("\xf5"), \
_PyCompactUnicodeObject_INIT("\xf6"), \
_PyCompactUnicodeObject_INIT("\xf7"), \
_PyCompactUnicodeObject_INIT("\xf8"), \
_PyCompactUnicodeObject_INIT("\xf9"), \
_PyCompactUnicodeObject_INIT("\xfa"), \
_PyCompactUnicodeObject_INIT("\xfb"), \
_PyCompactUnicodeObject_INIT("\xfc"), \
_PyCompactUnicodeObject_INIT("\xfd"), \
_PyCompactUnicodeObject_INIT("\xfe"), \
_PyCompactUnicodeObject_INIT("\xff"), \
}, \
}, \
\
.tuple_empty = { \
Expand Down
3 changes: 0 additions & 3 deletions Include/internal/pycore_unicodeobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ struct _Py_unicode_ids {
};

struct _Py_unicode_state {
/* Single character Unicode strings in the Latin-1 range are being
shared as well. */
PyObject *latin1[256];
struct _Py_unicode_fs_codec fs_codec;

// Unicode identifiers (_Py_Identifier): see _PyUnicode_FromId()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Statically allocate and initialize the latin1 characters.
Loading