cpython: ac30a1b1cf17 (original) (raw)
--- a/Python/ceval.c +++ b/Python/ceval.c @@ -742,7 +742,6 @@ int enum why_code { WHY_NOT = 0x0001, /* No error / WHY_EXCEPTION = 0x0002, / Exception occurred */
WHY_RERAISE = 0x0004, /* Exception re-raised by 'finally' */[](#l1.7) WHY_RETURN = 0x0008, /* 'return' statement */[](#l1.8) WHY_BREAK = 0x0010, /* 'break' statement */[](#l1.9) WHY_CONTINUE = 0x0020, /* 'continue' statement */[](#l1.10)
@@ -753,7 +752,7 @@ enum why_code { static void save_exc_state(PyThreadState *, PyFrameObject *); static void swap_exc_state(PyThreadState *, PyFrameObject *); static void restore_and_clear_exc_state(PyThreadState *, PyFrameObject *); -static enum why_code do_raise(PyObject *, PyObject *); +static int do_raise(PyObject *, PyObject *); static int unpack_iterable(PyObject *, int, int, PyObject **); /* Records whether tracing is on for any thread. Counts the number of @@ -798,12 +797,6 @@ PyEval_EvalFrameEx(PyFrameObject f, int register int opcode; / Current opcode / register int oparg; / Current opcode argument, if any / register enum why_code why; / Reason for block stack unwind */
- register int err; /* Error status -- nonzero if error */
- register PyObject x; / Result object -- NULL if error */
- register PyObject v; / Temporary objects popped off stack */
- register PyObject *w;
- register PyObject *u;
- register PyObject *t; register PyObject **fastlocals, **freevars; PyObject retval = NULL; / Return value */ PyThreadState *tstate = PyThreadState_GET(); @@ -1206,14 +1199,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int
- if (throwflag) { /* support for generator.throw() */
why = WHY_EXCEPTION;[](#l1.42)
goto on_error;[](#l1.43)
- }
for (;;) { #ifdef WITH_TSC @@ -1255,10 +1243,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int ticked = 1; #endif if (_Py_atomic_load_relaxed(&pendingcalls_to_do)) {
if (Py_MakePendingCalls() < 0) {[](#l1.55)
why = WHY_EXCEPTION;[](#l1.56)
goto on_error;[](#l1.57)
}[](#l1.58)
if (Py_MakePendingCalls() < 0)[](#l1.59)
goto error;[](#l1.60) }[](#l1.61)
#ifdef WITH_THREAD if (_Py_atomic_load_relaxed(&gil_drop_request)) { @@ -1276,13 +1262,12 @@ PyEval_EvalFrameEx(PyFrameObject f, int #endif / Check for asynchronous exceptions. */ if (tstate->async_exc != NULL) {
x = tstate->async_exc;[](#l1.68)
PyObject *exc = tstate->async_exc;[](#l1.69) tstate->async_exc = NULL;[](#l1.70) UNSIGNAL_ASYNC_EXC();[](#l1.71)
PyErr_SetNone(x);[](#l1.72)
Py_DECREF(x);[](#l1.73)
why = WHY_EXCEPTION;[](#l1.74)
goto on_error;[](#l1.75)
PyErr_SetNone(exc);[](#l1.76)
Py_DECREF(exc);[](#l1.77)
goto error;[](#l1.78) }[](#l1.79) }[](#l1.80)
@@ -1293,6 +1278,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int if (_Py_TracingPossible && tstate->c_tracefunc != NULL && !tstate->tracing) {
int err;[](#l1.86) /* see maybe_call_line_trace[](#l1.87) for expository comments */[](#l1.88) f->f_stacktop = stack_pointer;[](#l1.89)
@@ -1307,10 +1293,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int stack_pointer = f->f_stacktop; f->f_stacktop = NULL; }
if (err) {[](#l1.94)
if (err)[](#l1.95) /* trace function raised an exception */[](#l1.96)
goto on_error;[](#l1.97)
}[](#l1.98)
goto error;[](#l1.99) }[](#l1.100)
/* Extract opcode and argument */ @@ -1357,87 +1342,99 @@ PyEval_EvalFrameEx(PyFrameObject *f, int TARGET(NOP) FAST_DISPATCH();
TARGET(LOAD_FAST)[](#l1.107)
x = GETLOCAL(oparg);[](#l1.108)
if (x != NULL) {[](#l1.109)
Py_INCREF(x);[](#l1.110)
PUSH(x);[](#l1.111)
FAST_DISPATCH();[](#l1.112)
TARGET(LOAD_FAST) {[](#l1.113)
PyObject *value = GETLOCAL(oparg);[](#l1.114)
if (value == NULL) {[](#l1.115)
format_exc_check_arg(PyExc_UnboundLocalError,[](#l1.116)
UNBOUNDLOCAL_ERROR_MSG,[](#l1.117)
PyTuple_GetItem(co->co_varnames, oparg));[](#l1.118)
goto error;[](#l1.119) }[](#l1.120)
format_exc_check_arg(PyExc_UnboundLocalError,[](#l1.121)
UNBOUNDLOCAL_ERROR_MSG,[](#l1.122)
PyTuple_GetItem(co->co_varnames, oparg));[](#l1.123)
break;[](#l1.124)
TARGET(LOAD_CONST)[](#l1.126)
x = GETITEM(consts, oparg);[](#l1.127)
Py_INCREF(x);[](#l1.128)
PUSH(x);[](#l1.129)
Py_INCREF(value);[](#l1.130)
PUSH(value);[](#l1.131) FAST_DISPATCH();[](#l1.132)
}[](#l1.133)
TARGET(LOAD_CONST) {[](#l1.135)
PyObject *value = GETITEM(consts, oparg);[](#l1.136)
Py_INCREF(value);[](#l1.137)
PUSH(value);[](#l1.138)
FAST_DISPATCH();[](#l1.139)
}[](#l1.140)
PREDICTED_WITH_ARG(STORE_FAST);
TARGET(STORE_FAST)[](#l1.143)
v = POP();[](#l1.144)
SETLOCAL(oparg, v);[](#l1.145)
TARGET(STORE_FAST) {[](#l1.146)
PyObject *value = POP();[](#l1.147)
SETLOCAL(oparg, value);[](#l1.148) FAST_DISPATCH();[](#l1.149)
TARGET(POP_TOP)[](#l1.151)
v = POP();[](#l1.152)
Py_DECREF(v);[](#l1.153)
}[](#l1.154)
TARGET(POP_TOP) {[](#l1.156)
PyObject *value = POP();[](#l1.157)
Py_DECREF(value);[](#l1.158) FAST_DISPATCH();[](#l1.159)
TARGET(ROT_TWO)[](#l1.161)
v = TOP();[](#l1.162)
w = SECOND();[](#l1.163)
SET_TOP(w);[](#l1.164)
SET_SECOND(v);[](#l1.165)
}[](#l1.166)
TARGET(ROT_TWO) {[](#l1.168)
PyObject *top = TOP();[](#l1.169)
PyObject *second = SECOND();[](#l1.170)
SET_TOP(second);[](#l1.171)
SET_SECOND(top);[](#l1.172) FAST_DISPATCH();[](#l1.173)
TARGET(ROT_THREE)[](#l1.175)
v = TOP();[](#l1.176)
w = SECOND();[](#l1.177)
x = THIRD();[](#l1.178)
SET_TOP(w);[](#l1.179)
SET_SECOND(x);[](#l1.180)
SET_THIRD(v);[](#l1.181)
}[](#l1.182)
TARGET(ROT_THREE) {[](#l1.184)
PyObject *top = TOP();[](#l1.185)
PyObject *second = SECOND();[](#l1.186)
PyObject *third = THIRD();[](#l1.187)
SET_TOP(second);[](#l1.188)
SET_SECOND(third);[](#l1.189)
SET_THIRD(top);[](#l1.190) FAST_DISPATCH();[](#l1.191)
TARGET(DUP_TOP)[](#l1.193)
v = TOP();[](#l1.194)
Py_INCREF(v);[](#l1.195)
PUSH(v);[](#l1.196)
}[](#l1.197)
TARGET(DUP_TOP) {[](#l1.199)
PyObject *top = TOP();[](#l1.200)
Py_INCREF(top);[](#l1.201)
PUSH(top);[](#l1.202) FAST_DISPATCH();[](#l1.203)
TARGET(DUP_TOP_TWO)[](#l1.205)
x = TOP();[](#l1.206)
Py_INCREF(x);[](#l1.207)
w = SECOND();[](#l1.208)
Py_INCREF(w);[](#l1.209)
}[](#l1.210)
TARGET(DUP_TOP_TWO) {[](#l1.212)
PyObject *top = TOP();[](#l1.213)
Py_INCREF(top);[](#l1.214)
PyObject *second = SECOND();[](#l1.215)
Py_INCREF(second);[](#l1.216) STACKADJ(2);[](#l1.217)
SET_TOP(x);[](#l1.218)
SET_SECOND(w);[](#l1.219)
SET_TOP(top);[](#l1.220)
SET_SECOND(second);[](#l1.221) FAST_DISPATCH();[](#l1.222)
TARGET(UNARY_POSITIVE)[](#l1.224)
v = TOP();[](#l1.225)
x = PyNumber_Positive(v);[](#l1.226)
Py_DECREF(v);[](#l1.227)
SET_TOP(x);[](#l1.228)
if (x != NULL) DISPATCH();[](#l1.229)
break;[](#l1.230)
TARGET(UNARY_NEGATIVE)[](#l1.232)
v = TOP();[](#l1.233)
x = PyNumber_Negative(v);[](#l1.234)
Py_DECREF(v);[](#l1.235)
SET_TOP(x);[](#l1.236)
if (x != NULL) DISPATCH();[](#l1.237)
break;[](#l1.238)
TARGET(UNARY_NOT)[](#l1.240)
v = TOP();[](#l1.241)
err = PyObject_IsTrue(v);[](#l1.242)
Py_DECREF(v);[](#l1.243)
}[](#l1.244)
TARGET(UNARY_POSITIVE) {[](#l1.246)
PyObject *value = TOP();[](#l1.247)
PyObject *res = PyNumber_Positive(value);[](#l1.248)
Py_DECREF(value);[](#l1.249)
SET_TOP(res);[](#l1.250)
if (res == NULL)[](#l1.251)
goto error;[](#l1.252)
DISPATCH();[](#l1.253)
}[](#l1.254)
TARGET(UNARY_NEGATIVE) {[](#l1.256)
PyObject *value = TOP();[](#l1.257)
PyObject *res = PyNumber_Negative(value);[](#l1.258)
Py_DECREF(value);[](#l1.259)
SET_TOP(res);[](#l1.260)
if (res == NULL)[](#l1.261)
goto error;[](#l1.262)
DISPATCH();[](#l1.263)
}[](#l1.264)
TARGET(UNARY_NOT) {[](#l1.266)
PyObject *value = TOP();[](#l1.267)
int err = PyObject_IsTrue(value);[](#l1.268)
Py_DECREF(value);[](#l1.269) if (err == 0) {[](#l1.270) Py_INCREF(Py_True);[](#l1.271) SET_TOP(Py_True);[](#l1.272)
@@ -1450,416 +1447,467 @@ PyEval_EvalFrameEx(PyFrameObject *f, int DISPATCH(); } STACKADJ(-1);
break;[](#l1.277)
TARGET(UNARY_INVERT)[](#l1.279)
v = TOP();[](#l1.280)
x = PyNumber_Invert(v);[](#l1.281)
Py_DECREF(v);[](#l1.282)
SET_TOP(x);[](#l1.283)
if (x != NULL) DISPATCH();[](#l1.284)
break;[](#l1.285)
TARGET(BINARY_POWER)[](#l1.287)
w = POP();[](#l1.288)
v = TOP();[](#l1.289)
x = PyNumber_Power(v, w, Py_None);[](#l1.290)
Py_DECREF(v);[](#l1.291)
Py_DECREF(w);[](#l1.292)
SET_TOP(x);[](#l1.293)
if (x != NULL) DISPATCH();[](#l1.294)
break;[](#l1.295)
TARGET(BINARY_MULTIPLY)[](#l1.297)
w = POP();[](#l1.298)
v = TOP();[](#l1.299)
x = PyNumber_Multiply(v, w);[](#l1.300)
Py_DECREF(v);[](#l1.301)
Py_DECREF(w);[](#l1.302)
SET_TOP(x);[](#l1.303)
if (x != NULL) DISPATCH();[](#l1.304)
break;[](#l1.305)
TARGET(BINARY_TRUE_DIVIDE)[](#l1.307)
w = POP();[](#l1.308)
v = TOP();[](#l1.309)
x = PyNumber_TrueDivide(v, w);[](#l1.310)
Py_DECREF(v);[](#l1.311)
Py_DECREF(w);[](#l1.312)
SET_TOP(x);[](#l1.313)
if (x != NULL) DISPATCH();[](#l1.314)
break;[](#l1.315)
TARGET(BINARY_FLOOR_DIVIDE)[](#l1.317)
w = POP();[](#l1.318)
v = TOP();[](#l1.319)
x = PyNumber_FloorDivide(v, w);[](#l1.320)
Py_DECREF(v);[](#l1.321)
Py_DECREF(w);[](#l1.322)
SET_TOP(x);[](#l1.323)
if (x != NULL) DISPATCH();[](#l1.324)
break;[](#l1.325)
TARGET(BINARY_MODULO)[](#l1.327)
w = POP();[](#l1.328)
v = TOP();[](#l1.329)
if (PyUnicode_CheckExact(v))[](#l1.330)
x = PyUnicode_Format(v, w);[](#l1.331)
else[](#l1.332)
x = PyNumber_Remainder(v, w);[](#l1.333)
Py_DECREF(v);[](#l1.334)
Py_DECREF(w);[](#l1.335)
SET_TOP(x);[](#l1.336)
if (x != NULL) DISPATCH();[](#l1.337)
break;[](#l1.338)
TARGET(BINARY_ADD)[](#l1.340)
w = POP();[](#l1.341)
v = TOP();[](#l1.342)
if (PyUnicode_CheckExact(v) &&[](#l1.343)
PyUnicode_CheckExact(w)) {[](#l1.344)
x = unicode_concatenate(v, w, f, next_instr);[](#l1.345)
goto error;[](#l1.346)
}[](#l1.347)
TARGET(UNARY_INVERT) {[](#l1.349)
PyObject *value = TOP();[](#l1.350)
PyObject *res = PyNumber_Invert(value);[](#l1.351)
Py_DECREF(value);[](#l1.352)
SET_TOP(res);[](#l1.353)
if (res == NULL)[](#l1.354)
goto error;[](#l1.355)
DISPATCH();[](#l1.356)
}[](#l1.357)
TARGET(BINARY_POWER) {[](#l1.359)
PyObject *exp = POP();[](#l1.360)
PyObject *base = TOP();[](#l1.361)
PyObject *res = PyNumber_Power(base, exp, Py_None);[](#l1.362)
Py_DECREF(base);[](#l1.363)
Py_DECREF(exp);[](#l1.364)
SET_TOP(res);[](#l1.365)
if (res == NULL)[](#l1.366)
goto error;[](#l1.367)
DISPATCH();[](#l1.368)
}[](#l1.369)
TARGET(BINARY_MULTIPLY) {[](#l1.371)
PyObject *right = POP();[](#l1.372)
PyObject *left = TOP();[](#l1.373)
PyObject *res = PyNumber_Multiply(left, right);[](#l1.374)
Py_DECREF(left);[](#l1.375)
Py_DECREF(right);[](#l1.376)
SET_TOP(res);[](#l1.377)
if (res == NULL)[](#l1.378)
goto error;[](#l1.379)
DISPATCH();[](#l1.380)
}[](#l1.381)
TARGET(BINARY_TRUE_DIVIDE) {[](#l1.383)
PyObject *divisor = POP();[](#l1.384)
PyObject *dividend = TOP();[](#l1.385)
PyObject *quotient = PyNumber_TrueDivide(dividend, divisor);[](#l1.386)
Py_DECREF(dividend);[](#l1.387)
Py_DECREF(divisor);[](#l1.388)
SET_TOP(quotient);[](#l1.389)
if (quotient == NULL)[](#l1.390)
goto error;[](#l1.391)
DISPATCH();[](#l1.392)
}[](#l1.393)
TARGET(BINARY_FLOOR_DIVIDE) {[](#l1.395)
PyObject *divisor = POP();[](#l1.396)
PyObject *dividend = TOP();[](#l1.397)
PyObject *quotient = PyNumber_FloorDivide(dividend, divisor);[](#l1.398)
Py_DECREF(dividend);[](#l1.399)
Py_DECREF(divisor);[](#l1.400)
SET_TOP(quotient);[](#l1.401)
if (quotient == NULL)[](#l1.402)
goto error;[](#l1.403)
DISPATCH();[](#l1.404)
}[](#l1.405)
TARGET(BINARY_MODULO) {[](#l1.407)
PyObject *divisor = POP();[](#l1.408)
PyObject *dividend = TOP();[](#l1.409)
PyObject *res = PyUnicode_CheckExact(dividend) ?[](#l1.410)
PyUnicode_Format(dividend, divisor) :[](#l1.411)
PyNumber_Remainder(dividend, divisor);[](#l1.412)
Py_DECREF(divisor);[](#l1.413)
Py_DECREF(dividend);[](#l1.414)
SET_TOP(res);[](#l1.415)
if (res == NULL)[](#l1.416)
goto error;[](#l1.417)
DISPATCH();[](#l1.418)
}[](#l1.419)
TARGET(BINARY_ADD) {[](#l1.421)
PyObject *right = POP();[](#l1.422)
PyObject *left = TOP();[](#l1.423)
PyObject *sum;[](#l1.424)
if (PyUnicode_CheckExact(left) &&[](#l1.425)
PyUnicode_CheckExact(right)) {[](#l1.426)
sum = unicode_concatenate(left, right, f, next_instr);[](#l1.427) /* unicode_concatenate consumed the ref to v */[](#l1.428)
goto skip_decref_vx;[](#l1.429) }[](#l1.430) else {[](#l1.431)
x = PyNumber_Add(v, w);[](#l1.432)
sum = PyNumber_Add(left, right);[](#l1.433)
Py_DECREF(left);[](#l1.434) }[](#l1.435)
Py_DECREF(v);[](#l1.436)
skip_decref_vx:[](#l1.437)
Py_DECREF(w);[](#l1.438)
SET_TOP(x);[](#l1.439)
if (x != NULL) DISPATCH();[](#l1.440)
break;[](#l1.441)
TARGET(BINARY_SUBTRACT)[](#l1.443)
w = POP();[](#l1.444)
v = TOP();[](#l1.445)
x = PyNumber_Subtract(v, w);[](#l1.446)
Py_DECREF(v);[](#l1.447)
Py_DECREF(w);[](#l1.448)
SET_TOP(x);[](#l1.449)
if (x != NULL) DISPATCH();[](#l1.450)
break;[](#l1.451)
TARGET(BINARY_SUBSCR)[](#l1.453)
w = POP();[](#l1.454)
v = TOP();[](#l1.455)
x = PyObject_GetItem(v, w);[](#l1.456)
Py_DECREF(v);[](#l1.457)
Py_DECREF(w);[](#l1.458)
SET_TOP(x);[](#l1.459)
if (x != NULL) DISPATCH();[](#l1.460)
break;[](#l1.461)
TARGET(BINARY_LSHIFT)[](#l1.463)
w = POP();[](#l1.464)
v = TOP();[](#l1.465)
x = PyNumber_Lshift(v, w);[](#l1.466)
Py_DECREF(v);[](#l1.467)
Py_DECREF(w);[](#l1.468)
SET_TOP(x);[](#l1.469)
if (x != NULL) DISPATCH();[](#l1.470)
break;[](#l1.471)
TARGET(BINARY_RSHIFT)[](#l1.473)
w = POP();[](#l1.474)
v = TOP();[](#l1.475)
x = PyNumber_Rshift(v, w);[](#l1.476)
Py_DECREF(v);[](#l1.477)
Py_DECREF(w);[](#l1.478)
SET_TOP(x);[](#l1.479)
if (x != NULL) DISPATCH();[](#l1.480)
break;[](#l1.481)
TARGET(BINARY_AND)[](#l1.483)
w = POP();[](#l1.484)
v = TOP();[](#l1.485)
x = PyNumber_And(v, w);[](#l1.486)
Py_DECREF(v);[](#l1.487)
Py_DECREF(w);[](#l1.488)
SET_TOP(x);[](#l1.489)
if (x != NULL) DISPATCH();[](#l1.490)
break;[](#l1.491)
TARGET(BINARY_XOR)[](#l1.493)
w = POP();[](#l1.494)
v = TOP();[](#l1.495)
x = PyNumber_Xor(v, w);[](#l1.496)
Py_DECREF(v);[](#l1.497)
Py_DECREF(w);[](#l1.498)
SET_TOP(x);[](#l1.499)
if (x != NULL) DISPATCH();[](#l1.500)
break;[](#l1.501)
TARGET(BINARY_OR)[](#l1.503)
w = POP();[](#l1.504)
v = TOP();[](#l1.505)
x = PyNumber_Or(v, w);[](#l1.506)
Py_DECREF(right);[](#l1.507)
SET_TOP(sum);[](#l1.508)
if (sum == NULL)[](#l1.509)
goto error;[](#l1.510)
DISPATCH();[](#l1.511)
}[](#l1.512)
TARGET(BINARY_SUBTRACT) {[](#l1.514)
PyObject *right = POP();[](#l1.515)
PyObject *left = TOP();[](#l1.516)
PyObject *diff = PyNumber_Subtract(left, right);[](#l1.517)
Py_DECREF(right);[](#l1.518)
Py_DECREF(left);[](#l1.519)
SET_TOP(diff);[](#l1.520)
if (diff == NULL)[](#l1.521)
goto error;[](#l1.522)
DISPATCH();[](#l1.523)
}[](#l1.524)
TARGET(BINARY_SUBSCR) {[](#l1.526)
PyObject *sub = POP();[](#l1.527)
PyObject *container = TOP();[](#l1.528)
PyObject *res = PyObject_GetItem(container, sub);[](#l1.529)
Py_DECREF(container);[](#l1.530)
Py_DECREF(sub);[](#l1.531)
SET_TOP(res);[](#l1.532)
if (res == NULL)[](#l1.533)
goto error;[](#l1.534)
DISPATCH();[](#l1.535)
}[](#l1.536)
TARGET(BINARY_LSHIFT) {[](#l1.538)
PyObject *right = POP();[](#l1.539)
PyObject *left = TOP();[](#l1.540)
PyObject *res = PyNumber_Lshift(left, right);[](#l1.541)
Py_DECREF(left);[](#l1.542)
Py_DECREF(right);[](#l1.543)
SET_TOP(res);[](#l1.544)
if (res == NULL)[](#l1.545)
goto error;[](#l1.546)
DISPATCH();[](#l1.547)
}[](#l1.548)
TARGET(BINARY_RSHIFT) {[](#l1.550)
PyObject *right = POP();[](#l1.551)
PyObject *left = TOP();[](#l1.552)
PyObject *res = PyNumber_Rshift(left, right);[](#l1.553)
Py_DECREF(left);[](#l1.554)
Py_DECREF(right);[](#l1.555)
SET_TOP(res);[](#l1.556)
if (res == NULL)[](#l1.557)
goto error;[](#l1.558)
DISPATCH();[](#l1.559)
}[](#l1.560)
TARGET(BINARY_AND) {[](#l1.562)
PyObject *right = POP();[](#l1.563)
PyObject *left = TOP();[](#l1.564)
PyObject *res = PyNumber_And(left, right);[](#l1.565)
Py_DECREF(left);[](#l1.566)
Py_DECREF(right);[](#l1.567)
SET_TOP(res);[](#l1.568)
if (res == NULL)[](#l1.569)
goto error;[](#l1.570)
DISPATCH();[](#l1.571)
}[](#l1.572)
TARGET(BINARY_XOR) {[](#l1.574)
PyObject *right = POP();[](#l1.575)
PyObject *left = TOP();[](#l1.576)
PyObject *res = PyNumber_Xor(left, right);[](#l1.577)
Py_DECREF(left);[](#l1.578)
Py_DECREF(right);[](#l1.579)
SET_TOP(res);[](#l1.580)
if (res == NULL)[](#l1.581)
goto error;[](#l1.582)
DISPATCH();[](#l1.583)
}[](#l1.584)
TARGET(BINARY_OR) {[](#l1.586)
PyObject *right = POP();[](#l1.587)
PyObject *left = TOP();[](#l1.588)
PyObject *res = PyNumber_Or(left, right);[](#l1.589)
Py_DECREF(left);[](#l1.590)
Py_DECREF(right);[](#l1.591)
SET_TOP(res);[](#l1.592)
if (res == NULL)[](#l1.593)
goto error;[](#l1.594)
DISPATCH();[](#l1.595)
}[](#l1.596)
TARGET(LIST_APPEND) {[](#l1.598)
PyObject *v = POP();[](#l1.599)
PyObject *list = PEEK(oparg);[](#l1.600)
int err;[](#l1.601)
err = PyList_Append(list, v);[](#l1.602) Py_DECREF(v);[](#l1.603)
Py_DECREF(w);[](#l1.604)
SET_TOP(x);[](#l1.605)
if (x != NULL) DISPATCH();[](#l1.606)
break;[](#l1.607)
TARGET(LIST_APPEND)[](#l1.609)
w = POP();[](#l1.610)
v = PEEK(oparg);[](#l1.611)
err = PyList_Append(v, w);[](#l1.612)
Py_DECREF(w);[](#l1.613)
if (err == 0) {[](#l1.614)
PREDICT(JUMP_ABSOLUTE);[](#l1.615)
DISPATCH();[](#l1.616)
}[](#l1.617)
break;[](#l1.618)
TARGET(SET_ADD)[](#l1.620)
w = POP();[](#l1.621)
v = stack_pointer[-oparg];[](#l1.622)
err = PySet_Add(v, w);[](#l1.623)
Py_DECREF(w);[](#l1.624)
if (err == 0) {[](#l1.625)
PREDICT(JUMP_ABSOLUTE);[](#l1.626)
DISPATCH();[](#l1.627)
}[](#l1.628)
break;[](#l1.629)
TARGET(INPLACE_POWER)[](#l1.631)
w = POP();[](#l1.632)
v = TOP();[](#l1.633)
x = PyNumber_InPlacePower(v, w, Py_None);[](#l1.634)
Py_DECREF(v);[](#l1.635)
Py_DECREF(w);[](#l1.636)
SET_TOP(x);[](#l1.637)
if (x != NULL) DISPATCH();[](#l1.638)
break;[](#l1.639)
TARGET(INPLACE_MULTIPLY)[](#l1.641)
w = POP();[](#l1.642)
v = TOP();[](#l1.643)
x = PyNumber_InPlaceMultiply(v, w);[](#l1.644)
if (err != 0)[](#l1.645)
goto error;[](#l1.646)
PREDICT(JUMP_ABSOLUTE);[](#l1.647)
DISPATCH();[](#l1.648)
}[](#l1.649)
TARGET(SET_ADD) {[](#l1.651)
PyObject *v = POP();[](#l1.652)
PyObject *set = stack_pointer[-oparg];[](#l1.653)
int err;[](#l1.654)
err = PySet_Add(set, v);[](#l1.655) Py_DECREF(v);[](#l1.656)
Py_DECREF(w);[](#l1.657)
SET_TOP(x);[](#l1.658)
if (x != NULL) DISPATCH();[](#l1.659)
break;[](#l1.660)
TARGET(INPLACE_TRUE_DIVIDE)[](#l1.662)
w = POP();[](#l1.663)
v = TOP();[](#l1.664)
x = PyNumber_InPlaceTrueDivide(v, w);[](#l1.665)
Py_DECREF(v);[](#l1.666)
Py_DECREF(w);[](#l1.667)
SET_TOP(x);[](#l1.668)
if (x != NULL) DISPATCH();[](#l1.669)
break;[](#l1.670)
TARGET(INPLACE_FLOOR_DIVIDE)[](#l1.672)
w = POP();[](#l1.673)
v = TOP();[](#l1.674)
x = PyNumber_InPlaceFloorDivide(v, w);[](#l1.675)
Py_DECREF(v);[](#l1.676)
Py_DECREF(w);[](#l1.677)
SET_TOP(x);[](#l1.678)
if (x != NULL) DISPATCH();[](#l1.679)
break;[](#l1.680)
TARGET(INPLACE_MODULO)[](#l1.682)
w = POP();[](#l1.683)
v = TOP();[](#l1.684)
x = PyNumber_InPlaceRemainder(v, w);[](#l1.685)
Py_DECREF(v);[](#l1.686)
Py_DECREF(w);[](#l1.687)
SET_TOP(x);[](#l1.688)
if (x != NULL) DISPATCH();[](#l1.689)
break;[](#l1.690)
TARGET(INPLACE_ADD)[](#l1.692)
w = POP();[](#l1.693)
v = TOP();[](#l1.694)
if (PyUnicode_CheckExact(v) &&[](#l1.695)
PyUnicode_CheckExact(w)) {[](#l1.696)
x = unicode_concatenate(v, w, f, next_instr);[](#l1.697)
if (err != 0)[](#l1.698)
goto error;[](#l1.699)
PREDICT(JUMP_ABSOLUTE);[](#l1.700)
DISPATCH();[](#l1.701)
}[](#l1.702)
TARGET(INPLACE_POWER) {[](#l1.704)
PyObject *exp = POP();[](#l1.705)
PyObject *base = TOP();[](#l1.706)
PyObject *res = PyNumber_InPlacePower(base, exp, Py_None);[](#l1.707)
Py_DECREF(base);[](#l1.708)
Py_DECREF(exp);[](#l1.709)
SET_TOP(res);[](#l1.710)
if (res == NULL)[](#l1.711)
goto error;[](#l1.712)
DISPATCH();[](#l1.713)
}[](#l1.714)
TARGET(INPLACE_MULTIPLY) {[](#l1.716)
PyObject *right = POP();[](#l1.717)
PyObject *left = TOP();[](#l1.718)
PyObject *res = PyNumber_InPlaceMultiply(left, right);[](#l1.719)
Py_DECREF(left);[](#l1.720)
Py_DECREF(right);[](#l1.721)
SET_TOP(res);[](#l1.722)
if (res == NULL)[](#l1.723)
goto error;[](#l1.724)
DISPATCH();[](#l1.725)
}[](#l1.726)
TARGET(INPLACE_TRUE_DIVIDE) {[](#l1.728)
PyObject *divisor = POP();[](#l1.729)
PyObject *dividend = TOP();[](#l1.730)
PyObject *quotient = PyNumber_InPlaceTrueDivide(dividend, divisor);[](#l1.731)
Py_DECREF(dividend);[](#l1.732)
Py_DECREF(divisor);[](#l1.733)
SET_TOP(quotient);[](#l1.734)
if (quotient == NULL)[](#l1.735)
goto error;[](#l1.736)
DISPATCH();[](#l1.737)
}[](#l1.738)
TARGET(INPLACE_FLOOR_DIVIDE) {[](#l1.740)
PyObject *divisor = POP();[](#l1.741)
PyObject *dividend = TOP();[](#l1.742)
PyObject *quotient = PyNumber_InPlaceFloorDivide(dividend, divisor);[](#l1.743)
Py_DECREF(dividend);[](#l1.744)
Py_DECREF(divisor);[](#l1.745)
SET_TOP(quotient);[](#l1.746)
if (quotient == NULL)[](#l1.747)
goto error;[](#l1.748)
DISPATCH();[](#l1.749)
}[](#l1.750)
TARGET(INPLACE_MODULO) {[](#l1.752)
PyObject *right = POP();[](#l1.753)
PyObject *left = TOP();[](#l1.754)
PyObject *mod = PyNumber_InPlaceRemainder(left, right);[](#l1.755)
Py_DECREF(left);[](#l1.756)
Py_DECREF(right);[](#l1.757)
SET_TOP(mod);[](#l1.758)
if (mod == NULL)[](#l1.759)
goto error;[](#l1.760)
DISPATCH();[](#l1.761)
}[](#l1.762)
TARGET(INPLACE_ADD) {[](#l1.764)
PyObject *right = POP();[](#l1.765)
PyObject *left = TOP();[](#l1.766)
PyObject *sum;[](#l1.767)
if (PyUnicode_CheckExact(left) && PyUnicode_CheckExact(right)) {[](#l1.768)
sum = unicode_concatenate(left, right, f, next_instr);[](#l1.769) /* unicode_concatenate consumed the ref to v */[](#l1.770)
goto skip_decref_v;[](#l1.771) }[](#l1.772) else {[](#l1.773)
x = PyNumber_InPlaceAdd(v, w);[](#l1.774)
sum = PyNumber_InPlaceAdd(left, right);[](#l1.775)
Py_DECREF(left);[](#l1.776) }[](#l1.777)
Py_DECREF(v);[](#l1.778)
skip_decref_v:[](#l1.779)
Py_DECREF(w);[](#l1.780)
SET_TOP(x);[](#l1.781)
if (x != NULL) DISPATCH();[](#l1.782)
break;[](#l1.783)
TARGET(INPLACE_SUBTRACT)[](#l1.785)
w = POP();[](#l1.786)
v = TOP();[](#l1.787)
x = PyNumber_InPlaceSubtract(v, w);[](#l1.788)
Py_DECREF(v);[](#l1.789)
Py_DECREF(w);[](#l1.790)
SET_TOP(x);[](#l1.791)
if (x != NULL) DISPATCH();[](#l1.792)
break;[](#l1.793)
TARGET(INPLACE_LSHIFT)[](#l1.795)
w = POP();[](#l1.796)
v = TOP();[](#l1.797)
x = PyNumber_InPlaceLshift(v, w);[](#l1.798)
Py_DECREF(v);[](#l1.799)
Py_DECREF(w);[](#l1.800)
SET_TOP(x);[](#l1.801)
if (x != NULL) DISPATCH();[](#l1.802)
break;[](#l1.803)
TARGET(INPLACE_RSHIFT)[](#l1.805)
w = POP();[](#l1.806)
v = TOP();[](#l1.807)
x = PyNumber_InPlaceRshift(v, w);[](#l1.808)
Py_DECREF(v);[](#l1.809)
Py_DECREF(w);[](#l1.810)
SET_TOP(x);[](#l1.811)
if (x != NULL) DISPATCH();[](#l1.812)
break;[](#l1.813)
TARGET(INPLACE_AND)[](#l1.815)
w = POP();[](#l1.816)
v = TOP();[](#l1.817)
x = PyNumber_InPlaceAnd(v, w);[](#l1.818)
Py_DECREF(v);[](#l1.819)
Py_DECREF(w);[](#l1.820)
SET_TOP(x);[](#l1.821)
if (x != NULL) DISPATCH();[](#l1.822)
break;[](#l1.823)
TARGET(INPLACE_XOR)[](#l1.825)
w = POP();[](#l1.826)
v = TOP();[](#l1.827)
x = PyNumber_InPlaceXor(v, w);[](#l1.828)
Py_DECREF(v);[](#l1.829)
Py_DECREF(w);[](#l1.830)
SET_TOP(x);[](#l1.831)
if (x != NULL) DISPATCH();[](#l1.832)
break;[](#l1.833)
TARGET(INPLACE_OR)[](#l1.835)
w = POP();[](#l1.836)
v = TOP();[](#l1.837)
x = PyNumber_InPlaceOr(v, w);[](#l1.838)
Py_DECREF(v);[](#l1.839)
Py_DECREF(w);[](#l1.840)
SET_TOP(x);[](#l1.841)
if (x != NULL) DISPATCH();[](#l1.842)
break;[](#l1.843)
TARGET(STORE_SUBSCR)[](#l1.845)
w = TOP();[](#l1.846)
v = SECOND();[](#l1.847)
u = THIRD();[](#l1.848)
Py_DECREF(right);[](#l1.849)
SET_TOP(sum);[](#l1.850)
if (sum == NULL)[](#l1.851)
goto error;[](#l1.852)
DISPATCH();[](#l1.853)
}[](#l1.854)
TARGET(INPLACE_SUBTRACT) {[](#l1.856)
PyObject *right = POP();[](#l1.857)
PyObject *left = TOP();[](#l1.858)
PyObject *diff = PyNumber_InPlaceSubtract(left, right);[](#l1.859)
Py_DECREF(left);[](#l1.860)
Py_DECREF(right);[](#l1.861)
SET_TOP(diff);[](#l1.862)
if (diff == NULL)[](#l1.863)
goto error;[](#l1.864)
DISPATCH();[](#l1.865)
}[](#l1.866)
TARGET(INPLACE_LSHIFT) {[](#l1.868)
PyObject *right = POP();[](#l1.869)
PyObject *left = TOP();[](#l1.870)
PyObject *res = PyNumber_InPlaceLshift(left, right);[](#l1.871)
Py_DECREF(left);[](#l1.872)
Py_DECREF(right);[](#l1.873)
SET_TOP(res);[](#l1.874)
if (res == NULL)[](#l1.875)
goto error;[](#l1.876)
DISPATCH();[](#l1.877)
}[](#l1.878)
TARGET(INPLACE_RSHIFT) {[](#l1.880)
PyObject *right = POP();[](#l1.881)
PyObject *left = TOP();[](#l1.882)
PyObject *res = PyNumber_InPlaceRshift(left, right);[](#l1.883)
Py_DECREF(left);[](#l1.884)
Py_DECREF(right);[](#l1.885)
SET_TOP(res);[](#l1.886)
if (res == NULL)[](#l1.887)
goto error;[](#l1.888)
DISPATCH();[](#l1.889)
}[](#l1.890)
TARGET(INPLACE_AND) {[](#l1.892)
PyObject *right = POP();[](#l1.893)
PyObject *left = TOP();[](#l1.894)
PyObject *res = PyNumber_InPlaceAnd(left, right);[](#l1.895)
Py_DECREF(left);[](#l1.896)
Py_DECREF(right);[](#l1.897)
SET_TOP(res);[](#l1.898)
if (res == NULL)[](#l1.899)
goto error;[](#l1.900)
DISPATCH();[](#l1.901)
}[](#l1.902)
TARGET(INPLACE_XOR) {[](#l1.904)
PyObject *right = POP();[](#l1.905)
PyObject *left = TOP();[](#l1.906)
PyObject *res = PyNumber_InPlaceXor(left, right);[](#l1.907)
Py_DECREF(left);[](#l1.908)
Py_DECREF(right);[](#l1.909)
SET_TOP(res);[](#l1.910)
if (res == NULL)[](#l1.911)
goto error;[](#l1.912)
DISPATCH();[](#l1.913)
}[](#l1.914)
TARGET(INPLACE_OR) {[](#l1.916)
PyObject *right = POP();[](#l1.917)
PyObject *left = TOP();[](#l1.918)
PyObject *res = PyNumber_InPlaceOr(left, right);[](#l1.919)
Py_DECREF(left);[](#l1.920)
Py_DECREF(right);[](#l1.921)
SET_TOP(res);[](#l1.922)
if (res == NULL)[](#l1.923)
goto error;[](#l1.924)
DISPATCH();[](#l1.925)
}[](#l1.926)
TARGET(STORE_SUBSCR) {[](#l1.928)
PyObject *sub = TOP();[](#l1.929)
PyObject *container = SECOND();[](#l1.930)
PyObject *v = THIRD();[](#l1.931)
int err;[](#l1.932) STACKADJ(-3);[](#l1.933) /* v[w] = u */[](#l1.934)
err = PyObject_SetItem(v, w, u);[](#l1.935)
Py_DECREF(u);[](#l1.936)
err = PyObject_SetItem(container, sub, v);[](#l1.937) Py_DECREF(v);[](#l1.938)
Py_DECREF(w);[](#l1.939)
if (err == 0) DISPATCH();[](#l1.940)
break;[](#l1.941)
TARGET(DELETE_SUBSCR)[](#l1.943)
w = TOP();[](#l1.944)
v = SECOND();[](#l1.945)
Py_DECREF(container);[](#l1.946)
Py_DECREF(sub);[](#l1.947)
if (err != 0)[](#l1.948)
goto error;[](#l1.949)
DISPATCH();[](#l1.950)
}[](#l1.951)
TARGET(DELETE_SUBSCR) {[](#l1.953)
PyObject *sub = TOP();[](#l1.954)
PyObject *container = SECOND();[](#l1.955)
int err;[](#l1.956) STACKADJ(-2);[](#l1.957) /* del v[w] */[](#l1.958)
err = PyObject_DelItem(v, w);[](#l1.959)
Py_DECREF(v);[](#l1.960)
Py_DECREF(w);[](#l1.961)
if (err == 0) DISPATCH();[](#l1.962)
break;[](#l1.963)
TARGET(PRINT_EXPR)[](#l1.965)
v = POP();[](#l1.966)
w = PySys_GetObject("displayhook");[](#l1.967)
if (w == NULL) {[](#l1.968)
err = PyObject_DelItem(container, sub);[](#l1.969)
Py_DECREF(container);[](#l1.970)
Py_DECREF(sub);[](#l1.971)
if (err != 0)[](#l1.972)
goto error;[](#l1.973)
DISPATCH();[](#l1.974)
}[](#l1.975)
TARGET(PRINT_EXPR) {[](#l1.977)
PyObject *value = POP();[](#l1.978)
PyObject *hook = PySys_GetObject("displayhook");[](#l1.979)
if (hook == NULL) {[](#l1.980) PyErr_SetString(PyExc_RuntimeError,[](#l1.981) "lost sys.displayhook");[](#l1.982)
err = -1;[](#l1.983)
x = NULL;[](#l1.984)
}[](#l1.985)
if (err == 0) {[](#l1.986)
x = PyTuple_Pack(1, v);[](#l1.987)
if (x == NULL)[](#l1.988)
err = -1;[](#l1.989)
Py_DECREF(value);[](#l1.990)
goto error;[](#l1.991) }[](#l1.992)
if (err == 0) {[](#l1.993)
w = PyEval_CallObject(w, x);[](#l1.994)
Py_XDECREF(w);[](#l1.995)
if (w == NULL)[](#l1.996)
err = -1;[](#l1.997)
}[](#l1.998)
Py_DECREF(v);[](#l1.999)
Py_XDECREF(x);[](#l1.1000)
break;[](#l1.1001)
PyObject *res = PyObject_CallFunctionObjArgs(hook, value, NULL);[](#l1.1002)
Py_DECREF(value);[](#l1.1003)
if (res == NULL)[](#l1.1004)
goto error;[](#l1.1005)
Py_DECREF(res);[](#l1.1006)
DISPATCH();[](#l1.1007)
}[](#l1.1008)
#ifdef CASE_TOO_BIG default: switch (opcode) { #endif
TARGET(RAISE_VARARGS)[](#l1.1013)
v = w = NULL;[](#l1.1014)
TARGET(RAISE_VARARGS) {[](#l1.1015)
PyObject *cause = NULL, *exc = NULL;[](#l1.1016) switch (oparg) {[](#l1.1017) case 2:[](#l1.1018)
v = POP(); /* cause */[](#l1.1019)
cause = POP(); /* cause */[](#l1.1020) case 1:[](#l1.1021)
w = POP(); /* exc */[](#l1.1022)
exc = POP(); /* exc */[](#l1.1023) case 0: /* Fallthrough */[](#l1.1024)
why = do_raise(w, v);[](#l1.1025)
if (do_raise(exc, cause)) {[](#l1.1026)
why = WHY_EXCEPTION;[](#l1.1027)
goto fast_block_end;[](#l1.1028)
}[](#l1.1029) break;[](#l1.1030) default:[](#l1.1031) PyErr_SetString(PyExc_SystemError,[](#l1.1032) "bad RAISE_VARARGS oparg");[](#l1.1033)
why = WHY_EXCEPTION;[](#l1.1034) break;[](#l1.1035) }[](#l1.1036)
break;[](#l1.1037)
TARGET(STORE_LOCALS)[](#l1.1039)
x = POP();[](#l1.1040)
v = f->f_locals;[](#l1.1041)
Py_XDECREF(v);[](#l1.1042)
f->f_locals = x;[](#l1.1043)
goto error;[](#l1.1044)
}[](#l1.1045)
TARGET(STORE_LOCALS) {[](#l1.1047)
PyObject *locals = POP();[](#l1.1048)
PyObject *old = f->f_locals;[](#l1.1049)
Py_XDECREF(old);[](#l1.1050)
f->f_locals = locals;[](#l1.1051) DISPATCH();[](#l1.1052)
TARGET(RETURN_VALUE)[](#l1.1054)
}[](#l1.1055)
TARGET(RETURN_VALUE) {[](#l1.1057) retval = POP();[](#l1.1058) why = WHY_RETURN;[](#l1.1059) goto fast_block_end;[](#l1.1060)
TARGET(YIELD_FROM)[](#l1.1062)
u = POP();[](#l1.1063)
x = TOP();[](#l1.1064)
/* send u to x */[](#l1.1065)
if (PyGen_CheckExact(x)) {[](#l1.1066)
retval = _PyGen_Send((PyGenObject *)x, u);[](#l1.1067)
}[](#l1.1068)
TARGET(YIELD_FROM) {[](#l1.1070)
PyObject *v = POP();[](#l1.1071)
PyObject *reciever = TOP();[](#l1.1072)
int err;[](#l1.1073)
if (PyGen_CheckExact(reciever)) {[](#l1.1074)
retval = _PyGen_Send((PyGenObject *)reciever, v);[](#l1.1075) } else {[](#l1.1076) _Py_IDENTIFIER(send);[](#l1.1077)
if (u == Py_None)[](#l1.1078)
retval = Py_TYPE(x)->tp_iternext(x);[](#l1.1079)
if (v == Py_None)[](#l1.1080)
retval = Py_TYPE(reciever)->tp_iternext(reciever);[](#l1.1081) else[](#l1.1082)
retval = _PyObject_CallMethodId(x, &PyId_send, "O", u);[](#l1.1083)
retval = _PyObject_CallMethodId(reciever, &PyId_send, "O", v);[](#l1.1084) }[](#l1.1085)
Py_DECREF(u);[](#l1.1086)
if (!retval) {[](#l1.1087)
Py_DECREF(v);[](#l1.1088)
if (retval == NULL) {[](#l1.1089) PyObject *val;[](#l1.1090)
x = POP(); /* Remove iter from stack */[](#l1.1091)
Py_DECREF(x);[](#l1.1092) err = _PyGen_FetchStopIterationValue(&val);[](#l1.1093)
if (err < 0) {[](#l1.1094)
x = NULL;[](#l1.1095)
break;[](#l1.1096)
}[](#l1.1097)
x = val;[](#l1.1098)
PUSH(x);[](#l1.1099)
continue;[](#l1.1100)
if (err < 0)[](#l1.1101)
goto error;[](#l1.1102)
Py_DECREF(reciever);[](#l1.1103)
SET_TOP(val);[](#l1.1104)
DISPATCH();[](#l1.1105) }[](#l1.1106) /* x remains on stack, retval is value to be yielded */[](#l1.1107) f->f_stacktop = stack_pointer;[](#l1.1108)
@@ -1867,39 +1915,38 @@ PyEval_EvalFrameEx(PyFrameObject f, int / and repeat... */ f->f_lasti--; goto fast_yield; -
TARGET(YIELD_VALUE)[](#l1.1114)
}[](#l1.1115)
TARGET(YIELD_VALUE) {[](#l1.1117) retval = POP();[](#l1.1118) f->f_stacktop = stack_pointer;[](#l1.1119) why = WHY_YIELD;[](#l1.1120) goto fast_yield;[](#l1.1121)
TARGET(POP_EXCEPT)[](#l1.1123)
{[](#l1.1124)
PyTryBlock *b = PyFrame_BlockPop(f);[](#l1.1125)
if (b->b_type != EXCEPT_HANDLER) {[](#l1.1126)
PyErr_SetString(PyExc_SystemError,[](#l1.1127)
"popped block is not an except handler");[](#l1.1128)
why = WHY_EXCEPTION;[](#l1.1129)
break;[](#l1.1130)
}[](#l1.1131)
UNWIND_EXCEPT_HANDLER(b);[](#l1.1132)
}[](#l1.1133)
TARGET(POP_EXCEPT) {[](#l1.1135)
PyTryBlock *b = PyFrame_BlockPop(f);[](#l1.1136)
if (b->b_type != EXCEPT_HANDLER) {[](#l1.1137)
PyErr_SetString(PyExc_SystemError,[](#l1.1138)
"popped block is not an except handler");[](#l1.1139)
goto error;[](#l1.1140) }[](#l1.1141)
UNWIND_EXCEPT_HANDLER(b);[](#l1.1142) DISPATCH();[](#l1.1143)
TARGET(POP_BLOCK)[](#l1.1145)
{[](#l1.1146)
PyTryBlock *b = PyFrame_BlockPop(f);[](#l1.1147)
UNWIND_BLOCK(b);[](#l1.1148)
}[](#l1.1149)
}[](#l1.1150)
TARGET(POP_BLOCK) {[](#l1.1152)
PyTryBlock *b = PyFrame_BlockPop(f);[](#l1.1153)
UNWIND_BLOCK(b);[](#l1.1154) DISPATCH();[](#l1.1155)
}[](#l1.1156)
TARGET(END_FINALLY)[](#l1.1159)
v = POP();[](#l1.1160)
if (PyLong_Check(v)) {[](#l1.1161)
why = (enum why_code) PyLong_AS_LONG(v);[](#l1.1162)
assert(why != WHY_YIELD);[](#l1.1163)
TARGET(END_FINALLY) {[](#l1.1164)
PyObject *status = POP();[](#l1.1165)
if (PyLong_Check(status)) {[](#l1.1166)
why = (enum why_code) PyLong_AS_LONG(status);[](#l1.1167)
assert(why != WHY_YIELD && why != WHY_EXCEPTION);[](#l1.1168) if (why == WHY_RETURN ||[](#l1.1169) why == WHY_CONTINUE)[](#l1.1170) retval = POP();[](#l1.1171)
@@ -1912,255 +1959,281 @@ PyEval_EvalFrameEx(PyFrameObject *f, int assert(b->b_type == EXCEPT_HANDLER); UNWIND_EXCEPT_HANDLER(b); why = WHY_NOT;
Py_DECREF(status);[](#l1.1176)
DISPATCH();[](#l1.1177) }[](#l1.1178)
Py_DECREF(status);[](#l1.1179)
goto fast_block_end;[](#l1.1180) }[](#l1.1181)
else if (PyExceptionClass_Check(v)) {[](#l1.1182)
w = POP();[](#l1.1183)
u = POP();[](#l1.1184)
PyErr_Restore(v, w, u);[](#l1.1185)
why = WHY_RERAISE;[](#l1.1186)
break;[](#l1.1187)
else if (PyExceptionClass_Check(status)) {[](#l1.1188)
PyObject *exc = POP();[](#l1.1189)
PyObject *tb = POP();[](#l1.1190)
PyErr_Restore(status, exc, tb);[](#l1.1191)
why = WHY_EXCEPTION;[](#l1.1192)
goto fast_block_end;[](#l1.1193) }[](#l1.1194)
else if (v != Py_None) {[](#l1.1195)
else if (status != Py_None) {[](#l1.1196) PyErr_SetString(PyExc_SystemError,[](#l1.1197) "'finally' pops bad exception");[](#l1.1198)
why = WHY_EXCEPTION;[](#l1.1199)
Py_DECREF(status);[](#l1.1200)
goto error;[](#l1.1201) }[](#l1.1202)
Py_DECREF(v);[](#l1.1203)
break;[](#l1.1204)
TARGET(LOAD_BUILD_CLASS)[](#l1.1206)
{[](#l1.1207)
Py_DECREF(status);[](#l1.1208)
DISPATCH();[](#l1.1209)
}[](#l1.1210)
TARGET(LOAD_BUILD_CLASS) {[](#l1.1212) _Py_IDENTIFIER(__build_class__);[](#l1.1213)
PyObject *bc;[](#l1.1215) if (PyDict_CheckExact(f->f_builtins)) {[](#l1.1216)
x = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__);[](#l1.1217)
if (x == NULL) {[](#l1.1218)
bc = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__);[](#l1.1219)
if (bc == NULL) {[](#l1.1220) PyErr_SetString(PyExc_NameError,[](#l1.1221) "__build_class__ not found");[](#l1.1222)
break;[](#l1.1223)
goto error;[](#l1.1224) }[](#l1.1225)
Py_INCREF(x);[](#l1.1226)
Py_INCREF(bc);[](#l1.1227) }[](#l1.1228) else {[](#l1.1229) PyObject *build_class_str = _PyUnicode_FromId(&PyId___build_class__);[](#l1.1230) if (build_class_str == NULL)[](#l1.1231) break;[](#l1.1232)
x = PyObject_GetItem(f->f_builtins, build_class_str);[](#l1.1233)
if (x == NULL) {[](#l1.1234)
bc = PyObject_GetItem(f->f_builtins, build_class_str);[](#l1.1235)
if (bc == NULL) {[](#l1.1236) if (PyErr_ExceptionMatches(PyExc_KeyError))[](#l1.1237) PyErr_SetString(PyExc_NameError,[](#l1.1238) "__build_class__ not found");[](#l1.1239)
break;[](#l1.1240)
goto error;[](#l1.1241) }[](#l1.1242) }[](#l1.1243)
PUSH(x);[](#l1.1244)
PUSH(bc);[](#l1.1245)
DISPATCH();[](#l1.1246)
}[](#l1.1247)
TARGET(STORE_NAME) {[](#l1.1249)
PyObject *name = GETITEM(names, oparg);[](#l1.1250)
PyObject *v = POP();[](#l1.1251)
PyObject *ns = f->f_locals;[](#l1.1252)
int err;[](#l1.1253)
if (ns == NULL) {[](#l1.1254)
PyErr_Format(PyExc_SystemError,[](#l1.1255)
"no locals found when storing %R", name);[](#l1.1256)
Py_DECREF(v);[](#l1.1257)
goto error;[](#l1.1258)
}[](#l1.1259)
if (PyDict_CheckExact(ns))[](#l1.1260)
err = PyDict_SetItem(ns, name, v);[](#l1.1261)
else[](#l1.1262)
err = PyObject_SetItem(ns, name, v);[](#l1.1263)
Py_DECREF(v);[](#l1.1264)
if (err != 0)[](#l1.1265)
goto error;[](#l1.1266) DISPATCH();[](#l1.1267) }[](#l1.1268)
TARGET(STORE_NAME)[](#l1.1270)
w = GETITEM(names, oparg);[](#l1.1271)
v = POP();[](#l1.1272)
if ((x = f->f_locals) != NULL) {[](#l1.1273)
if (PyDict_CheckExact(x))[](#l1.1274)
err = PyDict_SetItem(x, w, v);[](#l1.1275)
else[](#l1.1276)
err = PyObject_SetItem(x, w, v);[](#l1.1277)
Py_DECREF(v);[](#l1.1278)
if (err == 0) DISPATCH();[](#l1.1279)
break;[](#l1.1280)
TARGET(DELETE_NAME) {[](#l1.1281)
PyObject *name = GETITEM(names, oparg);[](#l1.1282)
PyObject *ns = f->f_locals;[](#l1.1283)
int err;[](#l1.1284)
if (ns == NULL) {[](#l1.1285)
PyErr_Format(PyExc_SystemError,[](#l1.1286)
"no locals when deleting %R", name);[](#l1.1287)
goto error;[](#l1.1288) }[](#l1.1289)
PyErr_Format(PyExc_SystemError,[](#l1.1290)
"no locals found when storing %R", w);[](#l1.1291)
break;[](#l1.1292)
TARGET(DELETE_NAME)[](#l1.1294)
w = GETITEM(names, oparg);[](#l1.1295)
if ((x = f->f_locals) != NULL) {[](#l1.1296)
if ((err = PyObject_DelItem(x, w)) != 0) {[](#l1.1297)
format_exc_check_arg(PyExc_NameError,[](#l1.1298)
NAME_ERROR_MSG,[](#l1.1299)
w);[](#l1.1300)
break;[](#l1.1301)
}[](#l1.1302)
DISPATCH();[](#l1.1303)
err = PyObject_DelItem(ns, name);[](#l1.1304)
if (err != 0) {[](#l1.1305)
format_exc_check_arg(PyExc_NameError,[](#l1.1306)
NAME_ERROR_MSG,[](#l1.1307)
name);[](#l1.1308)
goto error;[](#l1.1309) }[](#l1.1310)
PyErr_Format(PyExc_SystemError,[](#l1.1311)
"no locals when deleting %R", w);[](#l1.1312)
break;[](#l1.1313)
DISPATCH();[](#l1.1314)
}[](#l1.1315)
PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
TARGET(UNPACK_SEQUENCE)[](#l1.1318)
v = POP();[](#l1.1319)
if (PyTuple_CheckExact(v) &&[](#l1.1320)
PyTuple_GET_SIZE(v) == oparg) {[](#l1.1321)
PyObject **items = \[](#l1.1322)
((PyTupleObject *)v)->ob_item;[](#l1.1323)
TARGET(UNPACK_SEQUENCE) {[](#l1.1324)
PyObject *seq = POP(), *item, **items;[](#l1.1325)
if (PyTuple_CheckExact(seq) &&[](#l1.1326)
PyTuple_GET_SIZE(seq) == oparg) {[](#l1.1327)
items = ((PyTupleObject *)seq)->ob_item;[](#l1.1328) while (oparg--) {[](#l1.1329)
w = items[oparg];[](#l1.1330)
Py_INCREF(w);[](#l1.1331)
PUSH(w);[](#l1.1332)
item = items[oparg];[](#l1.1333)
Py_INCREF(item);[](#l1.1334)
PUSH(item);[](#l1.1335) }[](#l1.1336)
} else if (PyList_CheckExact(v) &&[](#l1.1337)
PyList_GET_SIZE(v) == oparg) {[](#l1.1338)
PyObject **items = \[](#l1.1339)
((PyListObject *)v)->ob_item;[](#l1.1340)
} else if (PyList_CheckExact(seq) &&[](#l1.1341)
PyList_GET_SIZE(seq) == oparg) {[](#l1.1342)
items = ((PyListObject *)seq)->ob_item;[](#l1.1343) while (oparg--) {[](#l1.1344)
w = items[oparg];[](#l1.1345)
Py_INCREF(w);[](#l1.1346)
PUSH(w);[](#l1.1347)
item = items[oparg];[](#l1.1348)
Py_INCREF(item);[](#l1.1349)
PUSH(item);[](#l1.1350) }[](#l1.1351)
} else if (unpack_iterable(v, oparg, -1,[](#l1.1352)
} else if (unpack_iterable(seq, oparg, -1,[](#l1.1353) stack_pointer + oparg)) {[](#l1.1354) STACKADJ(oparg);[](#l1.1355) } else {[](#l1.1356) /* unpack_iterable() raised an exception */[](#l1.1357)
why = WHY_EXCEPTION;[](#l1.1358)
Py_DECREF(v);[](#l1.1359)
break;[](#l1.1360)
Py_DECREF(seq);[](#l1.1361)
goto error;[](#l1.1362) }[](#l1.1363)
Py_DECREF(v);[](#l1.1364)
Py_DECREF(seq);[](#l1.1365) DISPATCH();[](#l1.1366)
TARGET(UNPACK_EX)[](#l1.1368)
{[](#l1.1369)
}[](#l1.1370)
TARGET(UNPACK_EX) {[](#l1.1372) int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8);[](#l1.1373)
v = POP();[](#l1.1374)
if (unpack_iterable(v, oparg & 0xFF, oparg >> 8,[](#l1.1376)
PyObject *seq = POP();[](#l1.1377)
if (unpack_iterable(seq, oparg & 0xFF, oparg >> 8,[](#l1.1379) stack_pointer + totalargs)) {[](#l1.1380) stack_pointer += totalargs;[](#l1.1381) } else {[](#l1.1382)
Py_DECREF(v);[](#l1.1383)
why = WHY_EXCEPTION;[](#l1.1384)
break;[](#l1.1385)
Py_DECREF(seq);[](#l1.1386)
goto error;[](#l1.1387) }[](#l1.1388)
Py_DECREF(seq);[](#l1.1389)
DISPATCH();[](#l1.1390)
}[](#l1.1391)
TARGET(STORE_ATTR) {[](#l1.1393)
PyObject *name = GETITEM(names, oparg);[](#l1.1394)
PyObject *owner = TOP();[](#l1.1395)
PyObject *v = SECOND();[](#l1.1396)
int err;[](#l1.1397)
STACKADJ(-2);[](#l1.1398)
err = PyObject_SetAttr(owner, name, v);[](#l1.1399) Py_DECREF(v);[](#l1.1400)
Py_DECREF(owner);[](#l1.1401)
if (err != 0)[](#l1.1402)
goto error;[](#l1.1403)
DISPATCH();[](#l1.1404)
}[](#l1.1405)
TARGET(DELETE_ATTR) {[](#l1.1407)
PyObject *name = GETITEM(names, oparg);[](#l1.1408)
PyObject *owner = POP();[](#l1.1409)
int err;[](#l1.1410)
err = PyObject_SetAttr(owner, name, (PyObject *)NULL);[](#l1.1411)
Py_DECREF(owner);[](#l1.1412)
if (err != 0)[](#l1.1413)
goto error;[](#l1.1414) DISPATCH();[](#l1.1415) }[](#l1.1416)
TARGET(STORE_ATTR)[](#l1.1418)
w = GETITEM(names, oparg);[](#l1.1419)
v = TOP();[](#l1.1420)
u = SECOND();[](#l1.1421)
STACKADJ(-2);[](#l1.1422)
err = PyObject_SetAttr(v, w, u); /* v.w = u */[](#l1.1423)
Py_DECREF(v);[](#l1.1424)
Py_DECREF(u);[](#l1.1425)
if (err == 0) DISPATCH();[](#l1.1426)
break;[](#l1.1427)
TARGET(DELETE_ATTR)[](#l1.1429)
w = GETITEM(names, oparg);[](#l1.1430)
v = POP();[](#l1.1431)
err = PyObject_SetAttr(v, w, (PyObject *)NULL);[](#l1.1432)
/* del v.w */[](#l1.1433)
TARGET(STORE_GLOBAL) {[](#l1.1434)
PyObject *name = GETITEM(names, oparg);[](#l1.1435)
PyObject *v = POP();[](#l1.1436)
int err;[](#l1.1437)
err = PyDict_SetItem(f->f_globals, name, v);[](#l1.1438) Py_DECREF(v);[](#l1.1439)
if (err == 0) DISPATCH();[](#l1.1440)
break;[](#l1.1441)
TARGET(STORE_GLOBAL)[](#l1.1443)
w = GETITEM(names, oparg);[](#l1.1444)
v = POP();[](#l1.1445)
err = PyDict_SetItem(f->f_globals, w, v);[](#l1.1446)
Py_DECREF(v);[](#l1.1447)
if (err == 0) DISPATCH();[](#l1.1448)
break;[](#l1.1449)
TARGET(DELETE_GLOBAL)[](#l1.1451)
w = GETITEM(names, oparg);[](#l1.1452)
if ((err = PyDict_DelItem(f->f_globals, w)) != 0) {[](#l1.1453)
if (err != 0)[](#l1.1454)
goto error;[](#l1.1455)
DISPATCH();[](#l1.1456)
}[](#l1.1457)
TARGET(DELETE_GLOBAL) {[](#l1.1459)
PyObject *name = GETITEM(names, oparg);[](#l1.1460)
int err;[](#l1.1461)
err = PyDict_DelItem(f->f_globals, name);[](#l1.1462)
if (err != 0) {[](#l1.1463) format_exc_check_arg([](#l1.1464)
PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w);[](#l1.1465)
break;[](#l1.1466)
PyExc_NameError, GLOBAL_NAME_ERROR_MSG, name);[](#l1.1467)
goto error;[](#l1.1468) }[](#l1.1469) DISPATCH();[](#l1.1470)
TARGET(LOAD_NAME)[](#l1.1472)
w = GETITEM(names, oparg);[](#l1.1473)
if ((v = f->f_locals) == NULL) {[](#l1.1474)
}[](#l1.1475)
TARGET(LOAD_NAME) {[](#l1.1477)
PyObject *name = GETITEM(names, oparg);[](#l1.1478)
PyObject *locals = f->f_locals;[](#l1.1479)
PyObject *v;[](#l1.1480)
if (locals == NULL) {[](#l1.1481) PyErr_Format(PyExc_SystemError,[](#l1.1482)
"no locals when loading %R", w);[](#l1.1483)
why = WHY_EXCEPTION;[](#l1.1484)
break;[](#l1.1485)
"no locals when loading %R", name);[](#l1.1486)
goto error;[](#l1.1487) }[](#l1.1488)
if (PyDict_CheckExact(v)) {[](#l1.1489)
x = PyDict_GetItem(v, w);[](#l1.1490)
Py_XINCREF(x);[](#l1.1491)
if (PyDict_CheckExact(locals)) {[](#l1.1492)
v = PyDict_GetItem(locals, name);[](#l1.1493)
Py_XINCREF(v);[](#l1.1494) }[](#l1.1495) else {[](#l1.1496)
x = PyObject_GetItem(v, w);[](#l1.1497)
if (x == NULL && PyErr_Occurred()) {[](#l1.1498)
v = PyObject_GetItem(locals, name);[](#l1.1499)
if (v == NULL && PyErr_Occurred()) {[](#l1.1500) if (!PyErr_ExceptionMatches([](#l1.1501) PyExc_KeyError))[](#l1.1502) break;[](#l1.1503) PyErr_Clear();[](#l1.1504) }[](#l1.1505) }[](#l1.1506)
if (x == NULL) {[](#l1.1507)
x = PyDict_GetItem(f->f_globals, w);[](#l1.1508)
Py_XINCREF(x);[](#l1.1509)
if (x == NULL) {[](#l1.1510)
if (v == NULL) {[](#l1.1511)
v = PyDict_GetItem(f->f_globals, name);[](#l1.1512)
Py_XINCREF(v);[](#l1.1513)
if (v == NULL) {[](#l1.1514) if (PyDict_CheckExact(f->f_builtins)) {[](#l1.1515)
x = PyDict_GetItem(f->f_builtins, w);[](#l1.1516)
if (x == NULL) {[](#l1.1517)
v = PyDict_GetItem(f->f_builtins, name);[](#l1.1518)
if (v == NULL) {[](#l1.1519) format_exc_check_arg([](#l1.1520) PyExc_NameError,[](#l1.1521)
NAME_ERROR_MSG, w);[](#l1.1522)
break;[](#l1.1523)
NAME_ERROR_MSG, name);[](#l1.1524)
goto error;[](#l1.1525) }[](#l1.1526)
Py_INCREF(x);[](#l1.1527)
Py_INCREF(v);[](#l1.1528) }[](#l1.1529) else {[](#l1.1530)
x = PyObject_GetItem(f->f_builtins, w);[](#l1.1531)
if (x == NULL) {[](#l1.1532)
v = PyObject_GetItem(f->f_builtins, name);[](#l1.1533)
if (v == NULL) {[](#l1.1534) if (PyErr_ExceptionMatches(PyExc_KeyError))[](#l1.1535) format_exc_check_arg([](#l1.1536) PyExc_NameError,[](#l1.1537)
NAME_ERROR_MSG, w);[](#l1.1538)
break;[](#l1.1539)
NAME_ERROR_MSG, name);[](#l1.1540)
goto error;[](#l1.1541) }[](#l1.1542) }[](#l1.1543) }[](#l1.1544) }[](#l1.1545)
PUSH(x);[](#l1.1546)
PUSH(v);[](#l1.1547) DISPATCH();[](#l1.1548)
TARGET(LOAD_GLOBAL)[](#l1.1550)
w = GETITEM(names, oparg);[](#l1.1551)
}[](#l1.1552)
TARGET(LOAD_GLOBAL) {[](#l1.1554)
PyObject *name = GETITEM(names, oparg);[](#l1.1555)
PyObject *v;[](#l1.1556) if (PyDict_CheckExact(f->f_globals)[](#l1.1557) && PyDict_CheckExact(f->f_builtins)) {[](#l1.1558)
x = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,[](#l1.1559)
v = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,[](#l1.1560) (PyDictObject *)f->f_builtins,[](#l1.1561)
w);[](#l1.1562)
if (x == NULL) {[](#l1.1563)
name);[](#l1.1564)
if (v == NULL) {[](#l1.1565) if (!PyErr_Occurred())[](#l1.1566) format_exc_check_arg(PyExc_NameError,[](#l1.1567)
GLOBAL_NAME_ERROR_MSG, w);[](#l1.1568)
break;[](#l1.1569)
GLOBAL_NAME_ERROR_MSG, name);[](#l1.1570)
goto error;[](#l1.1571) }[](#l1.1572)
Py_INCREF(x);[](#l1.1573)
Py_INCREF(v);[](#l1.1574) }[](#l1.1575) else {[](#l1.1576) /* Slow-path if globals or builtins is not a dict */[](#l1.1577)
x = PyObject_GetItem(f->f_globals, w);[](#l1.1578)
if (x == NULL) {[](#l1.1579)
x = PyObject_GetItem(f->f_builtins, w);[](#l1.1580)
if (x == NULL) {[](#l1.1581)
v = PyObject_GetItem(f->f_globals, name);[](#l1.1582)
if (v == NULL) {[](#l1.1583)
v = PyObject_GetItem(f->f_builtins, name);[](#l1.1584)
if (v == NULL) {[](#l1.1585) if (PyErr_ExceptionMatches(PyExc_KeyError))[](#l1.1586) format_exc_check_arg([](#l1.1587) PyExc_NameError,[](#l1.1588)
GLOBAL_NAME_ERROR_MSG, w);[](#l1.1589)
break;[](#l1.1590)
GLOBAL_NAME_ERROR_MSG, name);[](#l1.1591)
goto error;[](#l1.1592) }[](#l1.1593) }[](#l1.1594) }[](#l1.1595)
PUSH(x);[](#l1.1596)
PUSH(v);[](#l1.1597) DISPATCH();[](#l1.1598)
TARGET(DELETE_FAST)[](#l1.1600)
x = GETLOCAL(oparg);[](#l1.1601)
if (x != NULL) {[](#l1.1602)
}[](#l1.1603)
TARGET(DELETE_FAST) {[](#l1.1605)
PyObject *v = GETLOCAL(oparg);[](#l1.1606)
if (v != NULL) {[](#l1.1607) SETLOCAL(oparg, NULL);[](#l1.1608) DISPATCH();[](#l1.1609) }[](#l1.1610)
@@ -2169,252 +2242,277 @@ PyEval_EvalFrameEx(PyFrameObject *f, int UNBOUNDLOCAL_ERROR_MSG, PyTuple_GetItem(co->co_varnames, oparg) );
break;[](#l1.1615)
TARGET(DELETE_DEREF)[](#l1.1617)
x = freevars[oparg];[](#l1.1618)
if (PyCell_GET(x) != NULL) {[](#l1.1619)
PyCell_Set(x, NULL);[](#l1.1620)
DISPATCH();[](#l1.1621)
}[](#l1.1622)
err = -1;[](#l1.1623)
format_exc_unbound(co, oparg);[](#l1.1624)
break;[](#l1.1625)
TARGET(LOAD_CLOSURE)[](#l1.1627)
x = freevars[oparg];[](#l1.1628)
Py_INCREF(x);[](#l1.1629)
PUSH(x);[](#l1.1630)
if (x != NULL) DISPATCH();[](#l1.1631)
break;[](#l1.1632)
TARGET(LOAD_DEREF)[](#l1.1634)
x = freevars[oparg];[](#l1.1635)
w = PyCell_Get(x);[](#l1.1636)
if (w != NULL) {[](#l1.1637)
PUSH(w);[](#l1.1638)
DISPATCH();[](#l1.1639)
}[](#l1.1640)
err = -1;[](#l1.1641)
format_exc_unbound(co, oparg);[](#l1.1642)
break;[](#l1.1643)
TARGET(STORE_DEREF)[](#l1.1645)
w = POP();[](#l1.1646)
x = freevars[oparg];[](#l1.1647)
PyCell_Set(x, w);[](#l1.1648)
Py_DECREF(w);[](#l1.1649)
DISPATCH();[](#l1.1650)
TARGET(BUILD_TUPLE)[](#l1.1652)
x = PyTuple_New(oparg);[](#l1.1653)
if (x != NULL) {[](#l1.1654)
for (; --oparg >= 0;) {[](#l1.1655)
w = POP();[](#l1.1656)
PyTuple_SET_ITEM(x, oparg, w);[](#l1.1657)
}[](#l1.1658)
PUSH(x);[](#l1.1659)
DISPATCH();[](#l1.1660)
}[](#l1.1661)
break;[](#l1.1662)
TARGET(BUILD_LIST)[](#l1.1664)
x = PyList_New(oparg);[](#l1.1665)
if (x != NULL) {[](#l1.1666)
for (; --oparg >= 0;) {[](#l1.1667)
w = POP();[](#l1.1668)
PyList_SET_ITEM(x, oparg, w);[](#l1.1669)
}[](#l1.1670)
PUSH(x);[](#l1.1671)
goto error;[](#l1.1672)
}[](#l1.1673)
TARGET(DELETE_DEREF) {[](#l1.1675)
PyObject *cell = freevars[oparg];[](#l1.1676)
if (PyCell_GET(cell) != NULL) {[](#l1.1677)
PyCell_Set(cell, NULL);[](#l1.1678) DISPATCH();[](#l1.1679) }[](#l1.1680)
break;[](#l1.1681)
TARGET(BUILD_SET)[](#l1.1683)
x = PySet_New(NULL);[](#l1.1684)
if (x != NULL) {[](#l1.1685)
for (; --oparg >= 0;) {[](#l1.1686)
w = POP();[](#l1.1687)
if (err == 0)[](#l1.1688)
err = PySet_Add(x, w);[](#l1.1689)
Py_DECREF(w);[](#l1.1690)
}[](#l1.1691)
if (err != 0) {[](#l1.1692)
Py_DECREF(x);[](#l1.1693)
break;[](#l1.1694)
}[](#l1.1695)
PUSH(x);[](#l1.1696)
DISPATCH();[](#l1.1697)
format_exc_unbound(co, oparg);[](#l1.1698)
goto error;[](#l1.1699)
}[](#l1.1700)
TARGET(LOAD_CLOSURE) {[](#l1.1702)
PyObject *cell = freevars[oparg];[](#l1.1703)
Py_INCREF(cell);[](#l1.1704)
PUSH(cell);[](#l1.1705)
DISPATCH();[](#l1.1706)
}[](#l1.1707)
TARGET(LOAD_DEREF) {[](#l1.1709)
PyObject *cell = freevars[oparg];[](#l1.1710)
PyObject *value = PyCell_GET(cell);[](#l1.1711)
if (value == NULL) {[](#l1.1712)
format_exc_unbound(co, oparg);[](#l1.1713)
goto error;[](#l1.1714)
}[](#l1.1715)
Py_INCREF(value);[](#l1.1716)
PUSH(value);[](#l1.1717)
DISPATCH();[](#l1.1718)
}[](#l1.1719)
TARGET(STORE_DEREF) {[](#l1.1721)
PyObject *v = POP();[](#l1.1722)
PyObject *cell = freevars[oparg];[](#l1.1723)
PyCell_Set(cell, v);[](#l1.1724)
Py_DECREF(v);[](#l1.1725)
DISPATCH();[](#l1.1726)
}[](#l1.1727)
TARGET(BUILD_TUPLE) {[](#l1.1729)
PyObject *tup = PyTuple_New(oparg);[](#l1.1730)
if (tup == NULL)[](#l1.1731)
goto error;[](#l1.1732)
while (--oparg >= 0) {[](#l1.1733)
PyObject *item = POP();[](#l1.1734)
PyTuple_SET_ITEM(tup, oparg, item);[](#l1.1735) }[](#l1.1736)
break;[](#l1.1737)
TARGET(BUILD_MAP)[](#l1.1739)
x = _PyDict_NewPresized((Py_ssize_t)oparg);[](#l1.1740)
PUSH(x);[](#l1.1741)
if (x != NULL) DISPATCH();[](#l1.1742)
break;[](#l1.1743)
TARGET(STORE_MAP)[](#l1.1745)
w = TOP(); /* key */[](#l1.1746)
u = SECOND(); /* value */[](#l1.1747)
v = THIRD(); /* dict */[](#l1.1748)
PUSH(tup);[](#l1.1749)
DISPATCH();[](#l1.1750)
}[](#l1.1751)
TARGET(BUILD_LIST) {[](#l1.1753)
PyObject *list = PyList_New(oparg);[](#l1.1754)
if (list == NULL)[](#l1.1755)
goto error;[](#l1.1756)
while (--oparg >= 0) {[](#l1.1757)
PyObject *item = POP();[](#l1.1758)
PyList_SET_ITEM(list, oparg, item);[](#l1.1759)
}[](#l1.1760)
PUSH(list);[](#l1.1761)
DISPATCH();[](#l1.1762)
}[](#l1.1763)
TARGET(BUILD_SET) {[](#l1.1765)
PyObject *set = PySet_New(NULL);[](#l1.1766)
int err = 0;[](#l1.1767)
if (set == NULL)[](#l1.1768)
goto error;[](#l1.1769)
while (--oparg >= 0) {[](#l1.1770)
PyObject *item = POP();[](#l1.1771)
if (err == 0)[](#l1.1772)
err = PySet_Add(set, item);[](#l1.1773)
Py_DECREF(item);[](#l1.1774)
}[](#l1.1775)
if (err != 0) {[](#l1.1776)
Py_DECREF(set);[](#l1.1777)
goto error;[](#l1.1778)
}[](#l1.1779)
PUSH(set);[](#l1.1780)
DISPATCH();[](#l1.1781)
}[](#l1.1782)
TARGET(BUILD_MAP) {[](#l1.1784)
PyObject *map = _PyDict_NewPresized((Py_ssize_t)oparg);[](#l1.1785)
if (map == NULL)[](#l1.1786)
goto error;[](#l1.1787)
PUSH(map);[](#l1.1788)
DISPATCH();[](#l1.1789)
}[](#l1.1790)
TARGET(STORE_MAP) {[](#l1.1792)
PyObject *key = TOP();[](#l1.1793)
PyObject *value = SECOND();[](#l1.1794)
PyObject *map = THIRD();[](#l1.1795)
int err;[](#l1.1796) STACKADJ(-2);[](#l1.1797)
assert (PyDict_CheckExact(v));[](#l1.1798)
err = PyDict_SetItem(v, w, u); /* v[w] = u */[](#l1.1799)
Py_DECREF(u);[](#l1.1800)
Py_DECREF(w);[](#l1.1801)
if (err == 0) DISPATCH();[](#l1.1802)
break;[](#l1.1803)
TARGET(MAP_ADD)[](#l1.1805)
w = TOP(); /* key */[](#l1.1806)
u = SECOND(); /* value */[](#l1.1807)
assert(PyDict_CheckExact(map));[](#l1.1808)
err = PyDict_SetItem(map, key, value);[](#l1.1809)
Py_DECREF(value);[](#l1.1810)
Py_DECREF(key);[](#l1.1811)
if (err != 0)[](#l1.1812)
goto error;[](#l1.1813)
DISPATCH();[](#l1.1814)
}[](#l1.1815)
TARGET(MAP_ADD) {[](#l1.1817)
PyObject *key = TOP();[](#l1.1818)
PyObject *value = SECOND();[](#l1.1819)
PyObject *map;[](#l1.1820)
int err;[](#l1.1821) STACKADJ(-2);[](#l1.1822)
v = stack_pointer[-oparg]; /* dict */[](#l1.1823)
assert (PyDict_CheckExact(v));[](#l1.1824)
err = PyDict_SetItem(v, w, u); /* v[w] = u */[](#l1.1825)
Py_DECREF(u);[](#l1.1826)
Py_DECREF(w);[](#l1.1827)
if (err == 0) {[](#l1.1828)
PREDICT(JUMP_ABSOLUTE);[](#l1.1829)
DISPATCH();[](#l1.1830)
}[](#l1.1831)
break;[](#l1.1832)
TARGET(LOAD_ATTR)[](#l1.1834)
w = GETITEM(names, oparg);[](#l1.1835)
v = TOP();[](#l1.1836)
x = PyObject_GetAttr(v, w);[](#l1.1837)
Py_DECREF(v);[](#l1.1838)
SET_TOP(x);[](#l1.1839)
if (x != NULL) DISPATCH();[](#l1.1840)
break;[](#l1.1841)
TARGET(COMPARE_OP)[](#l1.1843)
w = POP();[](#l1.1844)
v = TOP();[](#l1.1845)
x = cmp_outcome(oparg, v, w);[](#l1.1846)
Py_DECREF(v);[](#l1.1847)
Py_DECREF(w);[](#l1.1848)
SET_TOP(x);[](#l1.1849)
if (x == NULL) break;[](#l1.1850)
map = stack_pointer[-oparg]; /* dict */[](#l1.1851)
assert(PyDict_CheckExact(map));[](#l1.1852)
err = PyDict_SetItem(map, key, value); /* v[w] = u */[](#l1.1853)
Py_DECREF(value);[](#l1.1854)
Py_DECREF(key);[](#l1.1855)
if (err != 0)[](#l1.1856)
goto error;[](#l1.1857)
PREDICT(JUMP_ABSOLUTE);[](#l1.1858)
DISPATCH();[](#l1.1859)
}[](#l1.1860)
TARGET(LOAD_ATTR) {[](#l1.1862)
PyObject *name = GETITEM(names, oparg);[](#l1.1863)
PyObject *owner = TOP();[](#l1.1864)
PyObject *res = PyObject_GetAttr(owner, name);[](#l1.1865)
Py_DECREF(owner);[](#l1.1866)
SET_TOP(res);[](#l1.1867)
if (res == NULL)[](#l1.1868)
goto error;[](#l1.1869)
DISPATCH();[](#l1.1870)
}[](#l1.1871)
TARGET(COMPARE_OP) {[](#l1.1873)
PyObject *right = POP();[](#l1.1874)
PyObject *left = TOP();[](#l1.1875)
PyObject *res = cmp_outcome(oparg, left, right);[](#l1.1876)
Py_DECREF(left);[](#l1.1877)
Py_DECREF(right);[](#l1.1878)
SET_TOP(res);[](#l1.1879)
if (res == NULL)[](#l1.1880)
goto error;[](#l1.1881) PREDICT(POP_JUMP_IF_FALSE);[](#l1.1882) PREDICT(POP_JUMP_IF_TRUE);[](#l1.1883) DISPATCH();[](#l1.1884)
TARGET(IMPORT_NAME)[](#l1.1886)
{[](#l1.1887)
}[](#l1.1888)
TARGET(IMPORT_NAME) {[](#l1.1890) _Py_IDENTIFIER(__import__);[](#l1.1891)
w = GETITEM(names, oparg);[](#l1.1892)
x = _PyDict_GetItemId(f->f_builtins, &PyId___import__);[](#l1.1893)
if (x == NULL) {[](#l1.1894)
PyObject *name = GETITEM(names, oparg);[](#l1.1895)
PyObject *func = _PyDict_GetItemId(f->f_builtins, &PyId___import__);[](#l1.1896)
PyObject *from, *level, *args;[](#l1.1897)
if (func == NULL) {[](#l1.1898) PyErr_SetString(PyExc_ImportError,[](#l1.1899) "__import__ not found");[](#l1.1900)
break;[](#l1.1901)
goto error;[](#l1.1902) }[](#l1.1903)
Py_INCREF(x);[](#l1.1904)
v = POP();[](#l1.1905)
u = TOP();[](#l1.1906)
if (PyLong_AsLong(u) != -1 || PyErr_Occurred())[](#l1.1907)
w = PyTuple_Pack(5,[](#l1.1908)
w,[](#l1.1909)
Py_INCREF(func);[](#l1.1910)
from = POP();[](#l1.1911)
level = TOP();[](#l1.1912)
if (PyLong_AsLong(level) != -1 || PyErr_Occurred())[](#l1.1913)
args = PyTuple_Pack(5,[](#l1.1914)
name,[](#l1.1915) f->f_globals,[](#l1.1916) f->f_locals == NULL ?[](#l1.1917) Py_None : f->f_locals,[](#l1.1918)
v,[](#l1.1919)
u);[](#l1.1920)
from,[](#l1.1921)
level);[](#l1.1922) else[](#l1.1923)
w = PyTuple_Pack(4,[](#l1.1924)
w,[](#l1.1925)
args = PyTuple_Pack(4,[](#l1.1926)
name,[](#l1.1927) f->f_globals,[](#l1.1928) f->f_locals == NULL ?[](#l1.1929) Py_None : f->f_locals,[](#l1.1930)
v);[](#l1.1931)
Py_DECREF(v);[](#l1.1932)
Py_DECREF(u);[](#l1.1933)
if (w == NULL) {[](#l1.1934)
u = POP();[](#l1.1935)
Py_DECREF(x);[](#l1.1936)
x = NULL;[](#l1.1937)
break;[](#l1.1938)
from);[](#l1.1939)
Py_DECREF(level);[](#l1.1940)
Py_DECREF(from);[](#l1.1941)
if (args == NULL) {[](#l1.1942)
Py_DECREF(func);[](#l1.1943)
STACKADJ(-1);[](#l1.1944)
goto error;[](#l1.1945) }[](#l1.1946) READ_TIMESTAMP(intr0);[](#l1.1947)
v = x;[](#l1.1948)
x = PyEval_CallObject(v, w);[](#l1.1949)
Py_DECREF(v);[](#l1.1950)
PyObject *res = PyEval_CallObject(func, args);[](#l1.1951) READ_TIMESTAMP(intr1);[](#l1.1952)
Py_DECREF(w);[](#l1.1953)
SET_TOP(x);[](#l1.1954)
if (x != NULL) DISPATCH();[](#l1.1955)
break;[](#l1.1956)
Py_DECREF(args);[](#l1.1957)
Py_DECREF(func);[](#l1.1958)
SET_TOP(res);[](#l1.1959)
if (res == NULL)[](#l1.1960)
goto error;[](#l1.1961)
DISPATCH();[](#l1.1962) }[](#l1.1963)
TARGET(IMPORT_STAR)[](#l1.1965)
v = POP();[](#l1.1966)
TARGET(IMPORT_STAR) {[](#l1.1967)
PyObject *from = POP(), *locals;[](#l1.1968)
int err;[](#l1.1969) PyFrame_FastToLocals(f);[](#l1.1970)
if ((x = f->f_locals) == NULL) {[](#l1.1971)
locals = f->f_locals;[](#l1.1972)
if (locals == NULL) {[](#l1.1973) PyErr_SetString(PyExc_SystemError,[](#l1.1974) "no locals found during 'import *'");[](#l1.1975)
break;[](#l1.1976)
goto error;[](#l1.1977) }[](#l1.1978) READ_TIMESTAMP(intr0);[](#l1.1979)
err = import_all_from(x, v);[](#l1.1980)
err = import_all_from(locals, from);[](#l1.1981) READ_TIMESTAMP(intr1);[](#l1.1982) PyFrame_LocalsToFast(f, 0);[](#l1.1983)
Py_DECREF(v);[](#l1.1984)
if (err == 0) DISPATCH();[](#l1.1985)
break;[](#l1.1986)
TARGET(IMPORT_FROM)[](#l1.1988)
w = GETITEM(names, oparg);[](#l1.1989)
v = TOP();[](#l1.1990)
Py_DECREF(from);[](#l1.1991)
if (err != 0)[](#l1.1992)
goto error;[](#l1.1993)
DISPATCH();[](#l1.1994)
}[](#l1.1995)
TARGET(IMPORT_FROM) {[](#l1.1997)
PyObject *name = GETITEM(names, oparg);[](#l1.1998)
PyObject *from = TOP();[](#l1.1999)
PyObject *res;[](#l1.2000) READ_TIMESTAMP(intr0);[](#l1.2001)
x = import_from(v, w);[](#l1.2002)
res = import_from(from, name);[](#l1.2003) READ_TIMESTAMP(intr1);[](#l1.2004)
PUSH(x);[](#l1.2005)
if (x != NULL) DISPATCH();[](#l1.2006)
break;[](#l1.2007)
TARGET(JUMP_FORWARD)[](#l1.2009)
PUSH(res);[](#l1.2010)
if (res == NULL)[](#l1.2011)
goto error;[](#l1.2012)
DISPATCH();[](#l1.2013)
}[](#l1.2014)
TARGET(JUMP_FORWARD) {[](#l1.2016) JUMPBY(oparg);[](#l1.2017) FAST_DISPATCH();[](#l1.2018)
}[](#l1.2019)
PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
TARGET(POP_JUMP_IF_FALSE)[](#l1.2022)
w = POP();[](#l1.2023)
if (w == Py_True) {[](#l1.2024)
Py_DECREF(w);[](#l1.2025)
TARGET(POP_JUMP_IF_FALSE) {[](#l1.2026)
PyObject *cond = POP();[](#l1.2027)
int err;[](#l1.2028)
if (cond == Py_True) {[](#l1.2029)
Py_DECREF(cond);[](#l1.2030) FAST_DISPATCH();[](#l1.2031) }[](#l1.2032)
if (w == Py_False) {[](#l1.2033)
Py_DECREF(w);[](#l1.2034)
if (cond == Py_False) {[](#l1.2035)
Py_DECREF(cond);[](#l1.2036) JUMPTO(oparg);[](#l1.2037) FAST_DISPATCH();[](#l1.2038) }[](#l1.2039)
err = PyObject_IsTrue(w);[](#l1.2040)
Py_DECREF(w);[](#l1.2041)
err = PyObject_IsTrue(cond);[](#l1.2042)
Py_DECREF(cond);[](#l1.2043) if (err > 0)[](#l1.2044) err = 0;[](#l1.2045) else if (err == 0)[](#l1.2046) JUMPTO(oparg);[](#l1.2047) else[](#l1.2048)
break;[](#l1.2049)
goto error;[](#l1.2050) DISPATCH();[](#l1.2051)
}[](#l1.2052)
PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
TARGET(POP_JUMP_IF_TRUE)[](#l1.2055)
w = POP();[](#l1.2056)
if (w == Py_False) {[](#l1.2057)
Py_DECREF(w);[](#l1.2058)
TARGET(POP_JUMP_IF_TRUE) {[](#l1.2059)
PyObject *cond = POP();[](#l1.2060)
int err;[](#l1.2061)
if (cond == Py_False) {[](#l1.2062)
Py_DECREF(cond);[](#l1.2063) FAST_DISPATCH();[](#l1.2064) }[](#l1.2065)
if (w == Py_True) {[](#l1.2066)
Py_DECREF(w);[](#l1.2067)
if (cond == Py_True) {[](#l1.2068)
Py_DECREF(cond);[](#l1.2069) JUMPTO(oparg);[](#l1.2070) FAST_DISPATCH();[](#l1.2071) }[](#l1.2072)
err = PyObject_IsTrue(w);[](#l1.2073)
Py_DECREF(w);[](#l1.2074)
err = PyObject_IsTrue(cond);[](#l1.2075)
Py_DECREF(cond);[](#l1.2076) if (err > 0) {[](#l1.2077) err = 0;[](#l1.2078) JUMPTO(oparg);[](#l1.2079)
@@ -2422,58 +2520,63 @@ PyEval_EvalFrameEx(PyFrameObject *f, int else if (err == 0) ; else
break;[](#l1.2084)
goto error;[](#l1.2085) DISPATCH();[](#l1.2086)
TARGET(JUMP_IF_FALSE_OR_POP)[](#l1.2088)
w = TOP();[](#l1.2089)
if (w == Py_True) {[](#l1.2090)
}[](#l1.2091)
TARGET(JUMP_IF_FALSE_OR_POP) {[](#l1.2093)
PyObject *cond = TOP();[](#l1.2094)
int err;[](#l1.2095)
if (cond == Py_True) {[](#l1.2096) STACKADJ(-1);[](#l1.2097)
Py_DECREF(w);[](#l1.2098)
Py_DECREF(cond);[](#l1.2099) FAST_DISPATCH();[](#l1.2100) }[](#l1.2101)
if (w == Py_False) {[](#l1.2102)
if (cond == Py_False) {[](#l1.2103) JUMPTO(oparg);[](#l1.2104) FAST_DISPATCH();[](#l1.2105) }[](#l1.2106)
err = PyObject_IsTrue(w);[](#l1.2107)
err = PyObject_IsTrue(cond);[](#l1.2108) if (err > 0) {[](#l1.2109) STACKADJ(-1);[](#l1.2110)
Py_DECREF(w);[](#l1.2111)
Py_DECREF(cond);[](#l1.2112) err = 0;[](#l1.2113) }[](#l1.2114) else if (err == 0)[](#l1.2115) JUMPTO(oparg);[](#l1.2116) else[](#l1.2117)
break;[](#l1.2118)
goto error;[](#l1.2119) DISPATCH();[](#l1.2120)
TARGET(JUMP_IF_TRUE_OR_POP)[](#l1.2122)
w = TOP();[](#l1.2123)
if (w == Py_False) {[](#l1.2124)
}[](#l1.2125)
TARGET(JUMP_IF_TRUE_OR_POP) {[](#l1.2127)
PyObject *cond = TOP();[](#l1.2128)
int err;[](#l1.2129)
if (cond == Py_False) {[](#l1.2130) STACKADJ(-1);[](#l1.2131)
Py_DECREF(w);[](#l1.2132)
Py_DECREF(cond);[](#l1.2133) FAST_DISPATCH();[](#l1.2134) }[](#l1.2135)
if (w == Py_True) {[](#l1.2136)
if (cond == Py_True) {[](#l1.2137) JUMPTO(oparg);[](#l1.2138) FAST_DISPATCH();[](#l1.2139) }[](#l1.2140)
err = PyObject_IsTrue(w);[](#l1.2141)
err = PyObject_IsTrue(cond);[](#l1.2142) if (err > 0) {[](#l1.2143) err = 0;[](#l1.2144) JUMPTO(oparg);[](#l1.2145) }[](#l1.2146) else if (err == 0) {[](#l1.2147) STACKADJ(-1);[](#l1.2148)
Py_DECREF(w);[](#l1.2149)
Py_DECREF(cond);[](#l1.2150) }[](#l1.2151) else[](#l1.2152)
break;[](#l1.2153)
goto error;[](#l1.2154) DISPATCH();[](#l1.2155)
}[](#l1.2156)
PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
TARGET(JUMP_ABSOLUTE)[](#l1.2159)
TARGET(JUMP_ABSOLUTE) {[](#l1.2160) JUMPTO(oparg);[](#l1.2161)
#if FAST_LOOPS /* Enabling this path speeds-up all while and for-loops by bypassing @@ -2487,60 +2590,60 @@ PyEval_EvalFrameEx(PyFrameObject *f, int #else DISPATCH(); #endif -
TARGET(GET_ITER)[](#l1.2169)
}[](#l1.2170)
TARGET(GET_ITER) {[](#l1.2172) /* before: [obj]; after [getiter(obj)] */[](#l1.2173)
v = TOP();[](#l1.2174)
x = PyObject_GetIter(v);[](#l1.2175)
Py_DECREF(v);[](#l1.2176)
if (x != NULL) {[](#l1.2177)
SET_TOP(x);[](#l1.2178)
PREDICT(FOR_ITER);[](#l1.2179)
DISPATCH();[](#l1.2180)
}[](#l1.2181)
STACKADJ(-1);[](#l1.2182)
break;[](#l1.2183)
PyObject *iterable = TOP();[](#l1.2184)
PyObject *iter = PyObject_GetIter(iterable);[](#l1.2185)
Py_DECREF(iterable);[](#l1.2186)
SET_TOP(iter);[](#l1.2187)
if (iter == NULL)[](#l1.2188)
goto error;[](#l1.2189)
PREDICT(FOR_ITER);[](#l1.2190)
DISPATCH();[](#l1.2191)
}[](#l1.2192)
TARGET(FOR_ITER)[](#l1.2195)
TARGET(FOR_ITER) {[](#l1.2196) /* before: [iter]; after: [iter, iter()] *or* [] */[](#l1.2197)
v = TOP();[](#l1.2198)
x = (*v->ob_type->tp_iternext)(v);[](#l1.2199)
if (x != NULL) {[](#l1.2200)
PUSH(x);[](#l1.2201)
PyObject *iter = TOP();[](#l1.2202)
PyObject *next = (*iter->ob_type->tp_iternext)(iter);[](#l1.2203)
if (next != NULL) {[](#l1.2204)
PUSH(next);[](#l1.2205) PREDICT(STORE_FAST);[](#l1.2206) PREDICT(UNPACK_SEQUENCE);[](#l1.2207) DISPATCH();[](#l1.2208) }[](#l1.2209) if (PyErr_Occurred()) {[](#l1.2210)
if (!PyErr_ExceptionMatches([](#l1.2211)
PyExc_StopIteration))[](#l1.2212)
break;[](#l1.2213)
if (!PyErr_ExceptionMatches(PyExc_StopIteration))[](#l1.2214)
goto error;[](#l1.2215) PyErr_Clear();[](#l1.2216) }[](#l1.2217) /* iterator ended normally */[](#l1.2218)
x = v = POP();[](#l1.2219)
Py_DECREF(v);[](#l1.2220)
STACKADJ(-1);[](#l1.2221)
Py_DECREF(iter);[](#l1.2222) JUMPBY(oparg);[](#l1.2223) DISPATCH();[](#l1.2224)
TARGET(BREAK_LOOP)[](#l1.2226)
}[](#l1.2227)
TARGET(BREAK_LOOP) {[](#l1.2229) why = WHY_BREAK;[](#l1.2230) goto fast_block_end;[](#l1.2231)
TARGET(CONTINUE_LOOP)[](#l1.2233)
}[](#l1.2234)
TARGET(CONTINUE_LOOP) {[](#l1.2236) retval = PyLong_FromLong(oparg);[](#l1.2237)
if (!retval) {[](#l1.2238)
x = NULL;[](#l1.2239)
break;[](#l1.2240)
}[](#l1.2241)
if (retval == NULL)[](#l1.2242)
goto error;[](#l1.2243) why = WHY_CONTINUE;[](#l1.2244) goto fast_block_end;[](#l1.2245)
}[](#l1.2246)
TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally) TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally) TARGET(SETUP_FINALLY)
_setup_finally:[](#l1.2251)
_setup_finally: {[](#l1.2252) /* NOTE: If you add any new block-setup opcodes that[](#l1.2253) are not try/except/finally handlers, you may need[](#l1.2254) to update the PyGen_NeedsFinalizing() function.[](#l1.2255)
@@ -2549,37 +2652,35 @@ PyEval_EvalFrameEx(PyFrameObject *f, int PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg, STACK_LEVEL()); DISPATCH(); -
TARGET(SETUP_WITH)[](#l1.2261)
{[](#l1.2262)
}[](#l1.2263)
TARGET(SETUP_WITH) {[](#l1.2265) _Py_IDENTIFIER(__exit__);[](#l1.2266) _Py_IDENTIFIER(__enter__);[](#l1.2267)
w = TOP();[](#l1.2268)
x = special_lookup(w, &PyId___exit__);[](#l1.2269)
if (!x)[](#l1.2270)
break;[](#l1.2271)
SET_TOP(x);[](#l1.2272)
u = special_lookup(w, &PyId___enter__);[](#l1.2273)
Py_DECREF(w);[](#l1.2274)
if (!u) {[](#l1.2275)
x = NULL;[](#l1.2276)
break;[](#l1.2277)
}[](#l1.2278)
x = PyObject_CallFunctionObjArgs(u, NULL);[](#l1.2279)
Py_DECREF(u);[](#l1.2280)
if (!x)[](#l1.2281)
break;[](#l1.2282)
PyObject *mgr = TOP();[](#l1.2283)
PyObject *exit = special_lookup(mgr, &PyId___exit__), *enter;[](#l1.2284)
PyObject *res;[](#l1.2285)
if (exit == NULL)[](#l1.2286)
goto error;[](#l1.2287)
SET_TOP(exit);[](#l1.2288)
enter = special_lookup(mgr, &PyId___enter__);[](#l1.2289)
Py_DECREF(mgr);[](#l1.2290)
if (enter == NULL)[](#l1.2291)
goto error;[](#l1.2292)
res = PyObject_CallFunctionObjArgs(enter, NULL);[](#l1.2293)
Py_DECREF(enter);[](#l1.2294)
if (res == NULL)[](#l1.2295)
goto error;[](#l1.2296) /* Setup the finally block before pushing the result[](#l1.2297) of __enter__ on the stack. */[](#l1.2298) PyFrame_BlockSetup(f, SETUP_FINALLY, INSTR_OFFSET() + oparg,[](#l1.2299) STACK_LEVEL());[](#l1.2300)
PUSH(x);[](#l1.2302)
PUSH(res);[](#l1.2303) DISPATCH();[](#l1.2304) }[](#l1.2305)
TARGET(WITH_CLEANUP)[](#l1.2307)
{[](#l1.2308)
TARGET(WITH_CLEANUP) {[](#l1.2309) /* At the top of the stack are 1-3 values indicating[](#l1.2310) how/why we entered the finally clause:[](#l1.2311) - TOP = None[](#l1.2312)
@@ -2606,42 +2707,42 @@ PyEval_EvalFrameEx(PyFrameObject *f, int */ PyObject *exit_func;
u = TOP();[](#l1.2317)
if (u == Py_None) {[](#l1.2318)
PyObject *exc = TOP(), *val = Py_None, *tb = Py_None, *res;[](#l1.2319)
int err;[](#l1.2320)
if (exc == Py_None) {[](#l1.2321) (void)POP();[](#l1.2322) exit_func = TOP();[](#l1.2323)
SET_TOP(u);[](#l1.2324)
v = w = Py_None;[](#l1.2325)
SET_TOP(exc);[](#l1.2326) }[](#l1.2327)
else if (PyLong_Check(u)) {[](#l1.2328)
(void)POP();[](#l1.2329)
switch(PyLong_AsLong(u)) {[](#l1.2330)
else if (PyLong_Check(exc)) {[](#l1.2331)
STACKADJ(-1);[](#l1.2332)
switch (PyLong_AsLong(exc)) {[](#l1.2333) case WHY_RETURN:[](#l1.2334) case WHY_CONTINUE:[](#l1.2335) /* Retval in TOP. */[](#l1.2336) exit_func = SECOND();[](#l1.2337) SET_SECOND(TOP());[](#l1.2338)
SET_TOP(u);[](#l1.2339)
SET_TOP(exc);[](#l1.2340) break;[](#l1.2341) default:[](#l1.2342) exit_func = TOP();[](#l1.2343)
SET_TOP(u);[](#l1.2344)
SET_TOP(exc);[](#l1.2345) break;[](#l1.2346) }[](#l1.2347)
u = v = w = Py_None;[](#l1.2348)
exc = Py_None;[](#l1.2349) }[](#l1.2350) else {[](#l1.2351)
PyObject *tp, *exc, *tb;[](#l1.2352)
PyObject *tp2, *exc2, *tb2;[](#l1.2353) PyTryBlock *block;[](#l1.2354)
v = SECOND();[](#l1.2355)
w = THIRD();[](#l1.2356)
tp = FOURTH();[](#l1.2357)
exc = PEEK(5);[](#l1.2358)
tb = PEEK(6);[](#l1.2359)
val = SECOND();[](#l1.2360)
tb = THIRD();[](#l1.2361)
tp2 = FOURTH();[](#l1.2362)
exc2 = PEEK(5);[](#l1.2363)
tb2 = PEEK(6);[](#l1.2364) exit_func = PEEK(7);[](#l1.2365)
SET_VALUE(7, tb);[](#l1.2366)
SET_VALUE(6, exc);[](#l1.2367)
SET_VALUE(5, tp);[](#l1.2368)
SET_VALUE(7, tb2);[](#l1.2369)
SET_VALUE(6, exc2);[](#l1.2370)
SET_VALUE(5, tp2);[](#l1.2371) /* UNWIND_EXCEPT_HANDLER will pop this off. */[](#l1.2372) SET_FOURTH(NULL);[](#l1.2373) /* We just shifted the stack down, so we have[](#l1.2374)
@@ -2652,56 +2753,53 @@ PyEval_EvalFrameEx(PyFrameObject f, int block->b_level--; } / XXX Not the fastest way to call it... */
x = PyObject_CallFunctionObjArgs(exit_func, u, v, w,[](#l1.2379)
NULL);[](#l1.2380)
res = PyObject_CallFunctionObjArgs(exit_func, exc, val, tb, NULL);[](#l1.2381) Py_DECREF(exit_func);[](#l1.2382)
if (x == NULL)[](#l1.2383)
break; /* Go to error exit */[](#l1.2384)
if (u != Py_None)[](#l1.2386)
err = PyObject_IsTrue(x);[](#l1.2387)
if (res == NULL)[](#l1.2388)
goto error;[](#l1.2389)
if (exc != Py_None)[](#l1.2391)
err = PyObject_IsTrue(res);[](#l1.2392) else[](#l1.2393) err = 0;[](#l1.2394)
Py_DECREF(x);[](#l1.2395)
Py_DECREF(res);[](#l1.2396)
break; /* Go to error exit */[](#l1.2399)
goto error;[](#l1.2400) else if (err > 0) {[](#l1.2401) err = 0;[](#l1.2402) /* There was an exception and a True return */[](#l1.2403) PUSH(PyLong_FromLong((long) WHY_SILENCED));[](#l1.2404) }[](#l1.2405) PREDICT(END_FINALLY);[](#l1.2406)
break;[](#l1.2407)
DISPATCH();[](#l1.2408) }[](#l1.2409)
TARGET(CALL_FUNCTION)[](#l1.2411)
{[](#l1.2412)
PyObject **sp;[](#l1.2413)
TARGET(CALL_FUNCTION) {[](#l1.2414)
PyObject **sp, *res;[](#l1.2415) PCALL(PCALL_ALL);[](#l1.2416) sp = stack_pointer;[](#l1.2417)
x = call_function(&sp, oparg, &intr0, &intr1);[](#l1.2419)
res = call_function(&sp, oparg, &intr0, &intr1);[](#l1.2420)
x = call_function(&sp, oparg);[](#l1.2422)
res = call_function(&sp, oparg);[](#l1.2423)
PUSH(x);[](#l1.2426)
if (x != NULL)[](#l1.2427)
DISPATCH();[](#l1.2428)
break;[](#l1.2429)
PUSH(res);[](#l1.2430)
if (res == NULL)[](#l1.2431)
goto error;[](#l1.2432)
DISPATCH();[](#l1.2433) }[](#l1.2434)
TARGET_WITH_IMPL(CALL_FUNCTION_VAR, _call_function_var_kw) TARGET_WITH_IMPL(CALL_FUNCTION_KW, _call_function_var_kw) TARGET(CALL_FUNCTION_VAR_KW)
_call_function_var_kw:[](#l1.2439)
{[](#l1.2440)
_call_function_var_kw: {[](#l1.2441) int na = oparg & 0xff;[](#l1.2442) int nk = (oparg>>8) & 0xff;[](#l1.2443) int flags = (opcode - CALL_FUNCTION) & 3;[](#l1.2444) int n = na + 2 * nk;[](#l1.2445)
PyObject **pfunc, *func, **sp;[](#l1.2446)
PyObject **pfunc, *func, **sp, *res;[](#l1.2447) PCALL(PCALL_ALL);[](#l1.2448) if (flags & CALL_FLAG_VAR)[](#l1.2449) n++;[](#l1.2450)
@@ -2724,137 +2822,156 @@ PyEval_EvalFrameEx(PyFrameObject *f, int Py_INCREF(func); sp = stack_pointer; READ_TIMESTAMP(intr0);
x = ext_do_call(func, &sp, flags, na, nk);[](#l1.2455)
res = ext_do_call(func, &sp, flags, na, nk);[](#l1.2456) READ_TIMESTAMP(intr1);[](#l1.2457) stack_pointer = sp;[](#l1.2458) Py_DECREF(func);[](#l1.2459)
while (stack_pointer > pfunc) {
w = POP();[](#l1.2462)
Py_DECREF(w);[](#l1.2463)
PyObject *o = POP();[](#l1.2464)
Py_DECREF(o);[](#l1.2465) }[](#l1.2466)
PUSH(x);[](#l1.2467)
if (x != NULL)[](#l1.2468)
DISPATCH();[](#l1.2469)
break;[](#l1.2470)
PUSH(res);[](#l1.2471)
if (res == NULL)[](#l1.2472)
goto error;[](#l1.2473)
DISPATCH();[](#l1.2474) }[](#l1.2475)
TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function) TARGET(MAKE_FUNCTION)
_make_function:[](#l1.2479)
{[](#l1.2480)
_make_function: {[](#l1.2481) int posdefaults = oparg & 0xff;[](#l1.2482) int kwdefaults = (oparg>>8) & 0xff;[](#l1.2483) int num_annotations = (oparg >> 16) & 0x7fff;[](#l1.2484)
w = POP(); /* qualname */[](#l1.2486)
v = POP(); /* code object */[](#l1.2487)
x = PyFunction_NewWithQualName(v, f->f_globals, w);[](#l1.2488)
Py_DECREF(v);[](#l1.2489)
Py_DECREF(w);[](#l1.2490)
if (x != NULL && opcode == MAKE_CLOSURE) {[](#l1.2492)
v = POP();[](#l1.2493)
if (PyFunction_SetClosure(x, v) != 0) {[](#l1.2494)
PyObject *qualname = POP(); /* qualname */[](#l1.2495)
PyObject *code = POP(); /* code object */[](#l1.2496)
PyObject *func = PyFunction_NewWithQualName(code, f->f_globals, qualname);[](#l1.2497)
Py_DECREF(code);[](#l1.2498)
Py_DECREF(qualname);[](#l1.2499)
if (func == NULL)[](#l1.2501)
goto error;[](#l1.2502)
if (opcode == MAKE_CLOSURE) {[](#l1.2504)
PyObject *closure = POP();[](#l1.2505)
if (PyFunction_SetClosure(func, closure) != 0) {[](#l1.2506) /* Can't happen unless bytecode is corrupt. */[](#l1.2507)
why = WHY_EXCEPTION;[](#l1.2508)
Py_DECREF(func);[](#l1.2509)
Py_DECREF(closure);[](#l1.2510)
goto error;[](#l1.2511) }[](#l1.2512)
Py_DECREF(v);[](#l1.2513)
Py_DECREF(closure);[](#l1.2514) }[](#l1.2515)
if (x != NULL && num_annotations > 0) {[](#l1.2517)
if (num_annotations > 0) {[](#l1.2518) Py_ssize_t name_ix;[](#l1.2519)
u = POP(); /* names of args with annotations */[](#l1.2520)
v = PyDict_New();[](#l1.2521)
if (v == NULL) {[](#l1.2522)
Py_DECREF(x);[](#l1.2523)
x = NULL;[](#l1.2524)
break;[](#l1.2525)
PyObject *names = POP(); /* names of args with annotations */[](#l1.2526)
PyObject *anns = PyDict_New();[](#l1.2527)
if (anns == NULL) {[](#l1.2528)
Py_DECREF(func);[](#l1.2529)
goto error;[](#l1.2530) }[](#l1.2531)
name_ix = PyTuple_Size(u);[](#l1.2532)
name_ix = PyTuple_Size(names);[](#l1.2533) assert(num_annotations == name_ix+1);[](#l1.2534) while (name_ix > 0) {[](#l1.2535)
PyObject *name, *value;[](#l1.2536)
int err;[](#l1.2537) --name_ix;[](#l1.2538)
t = PyTuple_GET_ITEM(u, name_ix);[](#l1.2539)
w = POP();[](#l1.2540)
/* XXX(nnorwitz): check for errors */[](#l1.2541)
PyDict_SetItem(v, t, w);[](#l1.2542)
Py_DECREF(w);[](#l1.2543)
name = PyTuple_GET_ITEM(names, name_ix);[](#l1.2544)
value = POP();[](#l1.2545)
err = PyDict_SetItem(anns, name, value);[](#l1.2546)
Py_DECREF(value);[](#l1.2547)
if (err != 0) {[](#l1.2548)
Py_DECREF(anns);[](#l1.2549)
Py_DECREF(func);[](#l1.2550)
goto error;[](#l1.2551)
}[](#l1.2552) }[](#l1.2553)
if (PyFunction_SetAnnotations(x, v) != 0) {[](#l1.2555)
if (PyFunction_SetAnnotations(func, anns) != 0) {[](#l1.2556) /* Can't happen unless[](#l1.2557) PyFunction_SetAnnotations changes. */[](#l1.2558)
why = WHY_EXCEPTION;[](#l1.2559)
Py_DECREF(anns);[](#l1.2560)
Py_DECREF(func);[](#l1.2561)
goto error;[](#l1.2562) }[](#l1.2563)
Py_DECREF(v);[](#l1.2564)
Py_DECREF(u);[](#l1.2565)
Py_DECREF(anns);[](#l1.2566)
Py_DECREF(names);[](#l1.2567) }[](#l1.2568)
/* XXX Maybe this should be a separate opcode? */
if (x != NULL && posdefaults > 0) {[](#l1.2571)
v = PyTuple_New(posdefaults);[](#l1.2572)
if (v == NULL) {[](#l1.2573)
Py_DECREF(x);[](#l1.2574)
x = NULL;[](#l1.2575)
break;[](#l1.2576)
if (posdefaults > 0) {[](#l1.2577)
PyObject *defs = PyTuple_New(posdefaults);[](#l1.2578)
if (defs == NULL) {[](#l1.2579)
Py_DECREF(func);[](#l1.2580)
goto error;[](#l1.2581) }[](#l1.2582)
while (--posdefaults >= 0) {[](#l1.2583)
w = POP();[](#l1.2584)
PyTuple_SET_ITEM(v, posdefaults, w);[](#l1.2585)
}[](#l1.2586)
if (PyFunction_SetDefaults(x, v) != 0) {[](#l1.2587)
while (--posdefaults >= 0)[](#l1.2588)
PyTuple_SET_ITEM(defs, posdefaults, POP());[](#l1.2589)
if (PyFunction_SetDefaults(func, defs) != 0) {[](#l1.2590) /* Can't happen unless[](#l1.2591) PyFunction_SetDefaults changes. */[](#l1.2592)
why = WHY_EXCEPTION;[](#l1.2593)
Py_DECREF(defs);[](#l1.2594)
Py_DECREF(func);[](#l1.2595)
goto error;[](#l1.2596) }[](#l1.2597)
Py_DECREF(v);[](#l1.2598)
Py_DECREF(defs);[](#l1.2599) }[](#l1.2600)
if (x != NULL && kwdefaults > 0) {[](#l1.2601)
v = PyDict_New();[](#l1.2602)
if (v == NULL) {[](#l1.2603)
Py_DECREF(x);[](#l1.2604)
x = NULL;[](#l1.2605)
break;[](#l1.2606)
if (kwdefaults > 0) {[](#l1.2607)
PyObject *defs = PyDict_New();[](#l1.2608)
if (defs == NULL) {[](#l1.2609)
Py_DECREF(func);[](#l1.2610)
goto error;[](#l1.2611) }[](#l1.2612) while (--kwdefaults >= 0) {[](#l1.2613)
w = POP(); /* default value */[](#l1.2614)
u = POP(); /* kw only arg name */[](#l1.2615)
/* XXX(nnorwitz): check for errors */[](#l1.2616)
PyDict_SetItem(v, u, w);[](#l1.2617)
Py_DECREF(w);[](#l1.2618)
Py_DECREF(u);[](#l1.2619)
PyObject *v = POP(); /* default value */[](#l1.2620)
PyObject *key = POP(); /* kw only arg name */[](#l1.2621)
int err = PyDict_SetItem(defs, key, v);[](#l1.2622)
Py_DECREF(v);[](#l1.2623)
Py_DECREF(key);[](#l1.2624)
if (err != 0) {[](#l1.2625)
Py_DECREF(defs);[](#l1.2626)
Py_DECREF(func);[](#l1.2627)
goto error;[](#l1.2628)
}[](#l1.2629) }[](#l1.2630)
if (PyFunction_SetKwDefaults(x, v) != 0) {[](#l1.2631)
if (PyFunction_SetKwDefaults(func, defs) != 0) {[](#l1.2632) /* Can't happen unless[](#l1.2633) PyFunction_SetKwDefaults changes. */[](#l1.2634)
why = WHY_EXCEPTION;[](#l1.2635)
Py_DECREF(func);[](#l1.2636)
Py_DECREF(defs);[](#l1.2637)
goto error;[](#l1.2638) }[](#l1.2639)
Py_DECREF(v);[](#l1.2640)
Py_DECREF(defs);[](#l1.2641) }[](#l1.2642)
PUSH(x);[](#l1.2643)
break;[](#l1.2644)
PUSH(func);[](#l1.2645)
DISPATCH();[](#l1.2646) }[](#l1.2647)
TARGET(BUILD_SLICE)[](#l1.2649)
TARGET(BUILD_SLICE) {[](#l1.2650)
PyObject *start, *stop, *step, *slice;[](#l1.2651) if (oparg == 3)[](#l1.2652)
w = POP();[](#l1.2653)
step = POP();[](#l1.2654) else[](#l1.2655)
w = NULL;[](#l1.2656)
v = POP();[](#l1.2657)
u = TOP();[](#l1.2658)
x = PySlice_New(u, v, w);[](#l1.2659)
Py_DECREF(u);[](#l1.2660)
Py_DECREF(v);[](#l1.2661)
Py_XDECREF(w);[](#l1.2662)
SET_TOP(x);[](#l1.2663)
if (x != NULL) DISPATCH();[](#l1.2664)
break;[](#l1.2665)
TARGET(EXTENDED_ARG)[](#l1.2667)
step = NULL;[](#l1.2668)
stop = POP();[](#l1.2669)
start = TOP();[](#l1.2670)
slice = PySlice_New(start, stop, step);[](#l1.2671)
Py_DECREF(start);[](#l1.2672)
Py_DECREF(stop);[](#l1.2673)
Py_XDECREF(step);[](#l1.2674)
SET_TOP(slice);[](#l1.2675)
if (slice == NULL)[](#l1.2676)
goto error;[](#l1.2677)
DISPATCH();[](#l1.2678)
}[](#l1.2679)
TARGET(EXTENDED_ARG) {[](#l1.2681) opcode = NEXTOP();[](#l1.2682) oparg = oparg<<16 | NEXTARG();[](#l1.2683) goto dispatch_opcode;[](#l1.2684)
}[](#l1.2685)
#if USE_COMPUTED_GOTOS _unknown_opcode: @@ -2865,8 +2982,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int PyFrame_GetLineNumber(f), opcode); PyErr_SetString(PyExc_SystemError, "unknown opcode");
why = WHY_EXCEPTION;[](#l1.2693)
break;[](#l1.2694)
goto error;[](#l1.2695)
#ifdef CASE_TOO_BIG } @@ -2874,71 +2990,31 @@ PyEval_EvalFrameEx(PyFrameObject f, int } / switch */
on_error:[](#l1.2703)
/* This should never be reached. Every opcode should end with DISPATCH()[](#l1.2705)
or goto error. */[](#l1.2706)
assert(0);[](#l1.2707)
+ +error: READ_TIMESTAMP(inst1);
/* Quickly continue if no error occurred */[](#l1.2712)
if (why == WHY_NOT) {[](#l1.2714)
if (err == 0 && x != NULL) {[](#l1.2715)
/* This check is expensive! */[](#l1.2717)
if (PyErr_Occurred())[](#l1.2718)
fprintf(stderr,[](#l1.2719)
"XXX undetected error\n");[](#l1.2720)
else {[](#l1.2721)
READ_TIMESTAMP(loop1);[](#l1.2723)
continue; /* Normal, fast path */[](#l1.2724)
}[](#l1.2726)
}[](#l1.2728)
why = WHY_EXCEPTION;[](#l1.2729)
x = Py_None;[](#l1.2730)
err = 0;[](#l1.2731)
}[](#l1.2732)
/* Double-check exception status */[](#l1.2734)
if (why == WHY_EXCEPTION || why == WHY_RERAISE) {[](#l1.2736)
if (!PyErr_Occurred()) {[](#l1.2737)
PyErr_SetString(PyExc_SystemError,[](#l1.2738)
"error return without exception set");[](#l1.2739)
why = WHY_EXCEPTION;[](#l1.2740)
}[](#l1.2741)
}[](#l1.2742)
else {[](#l1.2744)
/* This check is expensive! */[](#l1.2745)
if (PyErr_Occurred()) {[](#l1.2746)
char buf[128];[](#l1.2747)
sprintf(buf, "Stack unwind with exception "[](#l1.2748)
"set and why=%d", why);[](#l1.2749)
Py_FatalError(buf);[](#l1.2750)
}[](#l1.2751)
}[](#l1.2752)
/* Log traceback info if this is a real exception */[](#l1.2755)
if (why == WHY_EXCEPTION) {[](#l1.2757)
PyTraceBack_Here(f);[](#l1.2758)
if (tstate->c_tracefunc != NULL)[](#l1.2760)
call_exc_trace(tstate->c_tracefunc,[](#l1.2761)
tstate->c_traceobj, f);[](#l1.2762)
}[](#l1.2763)
/* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */[](#l1.2765)
if (why == WHY_RERAISE)[](#l1.2767)
why = WHY_EXCEPTION;[](#l1.2768)
assert(why == WHY_NOT);[](#l1.2769)
why = WHY_EXCEPTION;[](#l1.2770)
/* Double-check exception status. */[](#l1.2772)
if (!PyErr_Occurred())[](#l1.2773)
PyErr_SetString(PyExc_SystemError,[](#l1.2774)
"error return without exception set");[](#l1.2775)
/* Log traceback info. */[](#l1.2777)
PyTraceBack_Here(f);[](#l1.2778)
if (tstate->c_tracefunc != NULL)[](#l1.2780)
call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, f);[](#l1.2781)
assert(why != WHY_NOT);[](#l1.2784)
/* Unwind stacks if a (pseudo) exception occurred / - -fast_block_end: while (why != WHY_NOT && f->f_iblock > 0) { / Peek at the current block. */ PyTryBlock b = &f->f_blockstack[f->f_iblock - 1]; @@ -3022,8 +3098,8 @@ fast_block_end: assert(why != WHY_YIELD); / Pop remaining stack entries. */ while (!EMPTY()) {
v = POP();[](#l1.2796)
Py_XDECREF(v);[](#l1.2797)
PyObject *o = POP();[](#l1.2798)
} if (why != WHY_RETURN) @@ -3523,7 +3599,7 @@ restore_and_clear_exc_state(PyThreadStat /* Logic for the raise statement (too complicated for inlining). This consumes a reference count to each of its arguments. */ -static enum why_code +static int do_raise(PyObject *exc, PyObject *cause) { PyObject *type = NULL, *value = NULL; @@ -3538,13 +3614,13 @@ do_raise(PyObject *exc, PyObject *cause) if (type == Py_None) { PyErr_SetString(PyExc_RuntimeError, "No active exception to reraise");Py_XDECREF(o);[](#l1.2799)
return WHY_EXCEPTION;[](#l1.2816)
}[](#l1.2817)
return 0;[](#l1.2818)
}[](#l1.2819) Py_XINCREF(type);[](#l1.2820) Py_XINCREF(value);[](#l1.2821) Py_XINCREF(tb);[](#l1.2822) PyErr_Restore(type, value, tb);[](#l1.2823)
return WHY_RERAISE;[](#l1.2824)
} /* We support the following forms of raise: @@ -3607,13 +3683,13 @@ do_raise(PyObject *exc, PyObject cause) / PyErr_SetObject incref's its arguments */ Py_XDECREF(value); Py_XDECREF(type);return 1;[](#l1.2825)
raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(cause);
} /* Iterate v argcnt times and store the results on the stack (via decreasing