From 3cd1a5d3ec487e23e3d976e7dd235329f04cfc73 Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Tue, 14 Jun 2022 11:09:30 +0100 Subject: GH-93516: Store offset of first traceable instruction in code object (GH-93769) --- Tools/scripts/deepfreeze.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Tools/scripts') diff --git a/Tools/scripts/deepfreeze.py b/Tools/scripts/deepfreeze.py index ac2076708a..443fcf2274 100644 --- a/Tools/scripts/deepfreeze.py +++ b/Tools/scripts/deepfreeze.py @@ -20,6 +20,9 @@ from generate_global_objects import get_identifiers_and_strings verbose = False identifiers, strings = get_identifiers_and_strings() +# This must be kept in sync with opcode.py +RESUME = 151 + def isprintable(b: bytes) -> bool: return all(0x20 <= c < 0x7f for c in b) @@ -267,6 +270,10 @@ class Printer: self.write(f".co_qualname = {co_qualname},") self.write(f".co_linetable = {co_linetable},") self.write(f".co_code_adaptive = {co_code_adaptive},") + for i, op in enumerate(code.co_code[::2]): + if op == RESUME: + self.write(f"._co_firsttraceable = {i},") + break name_as_code = f"(PyCodeObject *)&{name}" self.deallocs.append(f"_PyStaticCode_Dealloc({name_as_code});") self.interns.append(f"_PyStaticCode_InternStrings({name_as_code})") -- cgit v1.2.1