[Python-checkins] cpython: Issue #27255: Added more predictions in ceval.c.

serhiy.storchaka python-checkins at python.org
Mon Jun 27 11:59:16 EDT 2016


https://hg.python.org/cpython/rev/f19c2b28710e
changeset: 102210:f19c2b28710e
user: Serhiy Storchaka <storchaka at gmail.com>
date: Mon Jun 27 18:58:57 2016 +0300
summary:
 Issue #27255: Added more predictions in ceval.c.
files:
 Python/ceval.c | 14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/Python/ceval.c b/Python/ceval.c
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1000,8 +1000,7 @@
 /* OpCode prediction macros
 Some opcodes tend to come in pairs thus making it possible to
 predict the second code when the first is run. For example,
- COMPARE_OP is often followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And,
- those opcodes are often followed by a POP_TOP.
+ COMPARE_OP is often followed by POP_JUMP_IF_FALSE or POP_JUMP_IF_TRUE.
 
 Verifying the prediction costs a single high-speed test of a register
 variable against a constant. If the pairing was good, then the
@@ -1379,6 +1378,7 @@
 FAST_DISPATCH();
 }
 
+ PREDICTED(LOAD_CONST);
 TARGET(LOAD_CONST) {
 PyObject *value = GETITEM(consts, oparg);
 Py_INCREF(value);
@@ -2008,6 +2008,7 @@
 }
 
 SET_TOP(awaitable);
+ PREDICT(LOAD_CONST);
 DISPATCH();
 }
 
@@ -2050,9 +2051,11 @@
 Py_DECREF(next_iter);
 
 PUSH(awaitable);
+ PREDICT(LOAD_CONST);
 DISPATCH();
 }
 
+ PREDICTED(GET_AWAITABLE);
 TARGET(GET_AWAITABLE) {
 PyObject *iterable = TOP();
 PyObject *iter = _PyCoro_GetAwaitableIter(iterable);
@@ -2080,6 +2083,7 @@
 goto error;
 }
 
+ PREDICT(LOAD_CONST);
 DISPATCH();
 }
 
@@ -2135,6 +2139,7 @@
 DISPATCH();
 }
 
+ PREDICTED(POP_BLOCK);
 TARGET(POP_BLOCK) {
 PyTryBlock *b = PyFrame_BlockPop(f);
 UNWIND_BLOCK(b);
@@ -3015,6 +3020,7 @@
 if (iter == NULL)
 goto error;
 PREDICT(FOR_ITER);
+ PREDICT(CALL_FUNCTION);
 DISPATCH();
 }
 
@@ -3043,6 +3049,7 @@
 if (iter == NULL)
 goto error;
 }
+ PREDICT(LOAD_CONST);
 DISPATCH();
 }
 
@@ -3068,6 +3075,7 @@
 STACKADJ(-1);
 Py_DECREF(iter);
 JUMPBY(oparg);
+ PREDICT(POP_BLOCK);
 DISPATCH();
 }
 
@@ -3117,6 +3125,7 @@
 if (res == NULL)
 goto error;
 PUSH(res);
+ PREDICT(GET_AWAITABLE);
 DISPATCH();
 }
 
@@ -3265,6 +3274,7 @@
 DISPATCH();
 }
 
+ PREDICTED(CALL_FUNCTION);
 TARGET(CALL_FUNCTION) {
 PyObject **sp, *res;
 PCALL(PCALL_ALL);
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /