/* This macro is used when several opcodes defer to the same implementation
(e.g. SETUP_LOOP, SETUP_FINALLY) */
#define TARGET_WITH_IMPL(op, impl) \
- TARGET_##op: \
- opcode = op; \
- oparg = NEXTARG(); \
- case op: \
- goto impl; \
+ TARGET_##op: \
+ opcode = op; \
+ oparg = NEXTARG(); \
+ case op: \
+ goto impl; \
#define TARGET_WITH_IMPL_NOARG(op, impl) \
- TARGET_##op: \
- opcode = op; \
- case op: \
- goto impl; \
+ TARGET_##op: \
+ opcode = op; \
+ case op: \
+ goto impl; \
#define TARGET_NOARG(op) \
- TARGET_##op: \
- opcode = op; \
- case op:\
+ TARGET_##op: \
+ opcode = op; \
+ case op:\
#define TARGET(op) \
- TARGET_##op: \
- opcode = op; \
- oparg = NEXTARG(); \
- case op:\
+ TARGET_##op: \
+ opcode = op; \
+ oparg = NEXTARG(); \
+ case op:\
#define DISPATCH() \
- { \
- int _tick = _Py_Ticker - 1; \
- _Py_Ticker = _tick; \
- if (_tick >= 0) { \
- FAST_DISPATCH(); \
- } \
- continue; \
- }
+ { \
+ int _tick = _Py_Ticker - 1; \
+ _Py_Ticker = _tick; \
+ if (_tick >= 0) { \
+ FAST_DISPATCH(); \
+ } \
+ continue; \
+ }
#ifdef LLTRACE
#define FAST_DISPATCH() \
- { \
- if (!lltrace && !_Py_TracingPossible) { \
- f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
- } \
- goto fast_next_opcode; \
- }
+ { \
+ if (!lltrace && !_Py_TracingPossible) { \
+ f->f_lasti = INSTR_OFFSET(); \
+ goto *opcode_targets[*next_instr++]; \
+ } \
+ goto fast_next_opcode; \
+ }
#else
#define FAST_DISPATCH() { \
- if (!_Py_TracingPossible) { \
- f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
- } \
- goto fast_next_opcode;\
+ if (!_Py_TracingPossible) { \
+ f->f_lasti = INSTR_OFFSET(); \
+ goto *opcode_targets[*next_instr++]; \
+ } \
+ goto fast_next_opcode;\
}
#endif
#else
#define TARGET(op) \
- case op:
+ case op:
#define TARGET_WITH_IMPL(op, impl) \
- /* silence compiler warnings about `impl` unused */ \
- if (0) goto impl; \
- case op:\
+ /* silence compiler warnings about `impl` unused */ \
+ if (0) goto impl; \
+ case op:\
#define TARGET_NOARG(op) \
- case op:\
+ case op:\
#define TARGET_WITH_IMPL_NOARG(op, impl) \
- if (0) goto impl; \
- case op:\
+ if (0) goto impl; \
+ case op:\
#define DISPATCH() continue
#define FAST_DISPATCH() goto fast_next_opcode
/* case STOP_CODE: this is an error! */
TARGET_NOARG(NOP)
- {
- FAST_DISPATCH();
- }
+ {
+ FAST_DISPATCH();
+ }
TARGET(LOAD_FAST)
{
if (x != NULL) {
Py_INCREF(x);
PUSH(x);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
format_exc_check_arg(PyExc_UnboundLocalError,
UNBOUNDLOCAL_ERROR_MSG,
x = GETITEM(consts, oparg);
Py_INCREF(x);
PUSH(x);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
PREDICTED_WITH_ARG(STORE_FAST);
{
v = POP();
SETLOCAL(oparg, v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
TARGET_NOARG(POP_TOP)
{
v = POP();
Py_DECREF(v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
TARGET_NOARG(ROT_TWO)
w = SECOND();
SET_TOP(w);
SET_SECOND(v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
TARGET_NOARG(ROT_THREE)
SET_TOP(w);
SET_SECOND(x);
SET_THIRD(v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
TARGET_NOARG(ROT_FOUR)
- {
+ {
u = TOP();
v = SECOND();
w = THIRD();
SET_THIRD(x);
SET_FOURTH(u);
FAST_DISPATCH();
- }
+ }
TARGET_NOARG(DUP_TOP)
v = TOP();
Py_INCREF(v);
PUSH(v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
STACKADJ(2);
SET_TOP(x);
SET_SECOND(w);
- FAST_DISPATCH();
+ FAST_DISPATCH();
} else if (oparg == 3) {
x = TOP();
Py_INCREF(x);
SET_TOP(x);
SET_SECOND(w);
SET_THIRD(v);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
Py_FatalError("invalid argument to DUP_TOPX"
" (bytecode corruption?)");
x = PyNumber_Positive(v);
Py_DECREF(v);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
x = PyNumber_Negative(v);
Py_DECREF(v);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
if (err == 0) {
Py_INCREF(Py_True);
SET_TOP(Py_True);
- DISPATCH();
+ DISPATCH();
}
else if (err > 0) {
Py_INCREF(Py_False);
SET_TOP(Py_False);
err = 0;
- DISPATCH();
+ DISPATCH();
}
STACKADJ(-1);
break;
x = PyObject_Repr(v);
Py_DECREF(v);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
x = PyNumber_Invert(v);
Py_DECREF(v);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if(x!=NULL) DISPATCH();
+ if(x!=NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
skip_decref_vx:
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(w);
if (err == 0) {
PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
+ DISPATCH();
}
break;
}
Py_DECREF(w);
if (err == 0) {
PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
+ DISPATCH();
}
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
skip_decref_v:
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
TARGET_WITH_IMPL_NOARG(SLICE, _slice)
TARGET_WITH_IMPL_NOARG(SLICE_1, _slice)
- TARGET_WITH_IMPL_NOARG(SLICE_2, _slice)
- TARGET_WITH_IMPL_NOARG(SLICE_3, _slice)
- _slice:
- {
+ TARGET_WITH_IMPL_NOARG(SLICE_2, _slice)
+ TARGET_WITH_IMPL_NOARG(SLICE_3, _slice)
+ _slice:
+ {
if ((opcode-SLICE) & 2)
w = POP();
else
Py_XDECREF(v);
Py_XDECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
- }
+ }
TARGET_WITH_IMPL_NOARG(STORE_SLICE, _store_slice)
TARGET_WITH_IMPL_NOARG(STORE_SLICE_1, _store_slice)
- TARGET_WITH_IMPL_NOARG(STORE_SLICE_2, _store_slice)
- TARGET_WITH_IMPL_NOARG(STORE_SLICE_3, _store_slice)
- _store_slice:
- {
+ TARGET_WITH_IMPL_NOARG(STORE_SLICE_2, _store_slice)
+ TARGET_WITH_IMPL_NOARG(STORE_SLICE_3, _store_slice)
+ _store_slice:
+ {
if ((opcode-STORE_SLICE) & 2)
w = POP();
else
Py_DECREF(u);
Py_XDECREF(v);
Py_XDECREF(w);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
- }
+ }
TARGET_WITH_IMPL_NOARG(DELETE_SLICE, _delete_slice)
TARGET_WITH_IMPL_NOARG(DELETE_SLICE_1, _delete_slice)
- TARGET_WITH_IMPL_NOARG(DELETE_SLICE_2, _delete_slice)
- TARGET_WITH_IMPL_NOARG(DELETE_SLICE_3, _delete_slice)
- _delete_slice:
- {
+ TARGET_WITH_IMPL_NOARG(DELETE_SLICE_2, _delete_slice)
+ TARGET_WITH_IMPL_NOARG(DELETE_SLICE_3, _delete_slice)
+ _delete_slice:
+ {
if ((opcode-DELETE_SLICE) & 2)
w = POP();
else
Py_DECREF(u);
Py_XDECREF(v);
Py_XDECREF(w);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
- }
+ }
TARGET_NOARG(STORE_SUBSCR)
{
Py_DECREF(u);
Py_DECREF(v);
Py_DECREF(w);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
err = PyObject_DelItem(v, w);
Py_DECREF(v);
Py_DECREF(w);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
Py_DECREF(v);
Py_XDECREF(stream);
stream = NULL;
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
TARGET_NOARG(PRINT_NEWLINE)
{
- if (stream == NULL || stream == Py_None)
- {
+ if (stream == NULL || stream == Py_None)
+ {
w = PySys_GetObject("stdout");
if (w == NULL) {
PyErr_SetString(PyExc_RuntimeError,
#endif
TARGET(RAISE_VARARGS)
- {
+ {
u = v = w = NULL;
switch (oparg) {
case 3:
break;
}
break;
- }
+ }
TARGET_NOARG(LOAD_LOCALS)
{
- if ((x = f->f_locals) != NULL)
- {
+ if ((x = f->f_locals) != NULL)
+ {
Py_INCREF(x);
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
PyErr_SetString(PyExc_SystemError, "no locals");
break;
Py_DECREF(v);
}
}
- DISPATCH();
+ DISPATCH();
}
PREDICTED(END_FINALLY);
else
err = PyObject_SetItem(x, w, v);
Py_DECREF(v);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
t = PyObject_Repr(w);
PUSH(w);
}
Py_DECREF(v);
- DISPATCH();
+ DISPATCH();
} else if (PyList_CheckExact(v) &&
PyList_GET_SIZE(v) == oparg) {
PyObject **items = \
err = PyObject_SetAttr(v, w, u); /* v.w = u */
Py_DECREF(v);
Py_DECREF(u);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
v = POP();
err = PyDict_SetItem(f->f_globals, w, v);
Py_DECREF(v);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
Py_INCREF(x);
}
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
TARGET(LOAD_GLOBAL)
if (x != NULL) {
Py_INCREF(x);
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
d = (PyDictObject *)(f->f_builtins);
e = d->ma_lookup(d, w, hash);
if (x != NULL) {
Py_INCREF(x);
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
goto load_global_error;
}
}
Py_INCREF(x);
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
TARGET(DELETE_FAST)
x = GETLOCAL(oparg);
if (x != NULL) {
SETLOCAL(oparg, NULL);
- DISPATCH();
+ DISPATCH();
}
format_exc_check_arg(
PyExc_UnboundLocalError,
x = freevars[oparg];
Py_INCREF(x);
PUSH(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
w = PyCell_Get(x);
if (w != NULL) {
PUSH(w);
- DISPATCH();
+ DISPATCH();
}
err = -1;
/* Don't stomp existing exception */
x = freevars[oparg];
PyCell_Set(x, w);
Py_DECREF(w);
- DISPATCH();
+ DISPATCH();
}
TARGET(BUILD_TUPLE)
PyTuple_SET_ITEM(x, oparg, w);
}
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
break;
}
PyList_SET_ITEM(x, oparg, w);
}
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
break;
}
break;
}
PUSH(x);
- DISPATCH();
+ DISPATCH();
}
break;
}
{
x = _PyDict_NewPresized((Py_ssize_t)oparg);
PUSH(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
err = PyDict_SetItem(v, w, u); /* v[w] = u */
Py_DECREF(u);
Py_DECREF(w);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
Py_DECREF(w);
if (err == 0) {
PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
+ DISPATCH();
}
break;
}
x = PyObject_GetAttr(v, w);
Py_DECREF(v);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
if (x == NULL) break;
PREDICT(POP_JUMP_IF_FALSE);
PREDICT(POP_JUMP_IF_TRUE);
- DISPATCH();
+ DISPATCH();
}
TARGET(IMPORT_NAME)
READ_TIMESTAMP(intr1);
Py_DECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
READ_TIMESTAMP(intr1);
PyFrame_LocalsToFast(f, 0);
Py_DECREF(v);
- if (err == 0) DISPATCH();
+ if (err == 0) DISPATCH();
break;
}
x = import_from(v, w);
READ_TIMESTAMP(intr1);
PUSH(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
TARGET(JUMP_FORWARD)
{
JUMPBY(oparg);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
w = POP();
if (w == Py_True) {
Py_DECREF(w);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
if (w == Py_False) {
Py_DECREF(w);
JUMPTO(oparg);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
err = PyObject_IsTrue(w);
Py_DECREF(w);
JUMPTO(oparg);
else
break;
- DISPATCH();
+ DISPATCH();
}
PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
w = POP();
if (w == Py_False) {
Py_DECREF(w);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
if (w == Py_True) {
Py_DECREF(w);
JUMPTO(oparg);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
err = PyObject_IsTrue(w);
Py_DECREF(w);
;
else
break;
- DISPATCH();
+ DISPATCH();
}
TARGET(JUMP_IF_FALSE_OR_POP)
if (w == Py_True) {
STACKADJ(-1);
Py_DECREF(w);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
if (w == Py_False) {
JUMPTO(oparg);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
err = PyObject_IsTrue(w);
if (err > 0) {
JUMPTO(oparg);
else
break;
- DISPATCH();
+ DISPATCH();
}
TARGET(JUMP_IF_TRUE_OR_POP)
if (w == Py_False) {
STACKADJ(-1);
Py_DECREF(w);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
if (w == Py_True) {
JUMPTO(oparg);
- FAST_DISPATCH();
+ FAST_DISPATCH();
}
err = PyObject_IsTrue(w);
if (err > 0) {
}
else
break;
- DISPATCH();
+ DISPATCH();
}
PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
*/
goto fast_next_opcode;
#else
- DISPATCH();
+ DISPATCH();
#endif
}
if (x != NULL) {
SET_TOP(x);
PREDICT(FOR_ITER);
- DISPATCH();
+ DISPATCH();
}
STACKADJ(-1);
break;
PUSH(x);
PREDICT(STORE_FAST);
PREDICT(UNPACK_SEQUENCE);
- DISPATCH();
+ DISPATCH();
}
if (PyErr_Occurred()) {
if (!PyErr_ExceptionMatches(
x = v = POP();
Py_DECREF(v);
JUMPBY(oparg);
- DISPATCH();
+ DISPATCH();
}
TARGET_NOARG(BREAK_LOOP)
TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally)
TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally)
- TARGET(SETUP_FINALLY)
- _setup_finally:
- {
+ TARGET(SETUP_FINALLY)
+ _setup_finally:
+ {
/* NOTE: If you add any new block-setup opcodes that
are not try/except/finally handlers, you may need
to update the PyGen_NeedsFinalizing() function.
PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg,
STACK_LEVEL());
- DISPATCH();
- }
+ DISPATCH();
+ }
STACK_LEVEL());
PUSH(x);
- DISPATCH();
- }
+ DISPATCH();
+ }
}
TARGET_NOARG(WITH_CLEANUP)
#endif
stack_pointer = sp;
PUSH(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
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:
+ TARGET(CALL_FUNCTION_VAR_KW)
+ _call_function_var_kw:
{
int na = oparg & 0xff;
int nk = (oparg>>8) & 0xff;
Py_DECREF(w);
}
PUSH(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}
Py_DECREF(v);
Py_XDECREF(w);
SET_TOP(x);
- if (x != NULL) DISPATCH();
+ if (x != NULL) DISPATCH();
break;
}