diff options
author | Guido van Rossum <guido@python.org> | 2023-11-17 22:25:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-17 22:25:57 (GMT) |
commit | 7405745817d19e13585dd4f0f9b8338ba5b32418 (patch) | |
tree | 6cf36de2e68fafd3abfebaca35f454609bb5dd77 /Python/optimizer.c | |
parent | be0bd54c6b3b2382d03f2073070353c8b946902b (diff) | |
download | cpython-7405745817d19e13585dd4f0f9b8338ba5b32418.zip cpython-7405745817d19e13585dd4f0f9b8338ba5b32418.tar.gz cpython-7405745817d19e13585dd4f0f9b8338ba5b32418.tar.bz2 |
Various small improvements to uop debug output (#112218)
- Show uop name in Error/DEOPT messages
- Add target to some messages
- Expose uop_name() as _PyUopName()
Diffstat (limited to 'Python/optimizer.c')
-rw-r--r-- | Python/optimizer.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/Python/optimizer.c b/Python/optimizer.c index 5d1ef8a..64a15e0 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -324,8 +324,8 @@ uop_dealloc(_PyUOpExecutorObject *self) { PyObject_Free(self); } -static const char * -uop_name(int index) +const char * +_PyUopName(int index) { if (index <= MAX_REAL_OPCODE) { return _PyOpcode_OpName[index]; @@ -347,7 +347,7 @@ uop_item(_PyUOpExecutorObject *self, Py_ssize_t index) PyErr_SetNone(PyExc_IndexError); return NULL; } - const char *name = uop_name(self->trace[index].opcode); + const char *name = _PyUopName(self->trace[index].opcode); if (name == NULL) { name = "<nil>"; } @@ -451,7 +451,7 @@ translate_bytecode_to_trace( #define ADD_TO_TRACE(OPCODE, OPARG, OPERAND, TARGET) \ DPRINTF(2, \ " ADD_TO_TRACE(%s, %d, %" PRIu64 ")\n", \ - uop_name(OPCODE), \ + _PyUopName(OPCODE), \ (OPARG), \ (uint64_t)(OPERAND)); \ assert(trace_length < max_length); \ @@ -477,7 +477,7 @@ translate_bytecode_to_trace( reserved = (n); // Keep ADD_TO_TRACE honest // Reserve space for main+stub uops, plus 3 for _SET_IP, _CHECK_VALIDITY and _EXIT_TRACE -#define RESERVE(main, stub) RESERVE_RAW((main) + (stub) + 3, uop_name(opcode)) +#define RESERVE(main, stub) RESERVE_RAW((main) + (stub) + 3, _PyUopName(opcode)) // Trace stack operations (used by _PUSH_FRAME, _POP_FRAME) #define TRACE_STACK_PUSH() \ @@ -549,8 +549,8 @@ top: // Jump here after _PUSH_FRAME or likely branches uint32_t uopcode = BRANCH_TO_GUARD[opcode - POP_JUMP_IF_FALSE][jump_likely]; _Py_CODEUNIT *next_instr = instr + 1 + _PyOpcode_Caches[_PyOpcode_Deopt[opcode]]; DPRINTF(4, "%s(%d): counter=%x, bitcount=%d, likely=%d, uopcode=%s\n", - uop_name(opcode), oparg, - counter, bitcount, jump_likely, uop_name(uopcode)); + _PyUopName(opcode), oparg, + counter, bitcount, jump_likely, _PyUopName(uopcode)); ADD_TO_TRACE(uopcode, max_length, 0, target); if (jump_likely) { _Py_CODEUNIT *target_instr = next_instr + oparg; @@ -710,7 +710,7 @@ top: // Jump here after _PUSH_FRAME or likely branches } break; } - DPRINTF(2, "Unsupported opcode %s\n", uop_name(opcode)); + DPRINTF(2, "Unsupported opcode %s\n", _PyUopName(opcode)); OPT_UNSUPPORTED_OPCODE(opcode); goto done; // Break out of loop } // End default @@ -844,7 +844,7 @@ make_executor_from_uops(_PyUOpInstruction *buffer, _PyBloomFilter *dependencies) for (int i = 0; i < length; i++) { printf("%4d %s(%d, %d, %" PRIu64 ")\n", i, - uop_name(executor->trace[i].opcode), + _PyUopName(executor->trace[i].opcode), executor->trace[i].oparg, executor->trace[i].target, executor->trace[i].operand); |