Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 19611:8f035800a373 legacy-trunk
Do the int inlining only if the type is really an int, not whenever
PyInt_Check() succeeds. That returns true for subtypes of int, which
may override __add__ or __sub__.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 30 Aug 2001 16:06:23 +0000 |
| parents | 1cece743a708 |
| children | 04218e85b156 |
line wrap: on
line diff
--- a/Python/ceval.c Thu Aug 30 15:54:44 2001 +0000 +++ b/Python/ceval.c Thu Aug 30 16:06:23 2001 +0000 @@ -548,6 +548,9 @@ #define POP() BASIC_POP() #endif +/* Strict int check macros */ +#define ISSTRICTINT(v) ((v)->ob_type == &PyInt_Type) + /* Local variable macros */ #define GETLOCAL(i) (fastlocals[i]) @@ -909,7 +912,7 @@ case BINARY_ADD: w = POP(); v = POP(); - if (PyInt_Check(v) && PyInt_Check(w)) { + if (ISSTRICTINT(v) && ISSTRICTINT(w)) { /* INLINE: int + int */ register long a, b, i; a = PyInt_AS_LONG(v); @@ -932,7 +935,7 @@ case BINARY_SUBTRACT: w = POP(); v = POP(); - if (PyInt_Check(v) && PyInt_Check(w)) { + if (ISSTRICTINT(v) && ISSTRICTINT(w)) { /* INLINE: int - int */ register long a, b, i; a = PyInt_AS_LONG(v); @@ -955,7 +958,7 @@ case BINARY_SUBSCR: w = POP(); v = POP(); - if (v->ob_type == &PyList_Type && PyInt_Check(w)) { + if (v->ob_type == &PyList_Type && ISSTRICTINT(w)) { /* INLINE: list[int] */ long i = PyInt_AsLong(w); if (i < 0) @@ -1092,7 +1095,7 @@ case INPLACE_ADD: w = POP(); v = POP(); - if (PyInt_Check(v) && PyInt_Check(w)) { + if (ISSTRICTINT(v) && ISSTRICTINT(w)) { /* INLINE: int + int */ register long a, b, i; a = PyInt_AS_LONG(v); @@ -1115,7 +1118,7 @@ case INPLACE_SUBTRACT: w = POP(); v = POP(); - if (PyInt_Check(v) && PyInt_Check(w)) { + if (ISSTRICTINT(v) && ISSTRICTINT(w)) { /* INLINE: int - int */ register long a, b, i; a = PyInt_AS_LONG(v); @@ -1718,7 +1721,7 @@ case COMPARE_OP: w = POP(); v = POP(); - if (PyInt_Check(v) && PyInt_Check(w)) { + if (ISSTRICTINT(v) && ISSTRICTINT(w)) { /* INLINE: cmp(int, int) */ register long a, b; register int res;
