diff options
author | Brandt Bucher <brandtbucher@microsoft.com> | 2023-06-29 13:49:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-29 13:49:54 -0700 |
commit | 7b2d94d87513967b357c658c6e7e1b8c8d02487d (patch) | |
tree | bdd79e2c20b235f3d4c1272c8c8e2f1880bfb129 /Python/executor_cases.c.h | |
parent | 6e9f83d9aee34192de5d0ef7285be23514911ccd (diff) | |
download | cpython-7b2d94d87513967b357c658c6e7e1b8c8d02487d.tar.gz cpython-7b2d94d87513967b357c658c6e7e1b8c8d02487d.zip |
GH-106008: Make implicit boolean conversions explicit (GH-106003)
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r-- | Python/executor_cases.c.h | 572 |
1 files changed, 331 insertions, 241 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index a64de0c958c..ea932232d75 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -99,18 +99,105 @@ PyObject *value = stack_pointer[-1]; PyObject *res; #line 282 "Python/bytecodes.c" - int err = PyObject_IsTrue(value); - #line 104 "Python/executor_cases.c.h" - Py_DECREF(value); - #line 284 "Python/bytecodes.c" - if (err < 0) goto pop_1_error; - if (err == 0) { - res = Py_True; + assert(PyBool_Check(value)); + res = Py_IsFalse(value) ? Py_True : Py_False; + #line 105 "Python/executor_cases.c.h" + stack_pointer[-1] = res; + break; + } + + case TO_BOOL_BOOL: { + PyObject *value = stack_pointer[-1]; + #line 314 "Python/bytecodes.c" + DEOPT_IF(!PyBool_Check(value), TO_BOOL); + STAT_INC(TO_BOOL, hit); + #line 115 "Python/executor_cases.c.h" + break; + } + + case TO_BOOL_INT: { + PyObject *value = stack_pointer[-1]; + PyObject *res; + #line 319 "Python/bytecodes.c" + DEOPT_IF(!PyLong_CheckExact(value), TO_BOOL); + STAT_INC(TO_BOOL, hit); + if (_PyLong_IsZero((PyLongObject *)value)) { + assert(_Py_IsImmortal(value)); + res = Py_False; } else { + #line 130 "Python/executor_cases.c.h" + Py_DECREF(value); + #line 327 "Python/bytecodes.c" + res = Py_True; + } + #line 135 "Python/executor_cases.c.h" + stack_pointer[-1] = res; + break; + } + + case TO_BOOL_LIST: { + PyObject *value = stack_pointer[-1]; + PyObject *res; + #line 332 "Python/bytecodes.c" + DEOPT_IF(!PyList_CheckExact(value), TO_BOOL); + STAT_INC(TO_BOOL, hit); + res = Py_SIZE(value) ? Py_True : Py_False; + #line 147 "Python/executor_cases.c.h" + Py_DECREF(value); + stack_pointer[-1] = res; + break; + } + + case TO_BOOL_NONE: { + PyObject *value = stack_pointer[-1]; + PyObject *res; + #line 339 "Python/bytecodes.c" + // This one is a bit weird, because we expect *some* failures: + DEOPT_IF(!Py_IsNone(value), TO_BOOL); + STAT_INC(TO_BOOL, hit); + res = Py_False; + #line 161 "Python/executor_cases.c.h" + stack_pointer[-1] = res; + break; + } + + case TO_BOOL_STR: { + PyObject *value = stack_pointer[-1]; + PyObject *res; + #line 346 "Python/bytecodes.c" + DEOPT_IF(!PyUnicode_CheckExact(value), TO_BOOL); + STAT_INC(TO_BOOL, hit); + if (value == &_Py_STR(empty)) { + assert(_Py_IsImmortal(value)); res = Py_False; } - #line 114 "Python/executor_cases.c.h" + else { + assert(Py_SIZE(value)); + #line 178 "Python/executor_cases.c.h" + Py_DECREF(value); + #line 355 "Python/bytecodes.c" + res = Py_True; + } + #line 183 "Python/executor_cases.c.h" + stack_pointer[-1] = res; + break; + } + + case TO_BOOL_ALWAYS_TRUE: { + PyObject *value = stack_pointer[-1]; + PyObject *res; + uint32_t version = operand; + #line 360 "Python/bytecodes.c" + // This one is a bit weird, because we expect *some* failures: + assert(version); + DEOPT_IF(Py_TYPE(value)->tp_version_tag != version, TO_BOOL); + STAT_INC(TO_BOOL, hit); + #line 197 "Python/executor_cases.c.h" + Py_DECREF(value); + #line 365 "Python/bytecodes.c" + res = Py_True; + #line 201 "Python/executor_cases.c.h" stack_pointer[-1] = res; break; } @@ -118,13 +205,13 @@ case UNARY_INVERT: { PyObject *value = stack_pointer[-1]; PyObject *res; - #line 294 "Python/bytecodes.c" + #line 369 "Python/bytecodes.c" res = PyNumber_Invert(value); - #line 124 "Python/executor_cases.c.h" + #line 211 "Python/executor_cases.c.h" Py_DECREF(value); - #line 296 "Python/bytecodes.c" + #line 371 "Python/bytecodes.c" if (res == NULL) goto pop_1_error; - #line 128 "Python/executor_cases.c.h" + #line 215 "Python/executor_cases.c.h" stack_pointer[-1] = res; break; } @@ -132,10 +219,10 @@ case _GUARD_BOTH_INT: { PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; - #line 312 "Python/bytecodes.c" + #line 387 "Python/bytecodes.c" DEOPT_IF(!PyLong_CheckExact(left), BINARY_OP); DEOPT_IF(!PyLong_CheckExact(right), BINARY_OP); - #line 139 "Python/executor_cases.c.h" + #line 226 "Python/executor_cases.c.h" break; } @@ -143,13 +230,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 317 "Python/bytecodes.c" + #line 392 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); res = _PyLong_Multiply((PyLongObject *)left, (PyLongObject *)right); _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free); _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free); if (res == NULL) goto pop_2_error; - #line 153 "Python/executor_cases.c.h" + #line 240 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -159,13 +246,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 325 "Python/bytecodes.c" + #line 400 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); res = _PyLong_Add((PyLongObject *)left, (PyLongObject *)right); _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free); _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free); if (res == NULL) goto pop_2_error; - #line 169 "Python/executor_cases.c.h" + #line 256 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -175,13 +262,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 333 "Python/bytecodes.c" + #line 408 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); res = _PyLong_Subtract((PyLongObject *)left, (PyLongObject *)right); _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free); _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free); if (res == NULL) goto pop_2_error; - #line 185 "Python/executor_cases.c.h" + #line 272 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -190,10 +277,10 @@ case _GUARD_BOTH_FLOAT: { PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; - #line 348 "Python/bytecodes.c" + #line 423 "Python/bytecodes.c" DEOPT_IF(!PyFloat_CheckExact(left), BINARY_OP); DEOPT_IF(!PyFloat_CheckExact(right), BINARY_OP); - #line 197 "Python/executor_cases.c.h" + #line 284 "Python/executor_cases.c.h" break; } @@ -201,13 +288,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 353 "Python/bytecodes.c" + #line 428 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); double dres = ((PyFloatObject *)left)->ob_fval * ((PyFloatObject *)right)->ob_fval; DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dres, res); - #line 211 "Python/executor_cases.c.h" + #line 298 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -217,13 +304,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 361 "Python/bytecodes.c" + #line 436 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); double dres = ((PyFloatObject *)left)->ob_fval + ((PyFloatObject *)right)->ob_fval; DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dres, res); - #line 227 "Python/executor_cases.c.h" + #line 314 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -233,13 +320,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 369 "Python/bytecodes.c" + #line 444 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); double dres = ((PyFloatObject *)left)->ob_fval - ((PyFloatObject *)right)->ob_fval; DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dres, res); - #line 243 "Python/executor_cases.c.h" + #line 330 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -248,10 +335,10 @@ case _GUARD_BOTH_UNICODE: { PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; - #line 384 "Python/bytecodes.c" + #line 459 "Python/bytecodes.c" DEOPT_IF(!PyUnicode_CheckExact(left), BINARY_OP); DEOPT_IF(!PyUnicode_CheckExact(right), BINARY_OP); - #line 255 "Python/executor_cases.c.h" + #line 342 "Python/executor_cases.c.h" break; } @@ -259,13 +346,13 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 389 "Python/bytecodes.c" + #line 464 "Python/bytecodes.c" STAT_INC(BINARY_OP, hit); res = PyUnicode_Concat(left, right); _Py_DECREF_SPECIALIZED(left, _PyUnicode_ExactDealloc); _Py_DECREF_SPECIALIZED(right, _PyUnicode_ExactDealloc); if (res == NULL) goto pop_2_error; - #line 269 "Python/executor_cases.c.h" + #line 356 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -276,7 +363,7 @@ PyObject *start = stack_pointer[-2]; PyObject *container = stack_pointer[-3]; PyObject *res; - #line 459 "Python/bytecodes.c" + #line 534 "Python/bytecodes.c" PyObject *slice = _PyBuildSlice_ConsumeRefs(start, stop); // Can't use ERROR_IF() here, because we haven't // DECREF'ed container yet, and we still own slice. @@ -289,7 +376,7 @@ } Py_DECREF(container); if (res == NULL) goto pop_3_error; - #line 293 "Python/executor_cases.c.h" + #line 380 "Python/executor_cases.c.h" STACK_SHRINK(2); stack_pointer[-1] = res; break; @@ -300,7 +387,7 @@ PyObject *start = stack_pointer[-2]; PyObject *container = stack_pointer[-3]; PyObject *v = stack_pointer[-4]; - #line 474 "Python/bytecodes.c" + #line 549 "Python/bytecodes.c" PyObject *slice = _PyBuildSlice_ConsumeRefs(start, stop); int err; if (slice == NULL) { @@ -313,7 +400,7 @@ Py_DECREF(v); Py_DECREF(container); if (err) goto pop_4_error; - #line 317 "Python/executor_cases.c.h" + #line 404 "Python/executor_cases.c.h" STACK_SHRINK(4); break; } @@ -322,7 +409,7 @@ PyObject *sub = stack_pointer[-1]; PyObject *list = stack_pointer[-2]; PyObject *res; - #line 489 "Python/bytecodes.c" + #line 564 "Python/bytecodes.c" DEOPT_IF(!PyLong_CheckExact(sub), BINARY_SUBSCR); DEOPT_IF(!PyList_CheckExact(list), BINARY_SUBSCR); @@ -336,7 +423,7 @@ Py_INCREF(res); _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free); Py_DECREF(list); - #line 340 "Python/executor_cases.c.h" + #line 427 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -346,7 +433,7 @@ PyObject *sub = stack_pointer[-1]; PyObject *tuple = stack_pointer[-2]; PyObject *res; - #line 505 "Python/bytecodes.c" + #line 580 "Python/bytecodes.c" DEOPT_IF(!PyLong_CheckExact(sub), BINARY_SUBSCR); DEOPT_IF(!PyTuple_CheckExact(tuple), BINARY_SUBSCR); @@ -360,7 +447,7 @@ Py_INCREF(res); _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free); Py_DECREF(tuple); - #line 364 "Python/executor_cases.c.h" + #line 451 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -370,7 +457,7 @@ PyObject *sub = stack_pointer[-1]; PyObject *dict = stack_pointer[-2]; PyObject *res; - #line 521 "Python/bytecodes.c" + #line 596 "Python/bytecodes.c" DEOPT_IF(!PyDict_CheckExact(dict), BINARY_SUBSCR); STAT_INC(BINARY_SUBSCR, hit); res = PyDict_GetItemWithError(dict, sub); @@ -378,14 +465,14 @@ if (!_PyErr_Occurred(tstate)) { _PyErr_SetKeyError(sub); } - #line 382 "Python/executor_cases.c.h" + #line 469 "Python/executor_cases.c.h" Py_DECREF(dict); Py_DECREF(sub); - #line 529 "Python/bytecodes.c" + #line 604 "Python/bytecodes.c" if (true) goto pop_2_error; } Py_INCREF(res); // Do this before DECREF'ing dict, sub - #line 389 "Python/executor_cases.c.h" + #line 476 "Python/executor_cases.c.h" Py_DECREF(dict); Py_DECREF(sub); STACK_SHRINK(1); @@ -396,9 +483,9 @@ case LIST_APPEND: { PyObject *v = stack_pointer[-1]; PyObject *list = stack_pointer[-(2 + (oparg-1))]; - #line 561 "Python/bytecodes.c" + #line 636 "Python/bytecodes.c" if (_PyList_AppendTakeRef((PyListObject *)list, v) < 0) goto pop_1_error; - #line 402 "Python/executor_cases.c.h" + #line 489 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } @@ -406,13 +493,13 @@ case SET_ADD: { PyObject *v = stack_pointer[-1]; PyObject *set = stack_pointer[-(2 + (oparg-1))]; - #line 565 "Python/bytecodes.c" + #line 640 "Python/bytecodes.c" int err = PySet_Add(set, v); - #line 412 "Python/executor_cases.c.h" + #line 499 "Python/executor_cases.c.h" Py_DECREF(v); - #line 567 "Python/bytecodes.c" + #line 642 "Python/bytecodes.c" if (err) goto pop_1_error; - #line 416 "Python/executor_cases.c.h" + #line 503 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } @@ -421,7 +508,7 @@ PyObject *sub = stack_pointer[-1]; PyObject *list = stack_pointer[-2]; PyObject *value = stack_pointer[-3]; - #line 596 "Python/bytecodes.c" + #line 671 "Python/bytecodes.c" DEOPT_IF(!PyLong_CheckExact(sub), STORE_SUBSCR); DEOPT_IF(!PyList_CheckExact(list), STORE_SUBSCR); @@ -438,7 +525,7 @@ Py_DECREF(old_value); _Py_DECREF_SPECIALIZED(sub, (destructor)PyObject_Free); Py_DECREF(list); - #line 442 "Python/executor_cases.c.h" + #line 529 "Python/executor_cases.c.h" STACK_SHRINK(3); break; } @@ -447,13 +534,13 @@ PyObject *sub = stack_pointer[-1]; PyObject *dict = stack_pointer[-2]; PyObject *value = stack_pointer[-3]; - #line 615 "Python/bytecodes.c" + #line 690 "Python/bytecodes.c" DEOPT_IF(!PyDict_CheckExact(dict), STORE_SUBSCR); STAT_INC(STORE_SUBSCR, hit); int err = _PyDict_SetItem_Take2((PyDictObject *)dict, sub, value); Py_DECREF(dict); if (err) goto pop_3_error; - #line 457 "Python/executor_cases.c.h" + #line 544 "Python/executor_cases.c.h" STACK_SHRINK(3); break; } @@ -461,15 +548,15 @@ case DELETE_SUBSCR: { PyObject *sub = stack_pointer[-1]; PyObject *container = stack_pointer[-2]; - #line 623 "Python/bytecodes.c" + #line 698 "Python/bytecodes.c" /* del container[sub] */ int err = PyObject_DelItem(container, sub); - #line 468 "Python/executor_cases.c.h" + #line 555 "Python/executor_cases.c.h" Py_DECREF(container); Py_DECREF(sub); - #line 626 "Python/bytecodes.c" + #line 701 "Python/bytecodes.c" if (err) goto pop_2_error; - #line 473 "Python/executor_cases.c.h" + #line 560 "Python/executor_cases.c.h" STACK_SHRINK(2); break; } @@ -477,14 +564,14 @@ case CALL_INTRINSIC_1: { PyObject *value = stack_pointer[-1]; PyObject *res; - #line 630 "Python/bytecodes.c" + #line 705 "Python/bytecodes.c" assert(oparg <= MAX_INTRINSIC_1); res = _PyIntrinsics_UnaryFunctions[oparg](tstate, value); - #line 484 "Python/executor_cases.c.h" + #line 571 "Python/executor_cases.c.h" Py_DECREF(value); - #line 633 "Python/bytecodes.c" + #line 708 "Python/bytecodes.c" if (res == NULL) goto pop_1_error; - #line 488 "Python/executor_cases.c.h" + #line 575 "Python/executor_cases.c.h" stack_pointer[-1] = res; break; } @@ -493,15 +580,15 @@ PyObject *value1 = stack_pointer[-1]; PyObject *value2 = stack_pointer[-2]; PyObject *res; - #line 637 "Python/bytecodes.c" + #line 712 "Python/bytecodes.c" assert(oparg <= MAX_INTRINSIC_2); res = _PyIntrinsics_BinaryFunctions[oparg](tstate, value2, value1); - #line 500 "Python/executor_cases.c.h" + #line 587 "Python/executor_cases.c.h" Py_DECREF(value2); Py_DECREF(value1); - #line 640 "Python/bytecodes.c" + #line 715 "Python/bytecodes.c" if (res == NULL) goto pop_2_error; - #line 505 "Python/executor_cases.c.h" + #line 592 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -510,7 +597,7 @@ case GET_AITER: { PyObject *obj = stack_pointer[-1]; PyObject *iter; - #line 745 "Python/bytecodes.c" + #line 820 "Python/bytecodes.c" unaryfunc getter = NULL; PyTypeObject *type = Py_TYPE(obj); @@ -523,16 +610,16 @@ "'async for' requires an object with " "__aiter__ method, got %.100s", type->tp_name); - #line 527 "Python/executor_cases.c.h" + #line 614 "Python/executor_cases.c.h" Py_DECREF(obj); - #line 758 "Python/bytecodes.c" + #line 833 "Python/bytecodes.c" if (true) goto pop_1_error; } iter = (*getter)(obj); - #line 534 "Python/executor_cases.c.h" + #line 621 "Python/executor_cases.c.h" Py_DECREF(obj); - #line 763 "Python/bytecodes.c" + #line 838 "Python/bytecodes.c" if (iter == NULL) goto pop_1_error; if (Py_TYPE(iter)->tp_as_async == NULL || @@ -545,7 +632,7 @@ Py_DECREF(iter); if (true) goto pop_1_error; } - #line 549 "Python/executor_cases.c.h" + #line 636 "Python/executor_cases.c.h" stack_pointer[-1] = iter; break; } @@ -553,7 +640,7 @@ case GET_ANEXT: { PyObject *aiter = stack_pointer[-1]; PyObject *awaitable; - #line 778 "Python/bytecodes.c" + #line 853 "Python/bytecodes.c" unaryfunc getter = NULL; PyObject *next_iter = NULL; PyTypeObject *type = Py_TYPE(aiter); @@ -596,7 +683,7 @@ Py_DECREF(next_iter); } } - #line 600 "Python/executor_cases.c.h" + #line 687 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = awaitable; break; @@ -605,16 +692,16 @@ case GET_AWAITABLE: { PyObject *iterable = stack_pointer[-1]; PyObject *iter; - #line 823 "Python/bytecodes.c" + #line 898 "Python/bytecodes.c" iter = _PyCoro_GetAwaitableIter(iterable); if (iter == NULL) { format_awaitable_error(tstate, Py_TYPE(iterable), oparg); } - #line 616 "Python/executor_cases.c.h" + #line 703 "Python/executor_cases.c.h" Py_DECREF(iterable); - #line 830 "Python/bytecodes.c" + #line 905 "Python/bytecodes.c" if (iter != NULL && PyCoro_CheckExact(iter)) { PyObject *yf = _PyGen_yf((PyGenObject*)iter); @@ -631,26 +718,26 @@ } if (iter == NULL) goto pop_1_error; - #line 635 "Python/executor_cases.c.h" + #line 722 "Python/executor_cases.c.h" stack_pointer[-1] = iter; break; } case POP_EXCEPT: { PyObject *exc_value = stack_pointer[-1]; - #line 960 "Python/bytecodes.c" + #line 1035 "Python/bytecodes.c" _PyErr_StackItem *exc_info = tstate->exc_info; Py_XSETREF(exc_info->exc_value, exc_value); - #line 645 "Python/executor_cases.c.h" + #line 732 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } case LOAD_ASSERTION_ERROR: { PyObject *value; - #line 1011 "Python/bytecodes.c" + #line 1086 "Python/bytecodes.c" value = Py_NewRef(PyExc_AssertionError); - #line 654 "Python/executor_cases.c.h" + #line 741 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = value; break; @@ -658,7 +745,7 @@ case LOAD_BUILD_CLASS: { PyObject *bc; - #line 1015 "Python/bytecodes.c" + #line 1090 "Python/bytecodes.c" if (PyDict_CheckExact(BUILTINS())) { bc = _PyDict_GetItemWithError(BUILTINS(), &_Py_ID(__build_class__)); @@ -680,7 +767,7 @@ if (true) goto error; } } - #line 684 "Python/executor_cases.c.h" + #line 771 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = bc; break; @@ -688,33 +775,33 @@ case STORE_NAME: { PyObject *v = stack_pointer[-1]; - #line 1040 "Python/bytecodes.c" + #line 1115 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); PyObject *ns = LOCALS(); int err; if (ns == NULL) { _PyErr_Format(tstate, PyExc_SystemError, "no locals found when storing %R", name); - #line 699 "Python/executor_cases.c.h" + #line 786 "Python/executor_cases.c.h" Py_DECREF(v); - #line 1047 "Python/bytecodes.c" + #line 1122 "Python/bytecodes.c" if (true) goto pop_1_error; } if (PyDict_CheckExact(ns)) err = PyDict_SetItem(ns, name, v); else err = PyObject_SetItem(ns, name, v); - #line 708 "Python/executor_cases.c.h" + #line 795 "Python/executor_cases.c.h" Py_DECREF(v); - #line 1054 "Python/bytecodes.c" + #line 1129 "Python/bytecodes.c" if (err) goto pop_1_error; - #line 712 "Python/executor_cases.c.h" + #line 799 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } case DELETE_NAME: { - #line 1058 "Python/bytecodes.c" + #line 1133 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); PyObject *ns = LOCALS(); int err; @@ -731,21 +818,21 @@ name); goto error; } - #line 735 "Python/executor_cases.c.h" + #line 822 "Python/executor_cases.c.h" break; } case UNPACK_SEQUENCE_TWO_TUPLE: { PyObject *seq = stack_pointer[-1]; PyObject **values = stack_pointer - (1); - #line 1101 "Python/bytecodes.c" + #line 1176 "Python/bytecodes.c" DEOPT_IF(!PyTuple_CheckExact(seq), UNPACK_SEQUENCE); DEOPT_IF(PyTuple_GET_SIZE(seq) != 2, UNPACK_SEQUENCE); assert(oparg == 2); STAT_INC(UNPACK_SEQUENCE, hit); values[0] = Py_NewRef(PyTuple_GET_ITEM(seq, 1)); values[1] = Py_NewRef(PyTuple_GET_ITEM(seq, 0)); - #line 749 "Python/executor_cases.c.h" + #line 836 "Python/executor_cases.c.h" Py_DECREF(seq); STACK_SHRINK(1); STACK_GROW(oparg); @@ -755,7 +842,7 @@ case UNPACK_SEQUENCE_TUPLE: { PyObject *seq = stack_pointer[-1]; PyObject **values = stack_pointer - (1); - #line 1111 "Python/bytecodes.c" + #line 1186 "Python/bytecodes.c" DEOPT_IF(!PyTuple_CheckExact(seq), UNPACK_SEQUENCE); DEOPT_IF(PyTuple_GET_SIZE(seq) != oparg, UNPACK_SEQUENCE); STAT_INC(UNPACK_SEQUENCE, hit); @@ -763,7 +850,7 @@ for (int i = oparg; --i >= 0; ) { *values++ = Py_NewRef(items[i]); } - #line 767 "Python/executor_cases.c.h" + #line 854 "Python/executor_cases.c.h" Py_DECREF(seq); STACK_SHRINK(1); STACK_GROW(oparg); @@ -773,7 +860,7 @@ case UNPACK_SEQUENCE_LIST: { PyObject *seq = stack_pointer[-1]; PyObject **values = stack_pointer - (1); - #line 1122 "Python/bytecodes.c" + #line 1197 "Python/bytecodes.c" DEOPT_IF(!PyList_CheckExact(seq), UNPACK_SEQUENCE); DEOPT_IF(PyList_GET_SIZE(seq) != oparg, UNPACK_SEQUENCE); STAT_INC(UNPACK_SEQUENCE, hit); @@ -781,7 +868,7 @@ for (int i = oparg; --i >= 0; ) { *values++ = Py_NewRef(items[i]); } - #line 785 "Python/executor_cases.c.h" + #line 872 "Python/executor_cases.c.h" Py_DECREF(seq); STACK_SHRINK(1); STACK_GROW(oparg); @@ -790,49 +877,49 @@ case UNPACK_EX: { PyObject *seq = stack_pointer[-1]; - #line 1133 "Python/bytecodes.c" + #line 1208 "Python/bytecodes.c" int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8); PyObject **top = stack_pointer + totalargs - 1; int res = unpack_iterable(tstate, seq, oparg & 0xFF, oparg >> 8, top); - #line 798 "Python/executor_cases.c.h" + #line 885 "Python/executor_cases.c.h" Py_DECREF(seq); - #line 1137 "Python/bytecodes.c" + #line 1212 "Python/bytecodes.c" if (res == 0) goto pop_1_error; - #line 802 "Python/executor_cases.c.h" + #line 889 "Python/executor_cases.c.h" STACK_GROW((oparg & 0xFF) + (oparg >> 8)); break; } case DELETE_ATTR: { PyObject *owner = stack_pointer[-1]; - #line 1168 "Python/bytecodes.c" + #line 1243 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); int err = PyObject_SetAttr(owner, name, (PyObject *)NULL); - #line 812 "Python/executor_cases.c.h" + #line 899 "Python/executor_cases.c.h" Py_DECREF(owner); - #line 1171 "Python/bytecodes.c" + #line 1246 "Python/bytecodes.c" if (err) goto pop_1_error; - #line 816 "Python/executor_cases.c.h" + #line 903 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } case STORE_GLOBAL: { PyObject *v = stack_pointer[-1]; - #line 1175 "Python/bytecodes.c" + #line 1250 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); int err = PyDict_SetItem(GLOBALS(), name, v); - #line 826 "Python/executor_cases.c.h" + #line 913 "Python/executor_cases.c.h" Py_DECREF(v); - #line 1178 "Python/bytecodes.c" + #line 1253 "Python/bytecodes.c" if (err) goto pop_1_error; - #line 830 "Python/executor_cases.c.h" + #line 917 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } case DELETE_GLOBAL: { - #line 1182 "Python/bytecodes.c" + #line 1257 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); int err; err = PyDict_DelItem(GLOBALS(), name); @@ -844,13 +931,13 @@ } goto error; } - #line 848 "Python/executor_cases.c.h" + #line 935 "Python/executor_cases.c.h" break; } case _LOAD_LOCALS: { PyObject *locals; - #line 1196 "Python/bytecodes.c" + #line 1271 "Python/bytecodes.c" locals = LOCALS(); if (locals == NULL) { _PyErr_SetString(tstate, PyExc_SystemError, @@ -858,7 +945,7 @@ if (true) goto error; } Py_INCREF(locals); - #line 862 "Python/executor_cases.c.h" + #line 949 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = locals; break; @@ -867,7 +954,7 @@ case _LOAD_FROM_DICT_OR_GLOBALS: { PyObject *mod_or_class_dict = stack_pointer[-1]; PyObject *v; - #line 1208 "Python/bytecodes.c" + #line 1283 "Python/bytecodes.c" PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); if (PyDict_CheckExact(mod_or_class_dict)) { v = PyDict_GetItemWithError(mod_or_class_dict, name); @@ -924,13 +1011,13 @@ } } } - #line 928 "Python/executor_cases.c.h" + #line 1015 "Python/executor_cases.c.h" stack_pointer[-1] = v; break; } case DELETE_DEREF: { - #line 1378 "Python/bytecodes.c" + #line 1453 "Python/bytecodes.c" PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); // Can't use ERROR_IF here. @@ -941,14 +1028,14 @@ } PyCell_SET(cell, NULL); Py_DECREF(oldobj); - #line 945 "Python/executor_cases.c.h" + #line 1032 "Python/executor_cases.c.h" break; } case LOAD_FROM_DICT_OR_DEREF: { PyObject *class_dict = stack_pointer[-1]; PyObject *value; - #line 1391 "Python/bytecodes.c" + #line 1466 "Python/bytecodes.c" PyObject *name; assert(class_dict); assert(oparg >= 0 && oparg < _PyFrame_GetCode(frame)->co_nlocalsplus); @@ -983,14 +1070,14 @@ } Py_INCREF(value); } - #line 987 "Python/executor_cases.c.h" + #line 1074 "Python/executor_cases.c.h" stack_pointer[-1] = value; break; } case LOAD_DEREF: { PyObject *value; - #line 1428 "Python/bytecodes.c" + #line 1503 "Python/bytecodes.c" PyObject *cell = GETLOCAL(oparg); value = PyCell_GET(cell); if (value == NULL) { @@ -998,7 +1085,7 @@ if (true) goto error; } Py_INCREF(value); - #line 1002 "Python/executor_cases.c.h" + #line 1089 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = value; break; @@ -1006,18 +1093,18 @@ case STORE_DEREF: { PyObject *v = stack_pointer[-1]; - #line 1438 "Python/bytecodes.c" + #line 1513 "Python/bytecodes.c" PyObject *cell = GETLOCAL(oparg); PyObject *oldobj = PyCell_GET(cell); PyCell_SET(cell, v); Py_XDECREF(oldobj); - #line 1015 "Python/executor_cases.c.h" + #line 1102 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } case COPY_FREE_VARS: { - #line 1445 "Python/bytecodes.c" + #line 1520 "Python/bytecodes.c" /* Copy closure variables to free variables */ PyCodeObject *co = _PyFrame_GetCode(frame); assert(PyFunction_Check(frame->f_funcobj)); @@ -1028,22 +1115,22 @@ PyObject *o = PyTuple_GET_ITEM(closure, i); frame->localsplus[offset + i] = Py_NewRef(o); } - #line 1032 "Python/executor_cases.c.h" + #line 1119 "Python/executor_cases.c.h" break; } case BUILD_STRING: { PyObject **pieces = (stack_pointer - oparg); PyObject *str; - #line 1458 "Python/bytecodes.c" + #line 1533 "Python/bytecodes.c" str = _PyUnicode_JoinArray(&_Py_STR(empty), pieces, oparg); - #line 1041 "Python/executor_cases.c.h" + #line 1128 "Python/executor_cases.c.h" for (int _i = oparg; --_i >= 0;) { Py_DECREF(pieces[_i]); } - #line 1460 "Python/bytecodes.c" + #line 1535 "Python/bytecodes.c" if (str == NULL) { STACK_SHRINK(oparg); goto error; } - #line 1047 "Python/executor_cases.c.h" + #line 1134 "Python/executor_cases.c.h" STACK_SHRINK(oparg); STACK_GROW(1); stack_pointer[-1] = str; @@ -1053,10 +1140,10 @@ case BUILD_TUPLE: { PyObject **values = (stack_pointer - oparg); PyObject *tup; - #line 1464 "Python/bytecodes.c" + #line 1539 "Python/bytecodes.c" tup = _PyTuple_FromArraySteal(values, oparg); if (tup == NULL) { STACK_SHRINK(oparg); goto error; } - #line 1060 "Python/executor_cases.c.h" + #line 1147 "Python/executor_cases.c.h" STACK_SHRINK(oparg); STACK_GROW(1); stack_pointer[-1] = tup; @@ -1066,10 +1153,10 @@ case BUILD_LIST: { PyObject **values = (stack_pointer - oparg); PyObject *list; - #line 1469 "Python/bytecodes.c" + #line 1544 "Python/bytecodes.c" list = _PyList_FromArraySteal(values, oparg); if (list == NULL) { STACK_SHRINK(oparg); goto error; } - #line 1073 "Python/executor_cases.c.h" + #line 1160 "Python/executor_cases.c.h" STACK_SHRINK(oparg); STACK_GROW(1); stack_pointer[-1] = list; @@ -1079,7 +1166,7 @@ case LIST_EXTEND: { PyObject *iterable = stack_pointer[-1]; PyObject *list = stack_pointer[-(2 + (oparg-1))]; - #line 1474 "Python/bytecodes.c" + #line 1549 "Python/bytecodes.c" PyObject *none_val = _PyList_Extend((PyListObject *)list, iterable); if (none_val == NULL) { if (_PyErr_ExceptionMatches(tstate, PyExc_TypeError) && @@ -1090,13 +1177,13 @@ "Value after * must be an iterable, not %.200s", Py_TYPE(iterable)->tp_name); } - #line 1094 "Python/executor_cases.c.h" + #line 1181 "Python/executor_cases.c.h" Py_DECREF(iterable); - #line 1485 "Python/bytecodes.c" + #line 1560 "Python/bytecodes.c" if (true) goto pop_1_error; } assert(Py_IsNone(none_val)); - #line 1100 "Python/executor_cases.c.h" + #line 1187 "Python/executor_cases.c.h" Py_DECREF(iterable); STACK_SHRINK(1); break; @@ -1105,13 +1192,13 @@ case SET_UPDATE: { PyObject *iterable = stack_pointer[-1]; PyObject *set = stack_pointer[-(2 + (oparg-1))]; - #line 1492 "Python/bytecodes.c" + #line 1567 "Python/bytecodes.c" int err = _PySet_Update(set, iterable); - #line 1111 "Python/executor_cases.c.h" + #line 1198 "Python/executor_cases.c.h" Py_DECREF(iterable); - #line 1494 "Python/bytecodes.c" + #line 1569 "Python/bytecodes.c" if (err < 0) goto pop_1_error; - #line 1115 "Python/executor_cases.c.h" + #line 1202 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } @@ -1119,7 +1206,7 @@ case BUILD_SET: { PyObject **values = (stack_pointer - oparg); PyObject *set; - #line 1498 "Python/bytecodes.c" + #line 1573 "Python/bytecodes.c" set = PySet_New(NULL); if (set == NULL) goto error; @@ -1134,7 +1221,7 @@ Py_DECREF(set); if (true) { STACK_SHRINK(oparg); goto error; } } - #line 1138 "Python/executor_cases.c.h" + #line 1225 "Python/executor_cases.c.h" STACK_SHRINK(oparg); STACK_GROW(1); stack_pointer[-1] = set; @@ -1144,7 +1231,7 @@ case BUILD_MAP: { PyObject **values = (stack_pointer - oparg*2); PyObject *map; - #line 1515 "Python/bytecodes.c" + #line 1590 "Python/bytecodes.c" map = _PyDict_FromItems( values, 2, values+1, 2, @@ -1152,13 +1239,13 @@ if (map == NULL) goto error; - #line 1156 "Python/executor_cases.c.h" + #line 1243 "Python/executor_cases.c.h" for (int _i = oparg*2; --_i >= 0;) { Py_DECREF(values[_i]); } - #line 1523 "Python/bytecodes.c" + #line 1598 "Python/bytecodes.c" if (map == NULL) { STACK_SHRINK(oparg*2); goto error; } - #line 1162 "Python/executor_cases.c.h" + #line 1249 "Python/executor_cases.c.h" STACK_SHRINK(oparg*2); STACK_GROW(1); stack_pointer[-1] = map; @@ -1166,7 +1253,7 @@ } case SETUP_ANNOTATIONS: { - #line 1527 "Python/bytecodes.c" + #line 1602 "Python/bytecodes.c" int err; PyObject *ann_dict; if (LOCALS() == NULL) { @@ -1206,7 +1293,7 @@ Py_DECREF(ann_dict); } } - #line 1210 "Python/executor_cases.c.h" + #line 1297 "Python/executor_cases.c.h" break; } @@ -1214,7 +1301,7 @@ PyObject *keys = stack_pointer[-1]; PyObject **values = (stack_pointer - (1 + oparg)); PyObject *map; - #line 1569 "Python/bytecodes.c" + #line 1644 "Python/bytecodes.c" if (!PyTuple_CheckExact(keys) || PyTuple_GET_SIZE(keys) != (Py_ssize_t)oparg) { _PyErr_SetString(tstate, PyExc_SystemError, @@ -1224,14 +1311,14 @@ map = _PyDict_FromItems( &PyTuple_GET_ITEM(keys, 0), 1, values, 1, oparg); - #line 1228 "Python/executor_cases.c.h" + #line 1315 "Python/executor_cases.c.h" for (int _i = oparg; --_i >= 0;) { Py_DECREF(values[_i]); } Py_DECREF(keys); - #line 1579 "Python/bytecodes.c" + #line 1654 "Python/bytecodes.c" if (map == NULL) { STACK_SHRINK(oparg); goto pop_1_error; } - #line 1235 "Python/executor_cases.c.h" + #line 1322 "Python/executor_cases.c.h" STACK_SHRINK(oparg); stack_pointer[-1] = map; break; @@ -1239,7 +1326,7 @@ case DICT_UPDATE: { PyObject *update = stack_pointer[-1]; - #line 1583 "Python/bytecodes.c" + #line 1658 "Python/bytecodes.c" PyObject *dict = PEEK(oparg + 1); // update is still on the stack if (PyDict_Update(dict, update) < 0) { if (_PyErr_ExceptionMatches(tstate, PyExc_AttributeError)) { @@ -1247,12 +1334,12 @@ "'%.200s' object is not a mapping", Py_TYPE(update)->tp_name); } - #line 1251 "Python/executor_cases.c.h" + #line 1338 "Python/executor_cases.c.h" Py_DECREF(update); - #line 1591 "Python/bytecodes.c" + #line 1666 "Python/bytecodes.c" if (true) goto pop_1_error; } - #line 1256 "Python/executor_cases.c.h" + #line 1343 "Python/executor_cases.c.h" Py_DECREF(update); STACK_SHRINK(1); break; @@ -1260,17 +1347,17 @@ case DICT_MERGE: { PyObject *update = stack_pointer[-1]; - #line 1597 "Python/bytecodes.c" + #line 1672 "Python/bytecodes.c" PyObject *dict = PEEK(oparg + 1); // update is still on the stack if (_PyDict_MergeEx(dict, update, 2) < 0) { format_kwargs_error(tstate, PEEK(3 + oparg), update); - #line 1269 "Python/executor_cases.c.h" + #line 1356 "Python/executor_cases.c.h" Py_DECREF(update); - #line 1602 "Python/bytecodes.c" + #line 1677 "Python/bytecodes.c" if (true) goto pop_1_error; } - #line 1274 "Python/executor_cases.c.h" + #line 1361 "Python/executor_cases.c.h" Py_DECREF(update); STACK_SHRINK(1); break; @@ -1279,13 +1366,13 @@ case MAP_ADD: { PyObject *value = stack_pointer[-1]; PyObject *key = stack_pointer[-2]; - #line 1608 "Python/bytecodes.c" + #line 1683 "Python/bytecodes.c" PyObject *dict = PEEK(oparg + 2); // key, value are still on the stack assert(PyDict_CheckExact(dict)); /* dict[key] = value */ // Do not DECREF INPUTS because the function steals the references if (_PyDict_SetItem_Take2((PyDictObject *)dict, key, value) != 0) goto pop_2_error; - #line 1289 "Python/executor_cases.c.h" + #line 1376 "Python/executor_cases.c.h" STACK_SHRINK(2); break; } @@ -1296,20 +1383,20 @@ PyObject *global_super = stack_pointer[-3]; PyObject *res2 = NULL; PyObject *res; - #line 1691 "Python/bytecodes.c" + #line 1766 "Python/bytecodes.c" assert(!(oparg & 1)); DEOPT_IF(global_super != (PyObject *)&PySuper_Type, LOAD_SUPER_ATTR); DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR); STAT_INC(LOAD_SUPER_ATTR, hit); PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 2); res = _PySuper_Lookup((PyTypeObject *)class, self, name, NULL); - #line 1307 "Python/executor_cases.c.h" + #line 1394 "Python/executor_cases.c.h" Py_DECREF(global_super); Py_DECREF(class); Py_DECREF(self); - #line 1698 "Python/bytecodes.c" + #line 1773 "Python/bytecodes.c" if (res == NULL) goto pop_3_error; - #line 1313 "Python/executor_cases.c.h" + #line 1400 "Python/executor_cases.c.h" STACK_SHRINK(2); STACK_GROW(((oparg & 1) ? 1 : 0)); stack_pointer[-1] = res; @@ -1323,7 +1410,7 @@ PyObject *global_super = stack_pointer[-3]; PyObject *res2; PyObject *res; - #line 1702 "Python/bytecodes.c" + #line 1777 "Python/bytecodes.c" assert(oparg & 1); DEOPT_IF(global_super != (PyObject *)&PySuper_Type, LOAD_SUPER_ATTR); DEOPT_IF(!PyType_Check(class), LOAD_SUPER_ATTR); @@ -1346,7 +1433,7 @@ res = res2; res2 = NULL; } - #line 1350 "Python/executor_cases.c.h" + #line 1437 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; stack_pointer[-2] = res2; @@ -1357,7 +1444,7 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 2034 "Python/bytecodes.c" + #line 2115 "Python/bytecodes.c" DEOPT_IF(!PyFloat_CheckExact(left), COMPARE_OP); DEOPT_IF(!PyFloat_CheckExact(right), COMPARE_OP); STAT_INC(COMPARE_OP, hit); @@ -1368,7 +1455,8 @@ _Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc); _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc); res = (sign_ish & oparg) ? Py_True : Py_False; - #line 1372 "Python/executor_cases.c.h" + // It's always a bool, so we don't care about oparg & 16. + #line 1460 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -1378,7 +1466,7 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 2048 "Python/bytecodes.c" + #line 2130 "Python/bytecodes.c" DEOPT_IF(!PyLong_CheckExact(left), COMPARE_OP); DEOPT_IF(!PyLong_CheckExact(right), COMPARE_OP); DEOPT_IF(!_PyLong_IsCompact((PyLongObject *)left), COMPARE_OP); @@ -1393,7 +1481,8 @@ _Py_DECREF_SPECIALIZED(left, (destructor)PyObject_Free); _Py_DECREF_SPECIALIZED(right, (destructor)PyObject_Free); res = (sign_ish & oparg) ? Py_True : Py_False; - #line 1397 "Python/executor_cases.c.h" + // It's always a bool, so we don't care about oparg & 16. + #line 1486 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -1403,19 +1492,20 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *res; - #line 2066 "Python/bytecodes.c" + #line 2149 "Python/bytecodes.c" DEOPT_IF(!PyUnicode_CheckExact(left), COMPARE_OP); DEOPT_IF(!PyUnicode_CheckExact(right), COMPARE_OP); STAT_INC(COMPARE_OP, hit); int eq = _PyUnicode_Equal(left, right); - assert((oparg >>4) == Py_EQ || (oparg >>4) == Py_NE); + assert((oparg >> 5) == Py_EQ || (oparg >> 5) == Py_NE); _Py_DECREF_SPECIALIZED(left, _PyUnicode_ExactDealloc); _Py_DECREF_SPECIALIZED(right, _PyUnicode_ExactDealloc); assert(eq == 0 || eq == 1); assert((oparg & 0xf) == COMPARISON_NOT_EQUALS || (oparg & 0xf) == COMPARISON_EQUALS); assert(COMPARISON_NOT_EQUALS + 1 == COMPARISON_EQUALS); res = ((COMPARISON_NOT_EQUALS + eq) & oparg) ? Py_True : Py_False; - #line 1419 "Python/executor_cases.c.h" + // It's always a bool, so we don't care about oparg & 16. + #line 1509 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -1425,14 +1515,14 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *b; - #line 2080 "Python/bytecodes.c" + #line 2164 "Python/bytecodes.c" int res = Py_Is(left, right) ^ oparg; - #line 1431 "Python/executor_cases.c.h" + #line 1521 "Python/executor_cases.c.h" Py_DECREF(left); Py_DECREF(right); - #line 2082 "Python/bytecodes.c" + #line 2166 "Python/bytecodes.c" b = res ? Py_True : Py_False; - #line 1436 "Python/executor_cases.c.h" + #line 1526 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = b; break; @@ -1442,15 +1532,15 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *b; - #line 2086 "Python/bytecodes.c" + #line 2170 "Python/bytecodes.c" int res = PySequence_Contains(right, left); - #line 1448 "Python/executor_cases.c.h" + #line 1538 "Python/executor_cases.c.h" Py_DECREF(left); Py_DECREF(right); - #line 2088 "Python/bytecodes.c" + #line 2172 "Python/bytecodes.c" if (res < 0) goto pop_2_error; b = (res ^ oparg) ? Py_True : Py_False; - #line 1454 "Python/executor_cases.c.h" + #line 1544 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = b; break; @@ -1461,12 +1551,12 @@ PyObject *exc_value = stack_pointer[-2]; PyObject *rest; PyObject *match; - #line 2093 "Python/bytecodes.c" + #line 2177 "Python/bytecodes.c" if (check_except_star_type_valid(tstate, match_type) < 0) { - #line 1467 "Python/executor_cases.c.h" + #line 1557 "Python/executor_cases.c.h" Py_DECREF(exc_value); Py_DECREF(match_type); - #line 2095 "Python/bytecodes.c" + #line 2179 "Python/bytecodes.c" if (true) goto pop_2_error; } @@ -1474,10 +1564,10 @@ rest = NULL; int res = exception_group_match(exc_value, match_type, &match, &rest); - #line 1478 "Python/executor_cases.c.h" + #line 1568 "Python/executor_cases.c.h" Py_DECREF(exc_value); Py_DECREF(match_type); - #line 2103 "Python/bytecodes.c" + #line 2187 "Python/bytecodes.c" if (res < 0) goto pop_2_error; assert((match == NULL) == (rest == NULL)); @@ -1486,7 +1576,7 @@ if (!Py_IsNone(match)) { PyErr_SetHandledException(match); } - #line 1490 "Python/executor_cases.c.h" + #line 1580 "Python/executor_cases.c.h" stack_pointer[-1] = match; stack_pointer[-2] = rest; break; @@ -1496,21 +1586,21 @@ PyObject *right = stack_pointer[-1]; PyObject *left = stack_pointer[-2]; PyObject *b; - #line 2114 "Python/bytecodes.c" + #line 2198 "Python/bytecodes.c" assert(PyExceptionInstance_Check(left)); if (check_except_type_valid(tstate, right) < 0) { - #line 1503 "Python/executor_cases.c.h" + #line 1593 "Python/executor_cases.c.h" Py_DECREF(right); - #line 2117 "Python/bytecodes.c" + #line 2201 "Python/bytecodes.c" if (true) goto pop_1_error; } int res = PyErr_GivenExceptionMatches(left, right); - #line 1510 "Python/executor_cases.c.h" + #line 1600 "Python/executor_cases.c.h" Py_DECREF(right); - #line 2122 "Python/bytecodes.c" + #line 2206 "Python/bytecodes.c" b = res ? Py_True : Py_False; - #line 1514 "Python/executor_cases.c.h" + #line 1604 "Python/executor_cases.c.h" stack_pointer[-1] = b; break; } @@ -1518,13 +1608,13 @@ case GET_LEN: { PyObject *obj = stack_pointer[-1]; PyObject *len_o; - #line 2243 "Python/bytecodes.c" + #line 2305 "Python/bytecodes.c" // PUSH(len(TOS)) Py_ssize_t len_i = PyObject_Length(obj); if (len_i < 0) goto error; len_o = PyLong_FromSsize_t(len_i); if (len_o == NULL) goto error; - #line 1528 "Python/executor_cases.c.h" + #line 1618 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = len_o; break; @@ -1535,16 +1625,16 @@ PyObject *type = stack_pointer[-2]; PyObject *subject = stack_pointer[-3]; PyObject *attrs; - #line 2251 "Python/bytecodes.c" + #line 2313 "Python/bytecodes.c" // Pop TOS and TOS1. Set TOS to a tuple of attributes on success, or // None on failure. assert(PyTuple_CheckExact(names)); attrs = match_class(tstate, subject, type, oparg, names); - #line 1544 "Python/executor_cases.c.h" + #line 1634 "Python/executor_cases.c.h" Py_DECREF(subject); Py_DECREF(type); Py_DECREF(names); - #line 2256 "Python/bytecodes.c" + #line 2318 "Python/bytecodes.c" if (attrs) { assert(PyTuple_CheckExact(attrs)); // Success! } @@ -1552,7 +1642,7 @@ if (_PyErr_Occurred(tstate)) goto pop_3_error; attrs = Py_None; // Failure! } - #line 1556 "Python/executor_cases.c.h" + #line 1646 "Python/executor_cases.c.h" STACK_SHRINK(2); stack_pointer[-1] = attrs; break; @@ -1561,10 +1651,10 @@ case MATCH_MAPPING: { PyObject *subject = stack_pointer[-1]; PyObject *res; - #line 2266 "Python/bytecodes.c" + #line 2328 "Python/bytecodes.c" int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_MAPPING; res = match ? Py_True : Py_False; - #line 1568 "Python/executor_cases.c.h" + #line 1658 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = res; break; @@ -1573,10 +1663,10 @@ case MATCH_SEQUENCE: { PyObject *subject = stack_pointer[-1]; PyObject *res; - #line 2271 "Python/bytecodes.c" + #line 2333 "Python/bytecodes.c" int match = Py_TYPE(subject)->tp_flags & Py_TPFLAGS_SEQUENCE; res = match ? Py_True : Py_False; - #line 1580 "Python/executor_cases.c.h" + #line 1670 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = res; break; @@ -1586,11 +1676,11 @@ PyObject *keys = stack_pointer[-1]; PyObject *subject = stack_pointer[-2]; PyObject *values_or_none; - #line 2276 "Python/bytecodes.c" + #line 2338 "Python/bytecodes.c" // On successful match, PUSH(values). Otherwise, PUSH(None). values_or_none = match_keys(tstate, subject, keys); if (values_or_none == NULL) goto error; - #line 1594 "Python/executor_cases.c.h" + #line 1684 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = values_or_none; break; @@ -1599,14 +1689,14 @@ case GET_ITER: { PyObject *iterable = stack_pointer[-1]; PyObject *iter; - #line 2282 "Python/bytecodes.c" + #line 2344 "Python/bytecodes.c" /* before: [obj]; after [getiter(obj)] */ iter = PyObject_GetIter(iterable); - #line 1606 "Python/executor_cases.c.h" + #line 1696 "Python/executor_cases.c.h" Py_DECREF(iterable); - #line 2285 "Python/bytecodes.c" + #line 2347 "Python/bytecodes.c" if (iter == NULL) goto pop_1_error; - #line 1610 "Python/executor_cases.c.h" + #line 1700 "Python/executor_cases.c.h" stack_pointer[-1] = iter; break; } @@ -1614,7 +1704,7 @@ case GET_YIELD_FROM_ITER: { PyObject *iterable = stack_pointer[-1]; PyObject *iter; - #line 2289 "Python/bytecodes.c" + #line 2351 "Python/bytecodes.c" /* before: [obj]; after [getiter(obj)] */ if (PyCoro_CheckExact(iterable)) { /* `iterable` is a coroutine */ @@ -1637,11 +1727,11 @@ if (iter == NULL) { goto error; } - #line 1641 "Python/executor_cases.c.h" + #line 1731 "Python/executor_cases.c.h" Py_DECREF(iterable); - #line 2312 "Python/bytecodes.c" + #line 2374 "Python/bytecodes.c" } - #line 1645 "Python/executor_cases.c.h" + #line 1735 "Python/executor_cases.c.h" stack_pointer[-1] = iter; break; } @@ -1651,7 +1741,7 @@ PyObject *lasti = stack_pointer[-3]; PyObject *exit_func = stack_pointer[-4]; PyObject *res; - #line 2544 "Python/bytecodes.c" + #line 2606 "Python/bytecodes.c" /* At the top of the stack are 4 values: - val: TOP = exc_info() - unused: SECOND = previous exception @@ -1672,7 +1762,7 @@ res = PyObject_Vectorcall(exit_func, stack + 1, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); if (res == NULL) goto error; - #line 1676 "Python/executor_cases.c.h" + #line 1766 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = res; break; @@ -1681,7 +1771,7 @@ case PUSH_EXC_INFO: { PyObject *new_exc = stack_pointer[-1]; PyObject *prev_exc; - #line 2583 "Python/bytecodes.c" + #line 2645 "Python/bytecodes.c" _PyErr_StackItem *exc_info = tstate->exc_info; if (exc_info->exc_value != NULL) { prev_exc = exc_info->exc_value; @@ -1691,7 +1781,7 @@ } assert(PyExceptionInstance_Check(new_exc)); exc_info->exc_value = Py_NewRef(new_exc); - #line 1695 "Python/executor_cases.c.h" + #line 1785 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = new_exc; stack_pointer[-2] = prev_exc; @@ -1700,7 +1790,7 @@ case EXIT_INIT_CHECK: { PyObject *should_be_none = stack_pointer[-1]; - #line 2952 "Python/bytecodes.c" + #line 3014 "Python/bytecodes.c" assert(STACK_LEVEL() == 2); if (should_be_none != Py_None) { PyErr_Format(PyExc_TypeError, @@ -1708,7 +1798,7 @@ Py_TYPE(should_be_none)->tp_name); goto error; } - #line 1712 "Python/executor_cases.c.h" + #line 1802 "Python/executor_cases.c.h" STACK_SHRINK(1); break; } @@ -1716,7 +1806,7 @@ case MAKE_FUNCTION: { PyObject *codeobj = stack_pointer[-1]; PyObject *func; - #line 3366 "Python/bytecodes.c" + #line 3428 "Python/bytecodes.c" PyFunctionObject *func_obj = (PyFunctionObject *) PyFunction_New(codeobj, GLOBALS()); @@ -1728,7 +1818,7 @@ func_obj->func_version = ((PyCodeObject *)codeobj)->co_version; func = (PyObject *)func_obj; - #line 1732 "Python/executor_cases.c.h" + #line 1822 "Python/executor_cases.c.h" stack_pointer[-1] = func; break; } @@ -1736,7 +1826,7 @@ case SET_FUNCTION_ATTRIBUTE: { PyObject *func = stack_pointer[-1]; PyObject *attr = stack_pointer[-2]; - #line 3380 "Python/bytecodes.c" + #line 3442 "Python/bytecodes.c" assert(PyFunction_Check(func)); PyFunctionObject *func_obj = (PyFunctionObject *)func; switch(oparg) { @@ -1761,7 +1851,7 @@ default: Py_UNREACHABLE(); } - #line 1765 "Python/executor_cases.c.h" + #line 1855 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = func; break; @@ -1772,15 +1862,15 @@ PyObject *stop = stack_pointer[-(1 + ((oparg == 3) ? 1 : 0))]; PyObject *start = stack_pointer[-(2 + ((oparg == 3) ? 1 : 0))]; PyObject *slice; - #line 3430 "Python/bytecodes.c" + #line 3492 "Python/bytecodes.c" slice = PySlice_New(start, stop, step); - #line 1778 "Python/executor_cases.c.h" + #line 1868 "Python/executor_cases.c.h" Py_DECREF(start); Py_DECREF(stop); Py_XDECREF(step); - #line 3432 "Python/bytecodes.c" + #line 3494 "Python/bytecodes.c" if (slice == NULL) { STACK_SHRINK(((oparg == 3) ? 1 : 0)); goto pop_2_error; } - #line 1784 "Python/executor_cases.c.h" + #line 1874 "Python/executor_cases.c.h" STACK_SHRINK(((oparg == 3) ? 1 : 0)); STACK_SHRINK(1); stack_pointer[-1] = slice; @@ -1790,14 +1880,14 @@ case CONVERT_VALUE: { PyObject *value = stack_pointer[-1]; PyObject *result; - #line 3436 "Python/bytecodes.c" + #line 3498 "Python/bytecodes.c" convertion_func_ptr conv_fn; assert(oparg >= FVC_STR && oparg <= FVC_ASCII); conv_fn = CONVERSION_FUNCTIONS[oparg]; result = conv_fn(value); Py_DECREF(value); if (result == NULL) goto pop_1_error; - #line 1801 "Python/executor_cases.c.h" + #line 1891 "Python/executor_cases.c.h" stack_pointer[-1] = result; break; } @@ -1805,7 +1895,7 @@ case FORMAT_SIMPLE: { PyObject *value = stack_pointer[-1]; PyObject *res; - #line 3445 "Python/bytecodes.c" + #line 3507 "Python/bytecodes.c" /* If value is a unicode object, then we know the result * of format(value) is value itself. */ if (!PyUnicode_CheckExact(value)) { @@ -1816,7 +1906,7 @@ else { res = value; } - #line 1820 "Python/executor_cases.c.h" + #line 1910 "Python/executor_cases.c.h" stack_pointer[-1] = res; break; } @@ -1825,12 +1915,12 @@ PyObject *fmt_spec = stack_pointer[-1]; PyObject *value = stack_pointer[-2]; PyObject *res; - #line 3458 "Python/bytecodes.c" + #line 3520 "Python/bytecodes.c" res = PyObject_Format(value, fmt_spec); Py_DECREF(value); Py_DECREF(fmt_spec); if (res == NULL) goto pop_2_error; - #line 1834 "Python/executor_cases.c.h" + #line 1924 "Python/executor_cases.c.h" STACK_SHRINK(1); stack_pointer[-1] = res; break; @@ -1839,10 +1929,10 @@ case COPY: { PyObject *bottom = stack_pointer[-(1 + (oparg-1))]; PyObject *top; - #line 3465 "Python/bytecodes.c" + #line 3527 "Python/bytecodes.c" assert(oparg > 0); top = Py_NewRef(bottom); - #line 1846 "Python/executor_cases.c.h" + #line 1936 "Python/executor_cases.c.h" STACK_GROW(1); stack_pointer[-1] = top; break; @@ -1851,9 +1941,9 @@ case SWAP: { PyObject *top = stack_pointer[-1]; PyObject *bottom = stack_pointer[-(2 + (oparg-2))]; - #line 3490 "Python/bytecodes.c" + #line 3552 "Python/bytecodes.c" assert(oparg >= 2); - #line 1857 "Python/executor_cases.c.h" + #line 1947 "Python/executor_cases.c.h" stack_pointer[-1] = bottom; stack_pointer[-(2 + (oparg-2))] = top; break; |