]> granicus.if.org Git - python/commitdiff
Some (but not all) of the why code bitfield tests ran faster as
authorRaymond Hettinger <python@rcn.com>
Sun, 11 Apr 2004 14:59:33 +0000 (14:59 +0000)
committerRaymond Hettinger <python@rcn.com>
Sun, 11 Apr 2004 14:59:33 +0000 (14:59 +0000)
separate equality tests.  Now, all are set to their best timing.

Python/ceval.c

index 82a95a937df24e39a5d729a92ede5124f6d64690..c103f1433947cf057e32dfed0f1cbe4cc2db139f 100644 (file)
@@ -1650,7 +1650,8 @@ eval_frame(PyFrameObject *f)
                        if (PyInt_Check(v)) {
                                why = (enum why_code) PyInt_AS_LONG(v);
                                assert(why != WHY_YIELD);
-                               if (why & (WHY_RETURN | WHY_CONTINUE))
+                               if (why == WHY_RETURN ||
+                                   why == WHY_CONTINUE)
                                        retval = POP();
                        }
                        else if (PyClass_Check(v) || PyString_Check(v)) {
@@ -2289,7 +2290,7 @@ eval_frame(PyFrameObject *f)
 
                /* Double-check exception status */
 
-               if (why & (WHY_EXCEPTION | WHY_RERAISE)) {
+               if (why == WHY_EXCEPTION || why == WHY_RERAISE) {
                        if (!PyErr_Occurred()) {
                                PyErr_SetString(PyExc_SystemError,
                                        "error return without exception set");
@@ -2411,7 +2412,7 @@ fast_block_end:
 fast_yield:
        if (tstate->use_tracing) {
                if (tstate->c_tracefunc
-                   && (why & (WHY_RETURN | WHY_YIELD))) {
+                   && (why == WHY_RETURN || why == WHY_YIELD)) {
                        if (call_trace(tstate->c_tracefunc,
                                       tstate->c_traceobj, f,
                                       PyTrace_RETURN, retval)) {