From 9dff9f48144cf5d8bc1e6605f258973200c6b8c8 Mon Sep 17 00:00:00 2001 From: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Date: Fri, 8 Jul 2022 23:17:37 +0530 Subject: GH-90699: Intern statically allocated strings (GH-93597) This is similar to how strings are interned for deepfreeze. --- Tools/scripts/generate_global_objects.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'Tools/scripts') diff --git a/Tools/scripts/generate_global_objects.py b/Tools/scripts/generate_global_objects.py index c26491b1d0..27e3530f38 100644 --- a/Tools/scripts/generate_global_objects.py +++ b/Tools/scripts/generate_global_objects.py @@ -284,6 +284,15 @@ def generate_runtime_init(identifiers, strings): printer.write('') with printer.block('.tuple_empty =', ','): printer.write('.ob_base = _PyVarObject_IMMORTAL_INIT(&PyTuple_Type, 0)') + printer.write('') + printer.write("static inline void") + with printer.block("_PyUnicode_InitStaticStrings(void)"): + printer.write(f'PyObject *string;') + for i in sorted(identifiers): + # This use of _Py_ID() is ignored by iter_global_strings() + # since iter_files() ignores .h files. + printer.write(f'string = &_Py_ID({i});') + printer.write(f'PyUnicode_InternInPlace(&string);') printer.write(END) printer.write(after) @@ -314,7 +323,4 @@ def main() -> None: if __name__ == '__main__': - import argparse - parser = argparse.ArgumentParser() - args = parser.parse_args() - main(**vars(args)) + main() -- cgit v1.2.1