summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorKumar Aditya <59607654+kumaraditya303@users.noreply.github.com>2022-03-09 23:02:00 (GMT)
committerGitHub <noreply@github.com>2022-03-09 23:02:00 (GMT)
commit8714b6fa27271035dd6dd3514e283f92d669321d (patch)
treeab3d0c0a10753d3a28515831a22817a348b53c91 /Tools
parente801e88744f34508aa338f9f7f3f3baee012f813 (diff)
downloadcpython-8714b6fa27271035dd6dd3514e283f92d669321d.zip
cpython-8714b6fa27271035dd6dd3514e283f92d669321d.tar.gz
cpython-8714b6fa27271035dd6dd3514e283f92d669321d.tar.bz2
bpo-46881: Statically allocate and initialize the latin1 characters. (GH-31616)
Diffstat (limited to 'Tools')
-rw-r--r--Tools/scripts/generate_global_objects.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Tools/scripts/generate_global_objects.py b/Tools/scripts/generate_global_objects.py
index 867358c..17ddb8b 100644
--- a/Tools/scripts/generate_global_objects.py
+++ b/Tools/scripts/generate_global_objects.py
@@ -196,6 +196,13 @@ def generate_global_strings(identifiers, strings):
for name in sorted(identifiers):
assert name.isidentifier(), name
printer.write(f'STRUCT_FOR_ID({name})')
+ with printer.block('struct', ' ascii[128];'):
+ printer.write("PyASCIIObject _ascii;")
+ printer.write("uint8_t _data[2];")
+ with printer.block('struct', ' latin1[128];'):
+ printer.write("PyCompactUnicodeObject _latin1;")
+ printer.write("uint8_t _data[2];")
+
printer.write(END)
printer.write(after)
@@ -252,6 +259,12 @@ def generate_runtime_init(identifiers, strings):
for name in sorted(identifiers):
assert name.isidentifier(), name
printer.write(f'INIT_ID({name}),')
+ with printer.block('.ascii =', ','):
+ for i in range(128):
+ printer.write(f'_PyASCIIObject_INIT("\\x{i:02x}"),')
+ with printer.block('.latin1 =', ','):
+ for i in range(128, 256):
+ printer.write(f'_PyUnicode_LATIN1_INIT("\\x{i:02x}"),')
printer.write('')
with printer.block('.tuple_empty =', ','):
printer.write('.ob_base = _PyVarObject_IMMORTAL_INIT(&PyTuple_Type, 0)')