summaryrefslogtreecommitdiffstats
path: root/Python/specialize.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2024-02-20 20:24:35 (GMT)
committerGitHub <noreply@github.com>2024-02-20 20:24:35 (GMT)
commit142502ea8d26b17732009b6e981e630c342054f7 (patch)
treeec422247c652811eb58ed555bfba2f03f957faac /Python/specialize.c
parent520403ed4cdf4890d63403c9cf01ac63233f5ef4 (diff)
downloadcpython-142502ea8d26b17732009b6e981e630c342054f7.zip
cpython-142502ea8d26b17732009b6e981e630c342054f7.tar.gz
cpython-142502ea8d26b17732009b6e981e630c342054f7.tar.bz2
Tier 2 cleanups and tweaks (#115534)
* Rename `_testinternalcapi.get_{uop,counter}_optimizer` to `new_*_optimizer` * Use `_PyUOpName()` instead of` _PyOpcode_uop_name[]` * Add `target` to executor iterator items -- `list(ex)` now returns `(opcode, oparg, target, operand)` quadruples * Add executor methods `get_opcode()` and `get_oparg()` to get `vmdata.opcode`, `vmdata.oparg` * Define a helper for printing uops, and unify various places where they are printed * Add a hack to summarize_stats.py to fix legacy uop names (e.g. `POP_TOP` -> `_POP_TOP`) * Define helpers in `test_opt.py` for accessing the set or list of opnames of an executor
Diffstat (limited to 'Python/specialize.c')
-rw-r--r--Python/specialize.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/Python/specialize.c b/Python/specialize.c
index 2256d79..871979d 100644
--- a/Python/specialize.c
+++ b/Python/specialize.c
@@ -17,6 +17,7 @@
#include <stdlib.h> // rand()
+extern const char *_PyUOpName(int index);
/* For guidance on adding or extending families of instructions see
* ./adaptive.md
@@ -246,17 +247,12 @@ print_optimization_stats(FILE *out, OptimizationStats *stats)
stats->optimizer_failure_reason_no_memory);
const char* const* names;
- for (int i = 0; i < 512; i++) {
- if (i < 256) {
- names = _PyOpcode_OpName;
- } else {
- names = _PyOpcode_uop_name;
- }
+ for (int i = 0; i <= MAX_UOP_ID; i++) {
if (stats->opcode[i].execution_count) {
- fprintf(out, "uops[%s].execution_count : %" PRIu64 "\n", names[i], stats->opcode[i].execution_count);
+ fprintf(out, "uops[%s].execution_count : %" PRIu64 "\n", _PyUOpName(i), stats->opcode[i].execution_count);
}
if (stats->opcode[i].miss) {
- fprintf(out, "uops[%s].specialization.miss : %" PRIu64 "\n", names[i], stats->opcode[i].miss);
+ fprintf(out, "uops[%s].specialization.miss : %" PRIu64 "\n", _PyUOpName(i), stats->opcode[i].miss);
}
}