diff options
author | Guido van Rossum <guido@python.org> | 2024-02-20 20:24:35 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-20 20:24:35 (GMT) |
commit | 142502ea8d26b17732009b6e981e630c342054f7 (patch) | |
tree | ec422247c652811eb58ed555bfba2f03f957faac /Python/specialize.c | |
parent | 520403ed4cdf4890d63403c9cf01ac63233f5ef4 (diff) | |
download | cpython-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.c | 12 |
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); } } |