]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Reuse identifier of PREDICT macros as PREDICT_ID (GH-17155)
authorDenis Chernikov <tchernikoff.denis2013@yandex.ru>
Fri, 21 Feb 2020 09:17:50 +0000 (12:17 +0300)
committerGitHub <noreply@github.com>
Fri, 21 Feb 2020 09:17:50 +0000 (10:17 +0100)
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.

Python/ceval.c

index 426d0bbee8901cab1ff1245a8a898e0edef2c938..3f65820c25da94a201b229f8f4349b3d3750bd40 100644 (file)
@@ -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 */