Reuse identifier of PREDICT macros as PREDICT_ID (GH-17155)
https://github.com/python/cpython/commit/baf29b221682be0f4fde53a05ea3f57c3c7... commit: baf29b221682be0f4fde53a05ea3f57c3c79f431 branch: master author: Denis Chernikov <tchernikoff.denis2013@yandex.ru> committer: GitHub <noreply@github.com> date: 2020-02-21T10:17:50+01:00 summary: Reuse identifier of PREDICT macros as PREDICT_ID (GH-17155) In function `_PyEval_EvalFrameDefault`, macros PREDICT and PREDICTED use the same identifier creation scheme, which may be shared between them, reducing code repetition, and do ensure that the same identifier is generated. files: M Python/ceval.c diff --git a/Python/ceval.c b/Python/ceval.c index 426d0bbee8901..3f65820c25da9 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -921,21 +921,23 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag) */ +#define PREDICT_ID(op) PRED_##op + #if defined(DYNAMIC_EXECUTION_PROFILE) || USE_COMPUTED_GOTOS -#define PREDICT(op) if (0) goto PRED_##op +#define PREDICT(op) if (0) goto PREDICT_ID(op) #else #define PREDICT(op) \ - do{ \ + do { \ _Py_CODEUNIT word = *next_instr; \ opcode = _Py_OPCODE(word); \ - if (opcode == op){ \ + if (opcode == op) { \ oparg = _Py_OPARG(word); \ next_instr++; \ - goto PRED_##op; \ + goto PREDICT_ID(op); \ } \ } while(0) #endif -#define PREDICTED(op) PRED_##op: +#define PREDICTED(op) PREDICT_ID(op): /* Stack manipulation macros */
participants (1)
-
Denis Chernikov