From 704863476378832002cc54be025106018c7baea0 Mon Sep 17 00:00:00 2001 From: Dino Viehland Date: Tue, 17 Dec 2024 11:44:08 -0800 Subject: [PATCH] Mark unknown opcodes as deopting to themselves --- Include/internal/pycore_opcode_metadata.h | 42 +++++++++++++++++++ .../opcode_metadata_generator.py | 4 ++ 2 files changed, 46 insertions(+) diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h index 28aa1120414337..0af54bf29e1aaa 100644 --- a/Include/internal/pycore_opcode_metadata.h +++ b/Include/internal/pycore_opcode_metadata.h @@ -2828,6 +2828,48 @@ const uint8_t _PyOpcode_Deopt[256] = { [UNPACK_SEQUENCE_TWO_TUPLE] = UNPACK_SEQUENCE, [WITH_EXCEPT_START] = WITH_EXCEPT_START, [YIELD_VALUE] = YIELD_VALUE, + [116] = 116, + [117] = 117, + [118] = 118, + [119] = 119, + [120] = 120, + [121] = 121, + [122] = 122, + [123] = 123, + [124] = 124, + [125] = 125, + [126] = 126, + [127] = 127, + [128] = 128, + [129] = 129, + [130] = 130, + [131] = 131, + [132] = 132, + [133] = 133, + [134] = 134, + [135] = 135, + [136] = 136, + [137] = 137, + [138] = 138, + [139] = 139, + [140] = 140, + [141] = 141, + [142] = 142, + [143] = 143, + [144] = 144, + [145] = 145, + [146] = 146, + [147] = 147, + [148] = 148, + [228] = 228, + [229] = 229, + [230] = 230, + [231] = 231, + [232] = 232, + [233] = 233, + [234] = 234, + [235] = 235, + [236] = 236, }; #endif // NEED_OPCODE_METADATA diff --git a/Tools/cases_generator/opcode_metadata_generator.py b/Tools/cases_generator/opcode_metadata_generator.py index 1a9849c0cbbb25..4e44499cba5305 100644 --- a/Tools/cases_generator/opcode_metadata_generator.py +++ b/Tools/cases_generator/opcode_metadata_generator.py @@ -250,6 +250,10 @@ def generate_deopt_table(analysis: Analysis, out: CWriter) -> None: deopts.append((inst.name, deopt)) for name, deopt in sorted(deopts): out.emit(f"[{name}] = {deopt},\n") + defined = set(analysis.opmap.values()) + for i in range(256): + if i not in defined: + out.emit(f"[{i}] = {i},\n") out.emit("};\n\n") out.emit("#endif // NEED_OPCODE_METADATA\n\n")