Skip to content

Commit 574e0b6

Browse files
static latin1
1 parent 3c4abfa commit 574e0b6

File tree

5 files changed

+304
-54
lines changed

5 files changed

+304
-54
lines changed

Include/internal/pycore_global_strings.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,14 @@ struct _Py_global_strings {
348348
STRUCT_FOR_ID(write)
349349
STRUCT_FOR_ID(zipimporter)
350350
} identifiers;
351+
struct {
352+
PyASCIIObject _ascii;
353+
uint8_t _data[2];
354+
} ascii[128];
355+
struct {
356+
PyCompactUnicodeObject _latin1;
357+
uint8_t _data[2];
358+
} latin1[128];
351359
};
352360
/* End auto-generated code */
353361

Include/internal/pycore_runtime_init.h

Lines changed: 277 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,23 @@ extern "C" {
112112
._ ## NAME = _PyASCIIObject_INIT(LITERAL)
113113
#define INIT_ID(NAME) \
114114
._ ## NAME = _PyASCIIObject_INIT(#NAME)
115-
115+
#define _PyCompactUnicodeObject_INIT(LITERAL) \
116+
{ \
117+
._latin1 = { \
118+
._base = { \
119+
.ob_base = _PyObject_IMMORTAL_INIT(&PyUnicode_Type), \
120+
.length = sizeof(LITERAL) - 1, \
121+
.hash = -1, \
122+
.state = { \
123+
.kind = 1, \
124+
.compact = 1, \
125+
.ascii = 0, \
126+
.ready = 1, \
127+
}, \
128+
}, \
129+
}, \
130+
._data = LITERAL, \
131+
}
116132

117133
/* The following is auto-generated by Tools/scripts/generate_global_objects.py. */
118134
#define _Py_global_objects_INIT { \
@@ -963,6 +979,266 @@ extern "C" {
963979
INIT_ID(write), \
964980
INIT_ID(zipimporter), \
965981
}, \
982+
.ascii = { \
983+
_PyASCIIObject_INIT("\x00"), \
984+
_PyASCIIObject_INIT("\x01"), \
985+
_PyASCIIObject_INIT("\x02"), \
986+
_PyASCIIObject_INIT("\x03"), \
987+
_PyASCIIObject_INIT("\x04"), \
988+
_PyASCIIObject_INIT("\x05"), \
989+
_PyASCIIObject_INIT("\x06"), \
990+
_PyASCIIObject_INIT("\x07"), \
991+
_PyASCIIObject_INIT("\x08"), \
992+
_PyASCIIObject_INIT("\x09"), \
993+
_PyASCIIObject_INIT("\x0a"), \
994+
_PyASCIIObject_INIT("\x0b"), \
995+
_PyASCIIObject_INIT("\x0c"), \
996+
_PyASCIIObject_INIT("\x0d"), \
997+
_PyASCIIObject_INIT("\x0e"), \
998+
_PyASCIIObject_INIT("\x0f"), \
999+
_PyASCIIObject_INIT("\x10"), \
1000+
_PyASCIIObject_INIT("\x11"), \
1001+
_PyASCIIObject_INIT("\x12"), \
1002+
_PyASCIIObject_INIT("\x13"), \
1003+
_PyASCIIObject_INIT("\x14"), \
1004+
_PyASCIIObject_INIT("\x15"), \
1005+
_PyASCIIObject_INIT("\x16"), \
1006+
_PyASCIIObject_INIT("\x17"), \
1007+
_PyASCIIObject_INIT("\x18"), \
1008+
_PyASCIIObject_INIT("\x19"), \
1009+
_PyASCIIObject_INIT("\x1a"), \
1010+
_PyASCIIObject_INIT("\x1b"), \
1011+
_PyASCIIObject_INIT("\x1c"), \
1012+
_PyASCIIObject_INIT("\x1d"), \
1013+
_PyASCIIObject_INIT("\x1e"), \
1014+
_PyASCIIObject_INIT("\x1f"), \
1015+
_PyASCIIObject_INIT("\x20"), \
1016+
_PyASCIIObject_INIT("\x21"), \
1017+
_PyASCIIObject_INIT("\x22"), \
1018+
_PyASCIIObject_INIT("\x23"), \
1019+
_PyASCIIObject_INIT("\x24"), \
1020+
_PyASCIIObject_INIT("\x25"), \
1021+
_PyASCIIObject_INIT("\x26"), \
1022+
_PyASCIIObject_INIT("\x27"), \
1023+
_PyASCIIObject_INIT("\x28"), \
1024+
_PyASCIIObject_INIT("\x29"), \
1025+
_PyASCIIObject_INIT("\x2a"), \
1026+
_PyASCIIObject_INIT("\x2b"), \
1027+
_PyASCIIObject_INIT("\x2c"), \
1028+
_PyASCIIObject_INIT("\x2d"), \
1029+
_PyASCIIObject_INIT("\x2e"), \
1030+
_PyASCIIObject_INIT("\x2f"), \
1031+
_PyASCIIObject_INIT("\x30"), \
1032+
_PyASCIIObject_INIT("\x31"), \
1033+
_PyASCIIObject_INIT("\x32"), \
1034+
_PyASCIIObject_INIT("\x33"), \
1035+
_PyASCIIObject_INIT("\x34"), \
1036+
_PyASCIIObject_INIT("\x35"), \
1037+
_PyASCIIObject_INIT("\x36"), \
1038+
_PyASCIIObject_INIT("\x37"), \
1039+
_PyASCIIObject_INIT("\x38"), \
1040+
_PyASCIIObject_INIT("\x39"), \
1041+
_PyASCIIObject_INIT("\x3a"), \
1042+
_PyASCIIObject_INIT("\x3b"), \
1043+
_PyASCIIObject_INIT("\x3c"), \
1044+
_PyASCIIObject_INIT("\x3d"), \
1045+
_PyASCIIObject_INIT("\x3e"), \
1046+
_PyASCIIObject_INIT("\x3f"), \
1047+
_PyASCIIObject_INIT("\x40"), \
1048+
_PyASCIIObject_INIT("\x41"), \
1049+
_PyASCIIObject_INIT("\x42"), \
1050+
_PyASCIIObject_INIT("\x43"), \
1051+
_PyASCIIObject_INIT("\x44"), \
1052+
_PyASCIIObject_INIT("\x45"), \
1053+
_PyASCIIObject_INIT("\x46"), \
1054+
_PyASCIIObject_INIT("\x47"), \
1055+
_PyASCIIObject_INIT("\x48"), \
1056+
_PyASCIIObject_INIT("\x49"), \
1057+
_PyASCIIObject_INIT("\x4a"), \
1058+
_PyASCIIObject_INIT("\x4b"), \
1059+
_PyASCIIObject_INIT("\x4c"), \
1060+
_PyASCIIObject_INIT("\x4d"), \
1061+
_PyASCIIObject_INIT("\x4e"), \
1062+
_PyASCIIObject_INIT("\x4f"), \
1063+
_PyASCIIObject_INIT("\x50"), \
1064+
_PyASCIIObject_INIT("\x51"), \
1065+
_PyASCIIObject_INIT("\x52"), \
1066+
_PyASCIIObject_INIT("\x53"), \
1067+
_PyASCIIObject_INIT("\x54"), \
1068+
_PyASCIIObject_INIT("\x55"), \
1069+
_PyASCIIObject_INIT("\x56"), \
1070+
_PyASCIIObject_INIT("\x57"), \
1071+
_PyASCIIObject_INIT("\x58"), \
1072+
_PyASCIIObject_INIT("\x59"), \
1073+
_PyASCIIObject_INIT("\x5a"), \
1074+
_PyASCIIObject_INIT("\x5b"), \
1075+
_PyASCIIObject_INIT("\x5c"), \
1076+
_PyASCIIObject_INIT("\x5d"), \
1077+
_PyASCIIObject_INIT("\x5e"), \
1078+
_PyASCIIObject_INIT("\x5f"), \
1079+
_PyASCIIObject_INIT("\x60"), \
1080+
_PyASCIIObject_INIT("\x61"), \
1081+
_PyASCIIObject_INIT("\x62"), \
1082+
_PyASCIIObject_INIT("\x63"), \
1083+
_PyASCIIObject_INIT("\x64"), \
1084+
_PyASCIIObject_INIT("\x65"), \
1085+
_PyASCIIObject_INIT("\x66"), \
1086+
_PyASCIIObject_INIT("\x67"), \
1087+
_PyASCIIObject_INIT("\x68"), \
1088+
_PyASCIIObject_INIT("\x69"), \
1089+
_PyASCIIObject_INIT("\x6a"), \
1090+
_PyASCIIObject_INIT("\x6b"), \
1091+
_PyASCIIObject_INIT("\x6c"), \
1092+
_PyASCIIObject_INIT("\x6d"), \
1093+
_PyASCIIObject_INIT("\x6e"), \
1094+
_PyASCIIObject_INIT("\x6f"), \
1095+
_PyASCIIObject_INIT("\x70"), \
1096+
_PyASCIIObject_INIT("\x71"), \
1097+
_PyASCIIObject_INIT("\x72"), \
1098+
_PyASCIIObject_INIT("\x73"), \
1099+
_PyASCIIObject_INIT("\x74"), \
1100+
_PyASCIIObject_INIT("\x75"), \
1101+
_PyASCIIObject_INIT("\x76"), \
1102+
_PyASCIIObject_INIT("\x77"), \
1103+
_PyASCIIObject_INIT("\x78"), \
1104+
_PyASCIIObject_INIT("\x79"), \
1105+
_PyASCIIObject_INIT("\x7a"), \
1106+
_PyASCIIObject_INIT("\x7b"), \
1107+
_PyASCIIObject_INIT("\x7c"), \
1108+
_PyASCIIObject_INIT("\x7d"), \
1109+
_PyASCIIObject_INIT("\x7e"), \
1110+
_PyASCIIObject_INIT("\x7f"), \
1111+
}, \
1112+
.latin1 = { \
1113+
_PyCompactUnicodeObject_INIT("\x80"), \
1114+
_PyCompactUnicodeObject_INIT("\x81"), \
1115+
_PyCompactUnicodeObject_INIT("\x82"), \
1116+
_PyCompactUnicodeObject_INIT("\x83"), \
1117+
_PyCompactUnicodeObject_INIT("\x84"), \
1118+
_PyCompactUnicodeObject_INIT("\x85"), \
1119+
_PyCompactUnicodeObject_INIT("\x86"), \
1120+
_PyCompactUnicodeObject_INIT("\x87"), \
1121+
_PyCompactUnicodeObject_INIT("\x88"), \
1122+
_PyCompactUnicodeObject_INIT("\x89"), \
1123+
_PyCompactUnicodeObject_INIT("\x8a"), \
1124+
_PyCompactUnicodeObject_INIT("\x8b"), \
1125+
_PyCompactUnicodeObject_INIT("\x8c"), \
1126+
_PyCompactUnicodeObject_INIT("\x8d"), \
1127+
_PyCompactUnicodeObject_INIT("\x8e"), \
1128+
_PyCompactUnicodeObject_INIT("\x8f"), \
1129+
_PyCompactUnicodeObject_INIT("\x90"), \
1130+
_PyCompactUnicodeObject_INIT("\x91"), \
1131+
_PyCompactUnicodeObject_INIT("\x92"), \
1132+
_PyCompactUnicodeObject_INIT("\x93"), \
1133+
_PyCompactUnicodeObject_INIT("\x94"), \
1134+
_PyCompactUnicodeObject_INIT("\x95"), \
1135+
_PyCompactUnicodeObject_INIT("\x96"), \
1136+
_PyCompactUnicodeObject_INIT("\x97"), \
1137+
_PyCompactUnicodeObject_INIT("\x98"), \
1138+
_PyCompactUnicodeObject_INIT("\x99"), \
1139+
_PyCompactUnicodeObject_INIT("\x9a"), \
1140+
_PyCompactUnicodeObject_INIT("\x9b"), \
1141+
_PyCompactUnicodeObject_INIT("\x9c"), \
1142+
_PyCompactUnicodeObject_INIT("\x9d"), \
1143+
_PyCompactUnicodeObject_INIT("\x9e"), \
1144+
_PyCompactUnicodeObject_INIT("\x9f"), \
1145+
_PyCompactUnicodeObject_INIT("\xa0"), \
1146+
_PyCompactUnicodeObject_INIT("\xa1"), \
1147+
_PyCompactUnicodeObject_INIT("\xa2"), \
1148+
_PyCompactUnicodeObject_INIT("\xa3"), \
1149+
_PyCompactUnicodeObject_INIT("\xa4"), \
1150+
_PyCompactUnicodeObject_INIT("\xa5"), \
1151+
_PyCompactUnicodeObject_INIT("\xa6"), \
1152+
_PyCompactUnicodeObject_INIT("\xa7"), \
1153+
_PyCompactUnicodeObject_INIT("\xa8"), \
1154+
_PyCompactUnicodeObject_INIT("\xa9"), \
1155+
_PyCompactUnicodeObject_INIT("\xaa"), \
1156+
_PyCompactUnicodeObject_INIT("\xab"), \
1157+
_PyCompactUnicodeObject_INIT("\xac"), \
1158+
_PyCompactUnicodeObject_INIT("\xad"), \
1159+
_PyCompactUnicodeObject_INIT("\xae"), \
1160+
_PyCompactUnicodeObject_INIT("\xaf"), \
1161+
_PyCompactUnicodeObject_INIT("\xb0"), \
1162+
_PyCompactUnicodeObject_INIT("\xb1"), \
1163+
_PyCompactUnicodeObject_INIT("\xb2"), \
1164+
_PyCompactUnicodeObject_INIT("\xb3"), \
1165+
_PyCompactUnicodeObject_INIT("\xb4"), \
1166+
_PyCompactUnicodeObject_INIT("\xb5"), \
1167+
_PyCompactUnicodeObject_INIT("\xb6"), \
1168+
_PyCompactUnicodeObject_INIT("\xb7"), \
1169+
_PyCompactUnicodeObject_INIT("\xb8"), \
1170+
_PyCompactUnicodeObject_INIT("\xb9"), \
1171+
_PyCompactUnicodeObject_INIT("\xba"), \
1172+
_PyCompactUnicodeObject_INIT("\xbb"), \
1173+
_PyCompactUnicodeObject_INIT("\xbc"), \
1174+
_PyCompactUnicodeObject_INIT("\xbd"), \
1175+
_PyCompactUnicodeObject_INIT("\xbe"), \
1176+
_PyCompactUnicodeObject_INIT("\xbf"), \
1177+
_PyCompactUnicodeObject_INIT("\xc0"), \
1178+
_PyCompactUnicodeObject_INIT("\xc1"), \
1179+
_PyCompactUnicodeObject_INIT("\xc2"), \
1180+
_PyCompactUnicodeObject_INIT("\xc3"), \
1181+
_PyCompactUnicodeObject_INIT("\xc4"), \
1182+
_PyCompactUnicodeObject_INIT("\xc5"), \
1183+
_PyCompactUnicodeObject_INIT("\xc6"), \
1184+
_PyCompactUnicodeObject_INIT("\xc7"), \
1185+
_PyCompactUnicodeObject_INIT("\xc8"), \
1186+
_PyCompactUnicodeObject_INIT("\xc9"), \
1187+
_PyCompactUnicodeObject_INIT("\xca"), \
1188+
_PyCompactUnicodeObject_INIT("\xcb"), \
1189+
_PyCompactUnicodeObject_INIT("\xcc"), \
1190+
_PyCompactUnicodeObject_INIT("\xcd"), \
1191+
_PyCompactUnicodeObject_INIT("\xce"), \
1192+
_PyCompactUnicodeObject_INIT("\xcf"), \
1193+
_PyCompactUnicodeObject_INIT("\xd0"), \
1194+
_PyCompactUnicodeObject_INIT("\xd1"), \
1195+
_PyCompactUnicodeObject_INIT("\xd2"), \
1196+
_PyCompactUnicodeObject_INIT("\xd3"), \
1197+
_PyCompactUnicodeObject_INIT("\xd4"), \
1198+
_PyCompactUnicodeObject_INIT("\xd5"), \
1199+
_PyCompactUnicodeObject_INIT("\xd6"), \
1200+
_PyCompactUnicodeObject_INIT("\xd7"), \
1201+
_PyCompactUnicodeObject_INIT("\xd8"), \
1202+
_PyCompactUnicodeObject_INIT("\xd9"), \
1203+
_PyCompactUnicodeObject_INIT("\xda"), \
1204+
_PyCompactUnicodeObject_INIT("\xdb"), \
1205+
_PyCompactUnicodeObject_INIT("\xdc"), \
1206+
_PyCompactUnicodeObject_INIT("\xdd"), \
1207+
_PyCompactUnicodeObject_INIT("\xde"), \
1208+
_PyCompactUnicodeObject_INIT("\xdf"), \
1209+
_PyCompactUnicodeObject_INIT("\xe0"), \
1210+
_PyCompactUnicodeObject_INIT("\xe1"), \
1211+
_PyCompactUnicodeObject_INIT("\xe2"), \
1212+
_PyCompactUnicodeObject_INIT("\xe3"), \
1213+
_PyCompactUnicodeObject_INIT("\xe4"), \
1214+
_PyCompactUnicodeObject_INIT("\xe5"), \
1215+
_PyCompactUnicodeObject_INIT("\xe6"), \
1216+
_PyCompactUnicodeObject_INIT("\xe7"), \
1217+
_PyCompactUnicodeObject_INIT("\xe8"), \
1218+
_PyCompactUnicodeObject_INIT("\xe9"), \
1219+
_PyCompactUnicodeObject_INIT("\xea"), \
1220+
_PyCompactUnicodeObject_INIT("\xeb"), \
1221+
_PyCompactUnicodeObject_INIT("\xec"), \
1222+
_PyCompactUnicodeObject_INIT("\xed"), \
1223+
_PyCompactUnicodeObject_INIT("\xee"), \
1224+
_PyCompactUnicodeObject_INIT("\xef"), \
1225+
_PyCompactUnicodeObject_INIT("\xf0"), \
1226+
_PyCompactUnicodeObject_INIT("\xf1"), \
1227+
_PyCompactUnicodeObject_INIT("\xf2"), \
1228+
_PyCompactUnicodeObject_INIT("\xf3"), \
1229+
_PyCompactUnicodeObject_INIT("\xf4"), \
1230+
_PyCompactUnicodeObject_INIT("\xf5"), \
1231+
_PyCompactUnicodeObject_INIT("\xf6"), \
1232+
_PyCompactUnicodeObject_INIT("\xf7"), \
1233+
_PyCompactUnicodeObject_INIT("\xf8"), \
1234+
_PyCompactUnicodeObject_INIT("\xf9"), \
1235+
_PyCompactUnicodeObject_INIT("\xfa"), \
1236+
_PyCompactUnicodeObject_INIT("\xfb"), \
1237+
_PyCompactUnicodeObject_INIT("\xfc"), \
1238+
_PyCompactUnicodeObject_INIT("\xfd"), \
1239+
_PyCompactUnicodeObject_INIT("\xfe"), \
1240+
_PyCompactUnicodeObject_INIT("\xff"), \
1241+
}, \
9661242
}, \
9671243
\
9681244
.tuple_empty = { \

Include/internal/pycore_unicodeobject.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ struct _Py_unicode_ids {
4444
};
4545

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

5249
// Unicode identifiers (_Py_Identifier): see _PyUnicode_FromId()

0 commit comments

Comments
 (0)