From 4558af5a8f8e56a9b0dc11f6e834c47e0fd05f9e Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Mon, 28 Feb 2022 12:56:29 +0000 Subject: bpo-46841: Move the cache for `LOAD_GLOBAL` inline. (GH-31575) --- Tools/scripts/generate_opcode_h.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'Tools/scripts/generate_opcode_h.py') diff --git a/Tools/scripts/generate_opcode_h.py b/Tools/scripts/generate_opcode_h.py index 1f21347935d..75a9c3f3bfa 100644 --- a/Tools/scripts/generate_opcode_h.py +++ b/Tools/scripts/generate_opcode_h.py @@ -36,7 +36,7 @@ def write_int_array_from_ops(name, ops, out): bits = 0 for op in ops: bits |= 1<>= 32 @@ -75,9 +75,16 @@ def main(opcode_py, outfile='Include/opcode.h'): fobj.write(DEFINE.format(name, next_op)) used[next_op] = True fobj.write(DEFINE.format('DO_TRACING', 255)) - fobj.write("#ifdef NEED_OPCODE_JUMP_TABLES\n") + fobj.write("\nextern const uint8_t _PyOpcode_InlineCacheEntries[256];\n") + fobj.write("\n#ifdef NEED_OPCODE_TABLES\n") write_int_array_from_ops("_PyOpcode_RelativeJump", opcode['hasjrel'], fobj) write_int_array_from_ops("_PyOpcode_Jump", opcode['hasjrel'] + opcode['hasjabs'], fobj) + + fobj.write("\nconst uint8_t _PyOpcode_InlineCacheEntries[256] = {\n") + for i, entries in enumerate(opcode["_inline_cache_entries"]): + if entries: + fobj.write(f" [{opname[i]}] = {entries},\n") + fobj.write("};\n") fobj.write("#endif /* OPCODE_TABLES */\n") fobj.write("\n") @@ -90,12 +97,6 @@ def main(opcode_py, outfile='Include/opcode.h'): for i, (op, _) in enumerate(opcode["_nb_ops"]): fobj.write(DEFINE.format(op, i)) - fobj.write("\nstatic const uint8_t _PyOpcode_InlineCacheEntries[256] = {\n") - for i, entries in enumerate(opcode["_inline_cache_entries"]): - if entries: - fobj.write(f" [{opname[i]}] = {entries},\n") - fobj.write("};\n") - fobj.write(footer) -- cgit v1.2.3