diff options
author | Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> | 2022-03-09 23:02:00 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-09 23:02:00 (GMT) |
commit | 8714b6fa27271035dd6dd3514e283f92d669321d (patch) | |
tree | ab3d0c0a10753d3a28515831a22817a348b53c91 /Tools | |
parent | e801e88744f34508aa338f9f7f3f3baee012f813 (diff) | |
download | cpython-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.py | 13 |
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)') |