[Python-checkins] python/dist/src/Python ceval.c,2.350,2.351
rhettinger@users.sourceforge.net
rhettinger@users.sourceforge.net
Wed, 26 Feb 2003 10:11:56 -0800
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1:/tmp/cvs-serv2864
Modified Files:
ceval.c
Log Message:
Micro-optimizations.
* List/Tuple checkexact is faster for the common case.
* Testing for Py_True and Py_False can be inlined for faster looping.
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.350
retrieving revision 2.351
diff -C2 -d -r2.350 -r2.351
*** ceval.c 19 Feb 2003 15:53:16 -0000 2.350
--- ceval.c 26 Feb 2003 18:11:50 -0000 2.351
***************
*** 1656,1660 ****
case UNPACK_SEQUENCE:
v = POP();
! if (PyTuple_Check(v)) {
if (PyTuple_Size(v) != oparg) {
PyErr_SetString(PyExc_ValueError,
--- 1656,1660 ----
case UNPACK_SEQUENCE:
v = POP();
! if (PyTuple_CheckExact(v)) {
if (PyTuple_Size(v) != oparg) {
PyErr_SetString(PyExc_ValueError,
***************
*** 1670,1674 ****
}
}
! else if (PyList_Check(v)) {
if (PyList_Size(v) != oparg) {
PyErr_SetString(PyExc_ValueError,
--- 1670,1674 ----
}
}
! else if (PyList_CheckExact(v)) {
if (PyList_Size(v) != oparg) {
PyErr_SetString(PyExc_ValueError,
***************
*** 1976,1980 ****
case JUMP_IF_FALSE:
! err = PyObject_IsTrue(TOP());
if (err > 0)
err = 0;
--- 1976,1987 ----
case JUMP_IF_FALSE:
! w = TOP();
! if (w == Py_True)
! continue;
! if (w == Py_False) {
! JUMPBY(oparg);
! continue;
! }
! err = PyObject_IsTrue(w);
if (err > 0)
err = 0;
***************
*** 1986,1990 ****
case JUMP_IF_TRUE:
! err = PyObject_IsTrue(TOP());
if (err > 0) {
err = 0;
--- 1993,2004 ----
case JUMP_IF_TRUE:
! w = TOP();
! if (w == Py_False)
! continue;
! if (w == Py_True) {
! JUMPBY(oparg);
! continue;
! }
! err = PyObject_IsTrue(w);
if (err > 0) {
err = 0;