[Python-checkins] Reuse identifier of PREDICT macros as PREDICT_ID (GH-17155)

Denis Chernikov webhook-mailer at python.org
Fri Feb 21 04:18:03 EST 2020


https://github.com/python/cpython/commit/baf29b221682be0f4fde53a05ea3f57c3c79f431
commit: baf29b221682be0f4fde53a05ea3f57c3c79f431
branch: master
author: Denis Chernikov <tchernikoff.denis2013 at yandex.ru>
committer: GitHub <noreply at 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 */



More information about the Python-checkins mailing list