| #include "Python.h" | 
 | #include "opcode.h" | 
 |  | 
 | /*[clinic input] | 
 | module _opcode | 
 | [clinic start generated code]*/ | 
 | /*[clinic end generated code: output=da39a3ee5e6b4b0d input=117442e66eb376e6]*/ | 
 |  | 
 | #include "clinic/_opcode.c.h" | 
 |  | 
 | /*[clinic input] | 
 |  | 
 | _opcode.stack_effect -> int | 
 |  | 
 |   opcode: int | 
 |   oparg: object = None | 
 |   / | 
 |  | 
 | Compute the stack effect of the opcode. | 
 | [clinic start generated code]*/ | 
 |  | 
 | static int | 
 | _opcode_stack_effect_impl(PyObject *module, int opcode, PyObject *oparg) | 
 | /*[clinic end generated code: output=ad39467fa3ad22ce input=2d0a9ee53c0418f5]*/ | 
 | { | 
 |     int effect; | 
 |     int oparg_int = 0; | 
 |     if (HAS_ARG(opcode)) { | 
 |         if (oparg == Py_None) { | 
 |             PyErr_SetString(PyExc_ValueError, | 
 |                     "stack_effect: opcode requires oparg but oparg was not specified"); | 
 |             return -1; | 
 |         } | 
 |         oparg_int = (int)PyLong_AsLong(oparg); | 
 |         if ((oparg_int == -1) && PyErr_Occurred()) | 
 |             return -1; | 
 |     } | 
 |     else if (oparg != Py_None) { | 
 |         PyErr_SetString(PyExc_ValueError, | 
 |                 "stack_effect: opcode does not permit oparg but oparg was specified"); | 
 |         return -1; | 
 |     } | 
 |     effect = PyCompile_OpcodeStackEffect(opcode, oparg_int); | 
 |     if (effect == PY_INVALID_STACK_EFFECT) { | 
 |             PyErr_SetString(PyExc_ValueError, | 
 |                     "invalid opcode or oparg"); | 
 |             return -1; | 
 |     } | 
 |     return effect; | 
 | } | 
 |  | 
 |  | 
 |  | 
 |  | 
 | static PyMethodDef | 
 | opcode_functions[] =  { | 
 |     _OPCODE_STACK_EFFECT_METHODDEF | 
 |     {NULL, NULL, 0, NULL} | 
 | }; | 
 |  | 
 |  | 
 | static struct PyModuleDef opcodemodule = { | 
 |     PyModuleDef_HEAD_INIT, | 
 |     "_opcode", | 
 |     "Opcode support module.", | 
 |     -1, | 
 |     opcode_functions, | 
 |     NULL, | 
 |     NULL, | 
 |     NULL, | 
 |     NULL | 
 | }; | 
 |  | 
 | PyMODINIT_FUNC | 
 | PyInit__opcode(void) | 
 | { | 
 |     return PyModule_Create(&opcodemodule); | 
 | } |