diff --git a/Makefile.pre.in b/Makefile.pre.in index 365449d644583f..098d249c466f51 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -979,9 +979,12 @@ Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h regen-opcode-targets: # Regenerate Python/opcode_targets.h from Lib/opcode.py # using Python/makeopcodetargets.py - $(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py \ + $(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py --targets \ $(srcdir)/Python/opcode_targets.h.new $(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new + $(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py --unknowns \ + $(srcdir)/Python/unknown_opcodes.h.new + $(UPDATE_FILE) $(srcdir)/Python/unknown_opcodes.h $(srcdir)/Python/unknown_opcodes.h.new Python/ceval.o: $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/ceval_gil.h \ $(srcdir)/Python/condvar.h diff --git a/Python/ceval.c b/Python/ceval.c index fde08a64e24a56..9dfd93098fa380 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -64,6 +64,9 @@ static PyObject * do_call_core( #ifdef LLTRACE static int lltrace; static int prtrace(PyThreadState *, PyObject *, const char *); +#define LLTRACE_ON lltrace +#else +#define LLTRACE_ON 0 #endif static int call_trace(Py_tracefunc, PyObject *, PyThreadState *, PyFrameObject *, @@ -1292,34 +1295,21 @@ eval_frame_handle_pending(PyThreadState *tstate) #define TARGET(op) \ op: \ TARGET_##op - -#ifdef LLTRACE -#define DISPATCH() \ - { \ - if (!lltrace && !_Py_TracingPossible(ceval2) && !PyDTrace_LINE_ENABLED()) { \ - f->f_lasti = INSTR_OFFSET(); \ - NEXTOPARG(); \ - goto *opcode_targets[opcode]; \ - } \ - goto fast_next_opcode; \ - } +#define DISPATCH_GOTO goto *opcode_targets[opcode]; #else +#define TARGET(op) op +#define DISPATCH_GOTO goto dispatch_opcode; +#endif + #define DISPATCH() \ { \ - if (!_Py_TracingPossible(ceval2) && !PyDTrace_LINE_ENABLED()) { \ - f->f_lasti = INSTR_OFFSET(); \ - NEXTOPARG(); \ - goto *opcode_targets[opcode]; \ + if (LLTRACE_ON || _Py_TracingPossible(ceval2) || PyDTrace_LINE_ENABLED()) { \ + goto tracing_dispatch; \ } \ - goto fast_next_opcode; \ + f->f_lasti = INSTR_OFFSET(); \ + NEXTOPARG(); \ + DISPATCH_GOTO \ } -#endif - -#else -#define TARGET(op) op -#define DISPATCH() goto fast_next_opcode - -#endif #define CHECK_EVAL_BREAKER() \ if (_Py_atomic_load_relaxed(eval_breaker)) { \ @@ -1598,7 +1588,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) #endif PyObject **stack_pointer; /* Next free slot in value stack */ const _Py_CODEUNIT *next_instr; - int opcode; /* Current opcode */ + uint8_t opcode; /* Current opcode */ int oparg; /* Current opcode argument, if any */ PyObject **fastlocals, **freevars; PyObject *retval = NULL; /* Return value */ @@ -1606,14 +1596,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) _Py_atomic_int * const eval_breaker = &ceval2->eval_breaker; PyCodeObject *co; - /* when tracing we set things up so that - - not (instr_lb <= current_bytecode_offset < instr_ub) - - is true when the line being executed has changed. The - initial values are such as to make this false the first - time it is tested. */ - const _Py_CODEUNIT *first_instr; PyObject *names; PyObject *consts; @@ -1628,7 +1610,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) } PyTraceInfo trace_info; - /* Mark trace_info as initialized */ + /* Mark trace_info as uninitialized */ trace_info.code = NULL; /* push frame */ @@ -1766,10 +1748,10 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) if (_Py_atomic_load_relaxed(eval_breaker)) { opcode = _Py_OPCODE(*next_instr); - if (opcode == SETUP_FINALLY || - opcode == SETUP_WITH || - opcode == BEFORE_ASYNC_WITH || - opcode == YIELD_FROM) { + if (opcode != SETUP_FINALLY && + opcode != SETUP_WITH && + opcode != BEFORE_ASYNC_WITH && + opcode != YIELD_FROM) { /* Few cases where we skip running signal handlers and other pending calls: - If we're about to enter the 'with:'. It will prevent @@ -1786,16 +1768,15 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) running the signal handler and raising KeyboardInterrupt (see bpo-30039). */ - goto fast_next_opcode; - } - - if (eval_frame_handle_pending(tstate) != 0) { - goto error; - } + if (eval_frame_handle_pending(tstate) != 0) { + goto error; + } + } } - fast_next_opcode: + tracing_dispatch: f->f_lasti = INSTR_OFFSET(); + NEXTOPARG(); if (PyDTrace_LINE_ENABLED()) maybe_dtrace_line(f, &trace_info); @@ -1813,18 +1794,16 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) tstate->c_traceobj, tstate, f, &trace_info); + if (err) { + /* trace function raised an exception */ + goto error; + } /* Reload possibly changed frame fields */ JUMPTO(f->f_lasti); stack_pointer = f->f_valuestack+f->f_stackdepth; f->f_stackdepth = -1; - if (err) - /* trace function raised an exception */ - goto error; + NEXTOPARG(); } - - /* Extract opcode and argument */ - - NEXTOPARG(); dispatch_opcode: #ifdef DYNAMIC_EXECUTION_PROFILE #ifdef DXPAIRS @@ -1853,7 +1832,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) /* BEWARE! It is essential that any operation that fails must goto error - and that all operation that succeed call [FAST_]DISPATCH() ! */ + and that all operation that succeed call DISPATCH() ! */ case TARGET(NOP): { DISPATCH(); @@ -4452,15 +4431,18 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) goto dispatch_opcode; } - #if USE_COMPUTED_GOTOS - _unknown_opcode: +#define UNKNOWN_OPCODE(i) _unknown_opcode_ ## i +#else +#define UNKNOWN_OPCODE(i) case i #endif - default: +#include "unknown_opcodes.h" + + _unknown_opcode: fprintf(stderr, "XXX lineno: %d, opcode: %d\n", PyFrame_GetLineNumber(f), - opcode); + oparg); _PyErr_SetString(tstate, PyExc_SystemError, "unknown opcode"); goto error; @@ -5415,7 +5397,6 @@ unpack_iterable(PyThreadState *tstate, PyObject *v, return 0; } - #ifdef LLTRACE static int prtrace(PyThreadState *tstate, PyObject *v, const char *str) diff --git a/Python/makeopcodetargets.py b/Python/makeopcodetargets.py index 023c9e6c9f1adc..e2588a3a459796 100755 --- a/Python/makeopcodetargets.py +++ b/Python/makeopcodetargets.py @@ -27,29 +27,51 @@ def find_module(modname): return SourceFileLoader(modname, modpath).load_module() -def write_contents(f): - """Write C code contents to the target file object. - """ +def write_targets(f): opcode = find_module('opcode') - targets = ['_unknown_opcode'] * 256 + targets = [f'_unknown_opcode_{i}' for i in range(256)] for opname, op in opcode.opmap.items(): targets[op] = "TARGET_%s" % opname f.write("static void *opcode_targets[256] = {\n") f.write(",\n".join([" &&%s" % s for s in targets])) f.write("\n};\n") +def write_unknowns(f): + opcode = find_module('opcode') + unknowns = [ True ] * 256 + for opname, op in opcode.opmap.items(): + unknowns[op] = False + for i, unknown in enumerate(unknowns): + if unknown: + f.write(f" UNKNOWN_OPCODE({i}):\n") + f.write(f" oparg = {i};\n") + f.write(f" goto _unknown_opcode;\n") + f.write("\n") def main(): - if len(sys.argv) >= 3: - sys.exit("Too many arguments") - if len(sys.argv) == 2: - target = sys.argv[1] + if len(sys.argv) >= 4: + sys.exit(f"Too many arguments: {len(sys.argv)}") + output = None + opt = None + for arg in sys.argv[1:]: + if arg.startswith("--"): + opt = arg + else: + output = arg + if opt == "--targets": + if output is None: + output = "Python/opcode_targets.h" + with open(output, "w") as f: + write_targets(f) + print("Jump table written into %s" % output) + elif opt == "--unknowns": + if output is None: + output = "Python/unknown_opcodes.h" + with open(output, "w") as f: + write_unknowns(f) + print("Unknown opcodes written into %s" % output) else: - target = "Python/opcode_targets.h" - with open(target, "w") as f: - write_contents(f) - print("Jump table written into %s" % target) - + sys.exit("Unknwown option " + opt) if __name__ == "__main__": main() diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 692442ac8c1b82..f9d41993685b2d 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -1,26 +1,26 @@ static void *opcode_targets[256] = { - &&_unknown_opcode, + &&_unknown_opcode_0, &&TARGET_POP_TOP, &&TARGET_ROT_TWO, &&TARGET_ROT_THREE, &&TARGET_DUP_TOP, &&TARGET_DUP_TOP_TWO, &&TARGET_ROT_FOUR, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_7, + &&_unknown_opcode_8, &&TARGET_NOP, &&TARGET_UNARY_POSITIVE, &&TARGET_UNARY_NEGATIVE, &&TARGET_UNARY_NOT, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_13, + &&_unknown_opcode_14, &&TARGET_UNARY_INVERT, &&TARGET_BINARY_MATRIX_MULTIPLY, &&TARGET_INPLACE_MATRIX_MULTIPLY, - &&_unknown_opcode, + &&_unknown_opcode_18, &&TARGET_BINARY_POWER, &&TARGET_BINARY_MULTIPLY, - &&_unknown_opcode, + &&_unknown_opcode_21, &&TARGET_BINARY_MODULO, &&TARGET_BINARY_ADD, &&TARGET_BINARY_SUBTRACT, @@ -34,30 +34,30 @@ static void *opcode_targets[256] = { &&TARGET_MATCH_SEQUENCE, &&TARGET_MATCH_KEYS, &&TARGET_COPY_DICT_WITHOUT_KEYS, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_35, + &&_unknown_opcode_36, + &&_unknown_opcode_37, + &&_unknown_opcode_38, + &&_unknown_opcode_39, + &&_unknown_opcode_40, + &&_unknown_opcode_41, + &&_unknown_opcode_42, + &&_unknown_opcode_43, + &&_unknown_opcode_44, + &&_unknown_opcode_45, + &&_unknown_opcode_46, + &&_unknown_opcode_47, + &&_unknown_opcode_48, &&TARGET_WITH_EXCEPT_START, &&TARGET_GET_AITER, &&TARGET_GET_ANEXT, &&TARGET_BEFORE_ASYNC_WITH, - &&_unknown_opcode, + &&_unknown_opcode_53, &&TARGET_END_ASYNC_FOR, &&TARGET_INPLACE_ADD, &&TARGET_INPLACE_SUBTRACT, &&TARGET_INPLACE_MULTIPLY, - &&_unknown_opcode, + &&_unknown_opcode_58, &&TARGET_INPLACE_MODULO, &&TARGET_STORE_SUBSCR, &&TARGET_DELETE_SUBSCR, @@ -79,15 +79,15 @@ static void *opcode_targets[256] = { &&TARGET_INPLACE_AND, &&TARGET_INPLACE_XOR, &&TARGET_INPLACE_OR, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_80, + &&_unknown_opcode_81, &&TARGET_LIST_TO_TUPLE, &&TARGET_RETURN_VALUE, &&TARGET_IMPORT_STAR, &&TARGET_SETUP_ANNOTATIONS, &&TARGET_YIELD_VALUE, &&TARGET_POP_BLOCK, - &&_unknown_opcode, + &&_unknown_opcode_88, &&TARGET_POP_EXCEPT, &&TARGET_STORE_NAME, &&TARGET_DELETE_NAME, @@ -98,7 +98,7 @@ static void *opcode_targets[256] = { &&TARGET_DELETE_ATTR, &&TARGET_STORE_GLOBAL, &&TARGET_DELETE_GLOBAL, - &&_unknown_opcode, + &&_unknown_opcode_99, &&TARGET_LOAD_CONST, &&TARGET_LOAD_NAME, &&TARGET_BUILD_TUPLE, @@ -119,27 +119,27 @@ static void *opcode_targets[256] = { &&TARGET_IS_OP, &&TARGET_CONTAINS_OP, &&TARGET_RERAISE, - &&_unknown_opcode, + &&_unknown_opcode_120, &&TARGET_JUMP_IF_NOT_EXC_MATCH, &&TARGET_SETUP_FINALLY, - &&_unknown_opcode, + &&_unknown_opcode_123, &&TARGET_LOAD_FAST, &&TARGET_STORE_FAST, &&TARGET_DELETE_FAST, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_127, + &&_unknown_opcode_128, + &&_unknown_opcode_129, &&TARGET_RAISE_VARARGS, &&TARGET_CALL_FUNCTION, &&TARGET_MAKE_FUNCTION, &&TARGET_BUILD_SLICE, - &&_unknown_opcode, + &&_unknown_opcode_134, &&TARGET_LOAD_CLOSURE, &&TARGET_LOAD_DEREF, &&TARGET_STORE_DEREF, &&TARGET_DELETE_DEREF, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_139, + &&_unknown_opcode_140, &&TARGET_CALL_FUNCTION_KW, &&TARGET_CALL_FUNCTION_EX, &&TARGET_SETUP_WITH, @@ -148,111 +148,111 @@ static void *opcode_targets[256] = { &&TARGET_SET_ADD, &&TARGET_MAP_ADD, &&TARGET_LOAD_CLASSDEREF, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_149, + &&_unknown_opcode_150, + &&_unknown_opcode_151, &&TARGET_MATCH_CLASS, - &&_unknown_opcode, + &&_unknown_opcode_153, &&TARGET_SETUP_ASYNC_WITH, &&TARGET_FORMAT_VALUE, &&TARGET_BUILD_CONST_KEY_MAP, &&TARGET_BUILD_STRING, - &&_unknown_opcode, - &&_unknown_opcode, + &&_unknown_opcode_158, + &&_unknown_opcode_159, &&TARGET_LOAD_METHOD, &&TARGET_CALL_METHOD, &&TARGET_LIST_EXTEND, &&TARGET_SET_UPDATE, &&TARGET_DICT_MERGE, &&TARGET_DICT_UPDATE, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode + &&_unknown_opcode_166, + &&_unknown_opcode_167, + &&_unknown_opcode_168, + &&_unknown_opcode_169, + &&_unknown_opcode_170, + &&_unknown_opcode_171, + &&_unknown_opcode_172, + &&_unknown_opcode_173, + &&_unknown_opcode_174, + &&_unknown_opcode_175, + &&_unknown_opcode_176, + &&_unknown_opcode_177, + &&_unknown_opcode_178, + &&_unknown_opcode_179, + &&_unknown_opcode_180, + &&_unknown_opcode_181, + &&_unknown_opcode_182, + &&_unknown_opcode_183, + &&_unknown_opcode_184, + &&_unknown_opcode_185, + &&_unknown_opcode_186, + &&_unknown_opcode_187, + &&_unknown_opcode_188, + &&_unknown_opcode_189, + &&_unknown_opcode_190, + &&_unknown_opcode_191, + &&_unknown_opcode_192, + &&_unknown_opcode_193, + &&_unknown_opcode_194, + &&_unknown_opcode_195, + &&_unknown_opcode_196, + &&_unknown_opcode_197, + &&_unknown_opcode_198, + &&_unknown_opcode_199, + &&_unknown_opcode_200, + &&_unknown_opcode_201, + &&_unknown_opcode_202, + &&_unknown_opcode_203, + &&_unknown_opcode_204, + &&_unknown_opcode_205, + &&_unknown_opcode_206, + &&_unknown_opcode_207, + &&_unknown_opcode_208, + &&_unknown_opcode_209, + &&_unknown_opcode_210, + &&_unknown_opcode_211, + &&_unknown_opcode_212, + &&_unknown_opcode_213, + &&_unknown_opcode_214, + &&_unknown_opcode_215, + &&_unknown_opcode_216, + &&_unknown_opcode_217, + &&_unknown_opcode_218, + &&_unknown_opcode_219, + &&_unknown_opcode_220, + &&_unknown_opcode_221, + &&_unknown_opcode_222, + &&_unknown_opcode_223, + &&_unknown_opcode_224, + &&_unknown_opcode_225, + &&_unknown_opcode_226, + &&_unknown_opcode_227, + &&_unknown_opcode_228, + &&_unknown_opcode_229, + &&_unknown_opcode_230, + &&_unknown_opcode_231, + &&_unknown_opcode_232, + &&_unknown_opcode_233, + &&_unknown_opcode_234, + &&_unknown_opcode_235, + &&_unknown_opcode_236, + &&_unknown_opcode_237, + &&_unknown_opcode_238, + &&_unknown_opcode_239, + &&_unknown_opcode_240, + &&_unknown_opcode_241, + &&_unknown_opcode_242, + &&_unknown_opcode_243, + &&_unknown_opcode_244, + &&_unknown_opcode_245, + &&_unknown_opcode_246, + &&_unknown_opcode_247, + &&_unknown_opcode_248, + &&_unknown_opcode_249, + &&_unknown_opcode_250, + &&_unknown_opcode_251, + &&_unknown_opcode_252, + &&_unknown_opcode_253, + &&_unknown_opcode_254, + &&_unknown_opcode_255 }; diff --git a/Python/unknown_opcodes.h b/Python/unknown_opcodes.h new file mode 100644 index 00000000000000..2b45325ab9efee --- /dev/null +++ b/Python/unknown_opcodes.h @@ -0,0 +1,394 @@ + UNKNOWN_OPCODE(0): + oparg = 0; + goto _unknown_opcode; + UNKNOWN_OPCODE(7): + oparg = 7; + goto _unknown_opcode; + UNKNOWN_OPCODE(8): + oparg = 8; + goto _unknown_opcode; + UNKNOWN_OPCODE(13): + oparg = 13; + goto _unknown_opcode; + UNKNOWN_OPCODE(14): + oparg = 14; + goto _unknown_opcode; + UNKNOWN_OPCODE(18): + oparg = 18; + goto _unknown_opcode; + UNKNOWN_OPCODE(21): + oparg = 21; + goto _unknown_opcode; + UNKNOWN_OPCODE(35): + oparg = 35; + goto _unknown_opcode; + UNKNOWN_OPCODE(36): + oparg = 36; + goto _unknown_opcode; + UNKNOWN_OPCODE(37): + oparg = 37; + goto _unknown_opcode; + UNKNOWN_OPCODE(38): + oparg = 38; + goto _unknown_opcode; + UNKNOWN_OPCODE(39): + oparg = 39; + goto _unknown_opcode; + UNKNOWN_OPCODE(40): + oparg = 40; + goto _unknown_opcode; + UNKNOWN_OPCODE(41): + oparg = 41; + goto _unknown_opcode; + UNKNOWN_OPCODE(42): + oparg = 42; + goto _unknown_opcode; + UNKNOWN_OPCODE(43): + oparg = 43; + goto _unknown_opcode; + UNKNOWN_OPCODE(44): + oparg = 44; + goto _unknown_opcode; + UNKNOWN_OPCODE(45): + oparg = 45; + goto _unknown_opcode; + UNKNOWN_OPCODE(46): + oparg = 46; + goto _unknown_opcode; + UNKNOWN_OPCODE(47): + oparg = 47; + goto _unknown_opcode; + UNKNOWN_OPCODE(48): + oparg = 48; + goto _unknown_opcode; + UNKNOWN_OPCODE(53): + oparg = 53; + goto _unknown_opcode; + UNKNOWN_OPCODE(58): + oparg = 58; + goto _unknown_opcode; + UNKNOWN_OPCODE(80): + oparg = 80; + goto _unknown_opcode; + UNKNOWN_OPCODE(81): + oparg = 81; + goto _unknown_opcode; + UNKNOWN_OPCODE(88): + oparg = 88; + goto _unknown_opcode; + UNKNOWN_OPCODE(99): + oparg = 99; + goto _unknown_opcode; + UNKNOWN_OPCODE(120): + oparg = 120; + goto _unknown_opcode; + UNKNOWN_OPCODE(123): + oparg = 123; + goto _unknown_opcode; + UNKNOWN_OPCODE(127): + oparg = 127; + goto _unknown_opcode; + UNKNOWN_OPCODE(128): + oparg = 128; + goto _unknown_opcode; + UNKNOWN_OPCODE(129): + oparg = 129; + goto _unknown_opcode; + UNKNOWN_OPCODE(134): + oparg = 134; + goto _unknown_opcode; + UNKNOWN_OPCODE(139): + oparg = 139; + goto _unknown_opcode; + UNKNOWN_OPCODE(140): + oparg = 140; + goto _unknown_opcode; + UNKNOWN_OPCODE(149): + oparg = 149; + goto _unknown_opcode; + UNKNOWN_OPCODE(150): + oparg = 150; + goto _unknown_opcode; + UNKNOWN_OPCODE(151): + oparg = 151; + goto _unknown_opcode; + UNKNOWN_OPCODE(153): + oparg = 153; + goto _unknown_opcode; + UNKNOWN_OPCODE(158): + oparg = 158; + goto _unknown_opcode; + UNKNOWN_OPCODE(159): + oparg = 159; + goto _unknown_opcode; + UNKNOWN_OPCODE(166): + oparg = 166; + goto _unknown_opcode; + UNKNOWN_OPCODE(167): + oparg = 167; + goto _unknown_opcode; + UNKNOWN_OPCODE(168): + oparg = 168; + goto _unknown_opcode; + UNKNOWN_OPCODE(169): + oparg = 169; + goto _unknown_opcode; + UNKNOWN_OPCODE(170): + oparg = 170; + goto _unknown_opcode; + UNKNOWN_OPCODE(171): + oparg = 171; + goto _unknown_opcode; + UNKNOWN_OPCODE(172): + oparg = 172; + goto _unknown_opcode; + UNKNOWN_OPCODE(173): + oparg = 173; + goto _unknown_opcode; + UNKNOWN_OPCODE(174): + oparg = 174; + goto _unknown_opcode; + UNKNOWN_OPCODE(175): + oparg = 175; + goto _unknown_opcode; + UNKNOWN_OPCODE(176): + oparg = 176; + goto _unknown_opcode; + UNKNOWN_OPCODE(177): + oparg = 177; + goto _unknown_opcode; + UNKNOWN_OPCODE(178): + oparg = 178; + goto _unknown_opcode; + UNKNOWN_OPCODE(179): + oparg = 179; + goto _unknown_opcode; + UNKNOWN_OPCODE(180): + oparg = 180; + goto _unknown_opcode; + UNKNOWN_OPCODE(181): + oparg = 181; + goto _unknown_opcode; + UNKNOWN_OPCODE(182): + oparg = 182; + goto _unknown_opcode; + UNKNOWN_OPCODE(183): + oparg = 183; + goto _unknown_opcode; + UNKNOWN_OPCODE(184): + oparg = 184; + goto _unknown_opcode; + UNKNOWN_OPCODE(185): + oparg = 185; + goto _unknown_opcode; + UNKNOWN_OPCODE(186): + oparg = 186; + goto _unknown_opcode; + UNKNOWN_OPCODE(187): + oparg = 187; + goto _unknown_opcode; + UNKNOWN_OPCODE(188): + oparg = 188; + goto _unknown_opcode; + UNKNOWN_OPCODE(189): + oparg = 189; + goto _unknown_opcode; + UNKNOWN_OPCODE(190): + oparg = 190; + goto _unknown_opcode; + UNKNOWN_OPCODE(191): + oparg = 191; + goto _unknown_opcode; + UNKNOWN_OPCODE(192): + oparg = 192; + goto _unknown_opcode; + UNKNOWN_OPCODE(193): + oparg = 193; + goto _unknown_opcode; + UNKNOWN_OPCODE(194): + oparg = 194; + goto _unknown_opcode; + UNKNOWN_OPCODE(195): + oparg = 195; + goto _unknown_opcode; + UNKNOWN_OPCODE(196): + oparg = 196; + goto _unknown_opcode; + UNKNOWN_OPCODE(197): + oparg = 197; + goto _unknown_opcode; + UNKNOWN_OPCODE(198): + oparg = 198; + goto _unknown_opcode; + UNKNOWN_OPCODE(199): + oparg = 199; + goto _unknown_opcode; + UNKNOWN_OPCODE(200): + oparg = 200; + goto _unknown_opcode; + UNKNOWN_OPCODE(201): + oparg = 201; + goto _unknown_opcode; + UNKNOWN_OPCODE(202): + oparg = 202; + goto _unknown_opcode; + UNKNOWN_OPCODE(203): + oparg = 203; + goto _unknown_opcode; + UNKNOWN_OPCODE(204): + oparg = 204; + goto _unknown_opcode; + UNKNOWN_OPCODE(205): + oparg = 205; + goto _unknown_opcode; + UNKNOWN_OPCODE(206): + oparg = 206; + goto _unknown_opcode; + UNKNOWN_OPCODE(207): + oparg = 207; + goto _unknown_opcode; + UNKNOWN_OPCODE(208): + oparg = 208; + goto _unknown_opcode; + UNKNOWN_OPCODE(209): + oparg = 209; + goto _unknown_opcode; + UNKNOWN_OPCODE(210): + oparg = 210; + goto _unknown_opcode; + UNKNOWN_OPCODE(211): + oparg = 211; + goto _unknown_opcode; + UNKNOWN_OPCODE(212): + oparg = 212; + goto _unknown_opcode; + UNKNOWN_OPCODE(213): + oparg = 213; + goto _unknown_opcode; + UNKNOWN_OPCODE(214): + oparg = 214; + goto _unknown_opcode; + UNKNOWN_OPCODE(215): + oparg = 215; + goto _unknown_opcode; + UNKNOWN_OPCODE(216): + oparg = 216; + goto _unknown_opcode; + UNKNOWN_OPCODE(217): + oparg = 217; + goto _unknown_opcode; + UNKNOWN_OPCODE(218): + oparg = 218; + goto _unknown_opcode; + UNKNOWN_OPCODE(219): + oparg = 219; + goto _unknown_opcode; + UNKNOWN_OPCODE(220): + oparg = 220; + goto _unknown_opcode; + UNKNOWN_OPCODE(221): + oparg = 221; + goto _unknown_opcode; + UNKNOWN_OPCODE(222): + oparg = 222; + goto _unknown_opcode; + UNKNOWN_OPCODE(223): + oparg = 223; + goto _unknown_opcode; + UNKNOWN_OPCODE(224): + oparg = 224; + goto _unknown_opcode; + UNKNOWN_OPCODE(225): + oparg = 225; + goto _unknown_opcode; + UNKNOWN_OPCODE(226): + oparg = 226; + goto _unknown_opcode; + UNKNOWN_OPCODE(227): + oparg = 227; + goto _unknown_opcode; + UNKNOWN_OPCODE(228): + oparg = 228; + goto _unknown_opcode; + UNKNOWN_OPCODE(229): + oparg = 229; + goto _unknown_opcode; + UNKNOWN_OPCODE(230): + oparg = 230; + goto _unknown_opcode; + UNKNOWN_OPCODE(231): + oparg = 231; + goto _unknown_opcode; + UNKNOWN_OPCODE(232): + oparg = 232; + goto _unknown_opcode; + UNKNOWN_OPCODE(233): + oparg = 233; + goto _unknown_opcode; + UNKNOWN_OPCODE(234): + oparg = 234; + goto _unknown_opcode; + UNKNOWN_OPCODE(235): + oparg = 235; + goto _unknown_opcode; + UNKNOWN_OPCODE(236): + oparg = 236; + goto _unknown_opcode; + UNKNOWN_OPCODE(237): + oparg = 237; + goto _unknown_opcode; + UNKNOWN_OPCODE(238): + oparg = 238; + goto _unknown_opcode; + UNKNOWN_OPCODE(239): + oparg = 239; + goto _unknown_opcode; + UNKNOWN_OPCODE(240): + oparg = 240; + goto _unknown_opcode; + UNKNOWN_OPCODE(241): + oparg = 241; + goto _unknown_opcode; + UNKNOWN_OPCODE(242): + oparg = 242; + goto _unknown_opcode; + UNKNOWN_OPCODE(243): + oparg = 243; + goto _unknown_opcode; + UNKNOWN_OPCODE(244): + oparg = 244; + goto _unknown_opcode; + UNKNOWN_OPCODE(245): + oparg = 245; + goto _unknown_opcode; + UNKNOWN_OPCODE(246): + oparg = 246; + goto _unknown_opcode; + UNKNOWN_OPCODE(247): + oparg = 247; + goto _unknown_opcode; + UNKNOWN_OPCODE(248): + oparg = 248; + goto _unknown_opcode; + UNKNOWN_OPCODE(249): + oparg = 249; + goto _unknown_opcode; + UNKNOWN_OPCODE(250): + oparg = 250; + goto _unknown_opcode; + UNKNOWN_OPCODE(251): + oparg = 251; + goto _unknown_opcode; + UNKNOWN_OPCODE(252): + oparg = 252; + goto _unknown_opcode; + UNKNOWN_OPCODE(253): + oparg = 253; + goto _unknown_opcode; + UNKNOWN_OPCODE(254): + oparg = 254; + goto _unknown_opcode; + UNKNOWN_OPCODE(255): + oparg = 255; + goto _unknown_opcode; +