mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
[3.14] gh-128045: Mark unknown opcodes as deopting to themselves (GH-128044) (#134228)
* gh-128045: Mark unknown opcodes as deopting to themselves (GH-128044)
This commit is contained in:
parent
7d995ea9fd
commit
c869898f39
2 changed files with 36 additions and 0 deletions
29
Include/internal/pycore_opcode_metadata.h
generated
29
Include/internal/pycore_opcode_metadata.h
generated
|
@ -1787,6 +1787,35 @@ const uint8_t _PyOpcode_Caches[256] = {
|
|||
extern const uint8_t _PyOpcode_Deopt[256];
|
||||
#ifdef NEED_OPCODE_METADATA
|
||||
const uint8_t _PyOpcode_Deopt[256] = {
|
||||
[121] = 121,
|
||||
[122] = 122,
|
||||
[123] = 123,
|
||||
[124] = 124,
|
||||
[125] = 125,
|
||||
[126] = 126,
|
||||
[127] = 127,
|
||||
[212] = 212,
|
||||
[213] = 213,
|
||||
[214] = 214,
|
||||
[215] = 215,
|
||||
[216] = 216,
|
||||
[217] = 217,
|
||||
[218] = 218,
|
||||
[219] = 219,
|
||||
[220] = 220,
|
||||
[221] = 221,
|
||||
[222] = 222,
|
||||
[223] = 223,
|
||||
[224] = 224,
|
||||
[225] = 225,
|
||||
[226] = 226,
|
||||
[227] = 227,
|
||||
[228] = 228,
|
||||
[229] = 229,
|
||||
[230] = 230,
|
||||
[231] = 231,
|
||||
[232] = 232,
|
||||
[233] = 233,
|
||||
[BINARY_OP] = BINARY_OP,
|
||||
[BINARY_OP_ADD_FLOAT] = BINARY_OP,
|
||||
[BINARY_OP_ADD_INT] = BINARY_OP,
|
||||
|
|
|
@ -157,6 +157,13 @@ def generate_deopt_table(analysis: Analysis, out: CWriter) -> None:
|
|||
if inst.family is not None:
|
||||
deopt = inst.family.name
|
||||
deopts.append((inst.name, deopt))
|
||||
defined = set(analysis.opmap.values())
|
||||
for i in range(256):
|
||||
if i not in defined:
|
||||
deopts.append((f'{i}', f'{i}'))
|
||||
|
||||
assert len(deopts) == 256
|
||||
assert len(set(x[0] for x in deopts)) == 256
|
||||
for name, deopt in sorted(deopts):
|
||||
out.emit(f"[{name}] = {deopt},\n")
|
||||
out.emit("};\n\n")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue