diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a3b979..cb4874a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ endif() set(PYTHON_VERSIONS 10 11 13 14 15 16 # Python 1.1 and 1.2 are marshal-identical 20 21 22 23 24 25 26 27 - 30 31 32 33 34 35 36 37 38 39 310 + 30 31 32 33 34 35 36 37 38 39 310 311 ) foreach(ver ${PYTHON_VERSIONS}) diff --git a/PythonBytecode.txt b/PythonBytecode.txt index 24625d5..4f1e515 100644 --- a/PythonBytecode.txt +++ b/PythonBytecode.txt @@ -350,185 +350,188 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ] . - 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 -STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -POP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DUP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] + 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 +STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +POP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DUP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] ROT_FOUR ! [X] [X] -DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X] [X] [X] -ROT_FOUR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] -<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -NOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] +DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X] [X] [X] [X] +ROT_FOUR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] +<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +NOP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] SET_ADD ! [X] [ ] [ ] [ ] [ ] -INPLACE_MATRIX_MULTIPLY ! [X] [X] [X] [X] [X] -LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -<30> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<31> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<32> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<33> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<34> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<35> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<36> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<37> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<38> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<39> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<40> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<41> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<42> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<43> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<44> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<45> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<46> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<47> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -RERAISE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -WITH_EXCEPT_START [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] -GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] -BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] -BEGIN_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] +INPLACE_MATRIX_MULTIPLY ! [X] [X] [X] [X] [X] [X] +LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +GET_LEN [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +MATCH_MAPPING [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +MATCH_SEQUENCE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +MATCH_KEYS [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +COPY_DICT_WITHOUT_KEYS [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +<35> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<36> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<37> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<38> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<39> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<40> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<41> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<42> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<43> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<44> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<45> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<46> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +<47> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +RERAISE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] +WITH_EXCEPT_START [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] +GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] +GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] +BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] +BEGIN_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] STORE_MAP ! [X] [X] [X] [X] [X] [ ] [ ] [ ] -END_ASYNC_FOR ! [X] [X] -INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -GET_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +END_ASYNC_FOR ! [X] [X] [X] +INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +GET_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] STORE_LOCALS ! [X] [X] [X] [X] [ ] -GET_YIELD_FROM_ITER ! [X] [X] [X] [X] [X] -PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] [X] -GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] -LOAD_ASSERTION_ERROR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -INPLACE_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BREAK_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] +GET_YIELD_FROM_ITER ! [X] [X] [X] [X] [X] [X] +PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] [X] [X] +GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] +LOAD_ASSERTION_ERROR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] +INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +INPLACE_OR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BREAK_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] WITH_CLEANUP ! [X] [X] [X] [X] [X] -WITH_CLEANUP_START ! [X] [X] [X] [X] [ ] +WITH_CLEANUP_START ! [X] [X] [X] [X] [ ] [ ] WITH_CLEANUP_FINISH ! [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] -LIST_TO_TUPLE ! [X] -RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] -YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -END_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [ ] -POP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -JUMP_IF_FALSE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+] -JUMP_IF_TRUE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+] -JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] -POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -IS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -CONTAINS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -CONTINUE_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] -SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] +LIST_TO_TUPLE ! [X] [X] +RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] +YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +END_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] +POP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DUP_TOPX ! [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +ROT_N ! [X] +LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +JUMP_IF_FALSE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+] [+] +JUMP_IF_TRUE (_OR_POP) [X] [X] [+] [+] [+] [+] [+] [+] [+] [+] [+] +JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +IS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] +CONTAINS_OP [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] +CONTINUE_LOOP ! [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] +RERAISE ! [X] +SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] SETUP_EXCEPT ! [X] [X] [X] [X] [X] [X] [X] [X] [ ] -JUMP_IF_NOT_EXC_MATCH ! [X] -SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_ANNOTATION [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] -<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -<129> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -BUILD_SLICE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -MAKE_CLOSURE [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ] -LOAD_CLOSURE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] -DELETE_DEREF [ ] [ ] [X] [X] [X] [X] [X] [X] [X] [X] -<139> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ] -CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +JUMP_IF_NOT_EXC_MATCH ! [X] [X] +SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_ANNOTATION [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ] [ ] [ ] [ ] +<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +GEN_START [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +BUILD_SLICE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +MAKE_CLOSURE [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ] [ ] +LOAD_CLOSURE [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +DELETE_DEREF [ ] [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] +<139> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [ ] [ ] [ ] [ ] [ ] +CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] CALL_FUNCTION_VAR_KW ! [X] [X] [X] [X] [X] [X] -CALL_FUNCTION_EX ! [X] [X] [X] [X] +CALL_FUNCTION_EX ! [X] [X] [X] [X] [X] EXTENDED_ARG ! [X] [X] -SETUP_WITH ! [X] [X] [X] [X] [X] [X] [X] [X] +SETUP_WITH ! [X] [X] [X] [X] [X] [X] [X] [X] [X] <144> ! [ ] [ ] -EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X] [X] -LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] -SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] -MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] -LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] -BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] -BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] -BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] -BUILD_TUPLE_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] -BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] -SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] -FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] -BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] -BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] -BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [ ] -<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] -LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] -CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] +EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X] [X] [X] +LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X] [X] [X] +LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] [X] +BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] [ ] +BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] [ ] +BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] [ ] +BUILD_TUPLE_UNPACK ! [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] +MATCH_CLASS ! [X] +BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [ ] [ ] +SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] [X] +FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] +BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] +BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] [X] +BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [ ] [ ] +<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] +LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] +CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X] CALL_FINALLY ! [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -LIST_EXTEND ! [X] +LIST_EXTEND ! [X] [X] POP_FINALLY ! [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -SET_UPDATE ! [X] -DICT_MERGE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] -DICT_UPDATE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] +SET_UPDATE ! [X] [X] +DICT_MERGE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] +DICT_UPDATE [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] <166> <167> <168> @@ -538,177 +541,187 @@ DICT_UPDATE [ ] [ ] [ ] [ ] [ ] [ ] [ ] . - 3.10 -<0> [ ] -POP_TOP [X] -ROT_TWO [X] -ROT_THREE [X] -DUP_TOP [X] -DUP_TOP_TWO [X] -ROT_FOUR [X] -<7> [ ] -<8> [ ] -NOP [X] -UNARY_POSITIVE [X] -UNARY_NEGATIVE [X] -UNARY_NOT [X] -<13> [ ] -<14> [ ] -UNARY_INVERT [X] -BINARY_MATRIX_MULTIPLY [X] -INPLACE_MATRIX_MULTIPLY [X] -<18> [ ] -BINARY_POWER [X] -BINARY_MULTIPLY [X] -<21> [ ] -BINARY_MODULO [X] -BINARY_ADD [X] -BINARY_SUBTRACT [X] -BINARY_SUBSCR [X] -BINARY_FLOOR_DIVIDE [X] -BINARY_TRUE_DIVIDE [X] -INPLACE_FLOOR_DIVIDE [X] -INPLACE_TRUE_DIVIDE [X] -GET_LEN [X] -MATCH_MAPPING [X] -MATCH_SEQUENCE [X] -MATCH_KEYS [X] -COPY_DICT_WITHOUT_KEYS [X] -<35> [ ] -<36> [ ] -<37> [ ] -<38> [ ] -<39> [ ] -<40> [ ] -<41> [ ] -<42> [ ] -<43> [ ] -<44> [ ] -<45> [ ] -<46> [ ] -<47> [ ] -<48> [ ] -WITH_EXCEPT_START [X] -GET_AITER [X] -GET_ANEXT [X] -BEFORE_ASYNC_WITH [X] -<53> [ ] -END_ASYNC_FOR [X] -INPLACE_ADD [X] -INPLACE_SUBTRACT [X] -INPLACE_MULTIPLY [X] -<58> [ ] -INPLACE_MODULO [X] -STORE_SUBSCR [X] -DELETE_SUBSCR [X] -BINARY_LSHIFT [X] -BINARY_RSHIFT [X] -BINARY_AND [X] -BINARY_XOR [X] -BINARY_OR [X] -INPLACE_POWER [X] -GET_ITER [X] -GET_YIELD_FROM_ITER [X] -PRINT_EXPR [X] -LOAD_BUILD_CLASS [X] -YIELD_FROM [X] -GET_AWAITABLE [X] -LOAD_ASSERTION_ERROR [X] -INPLACE_LSHIFT [X] -INPLACE_RSHIFT [X] -INPLACE_AND [X] -INPLACE_XOR [X] -INPLACE_OR [X] -<80> [ ] -<81> [ ] -LIST_TO_TUPLE [X] -RETURN_VALUE [X] -IMPORT_STAR [X] -SETUP_ANNOTATIONS [X] -YIELD_VALUE [X] -POP_BLOCK [X] -<88> [ ] -POP_EXCEPT [X] -STORE_NAME [X] -DELETE_NAME [X] -UNPACK_SEQUENCE [X] -FOR_ITER [X] -UNPACK_EX [X] -STORE_ATTR [X] -DELETE_ATTR [X] -STORE_GLOBAL [X] -DELETE_GLOBAL [X] -ROT_N [X] -LOAD_CONST [X] -LOAD_NAME [X] -BUILD_TUPLE [X] -BUILD_LIST [X] -BUILD_SET [X] -BUILD_MAP [X] -LOAD_ATTR [X] -COMPARE_OP [X] -IMPORT_NAME [X] -IMPORT_FROM [X] -JUMP_FORWARD [X] -JUMP_IF_FALSE_OR_POP [X] -JUMP_IF_TRUE_OR_POP [X] -JUMP_ABSOLUTE [X] -POP_JUMP_IF_FALSE [X] -POP_JUMP_IF_TRUE [X] -LOAD_GLOBAL [X] -IS_OP [X] -CONTAINS_OP [X] -RERAISE [X] -<120> [ ] -JUMP_IF_NOT_EXC_MATCH [X] -SETUP_FINALLY [X] -<123> [ ] -LOAD_FAST [X] -STORE_FAST [X] -DELETE_FAST [X] -<127> [ ] -<128> [ ] -GEN_START [X] -RAISE_VARARGS [X] -CALL_FUNCTION [X] -MAKE_FUNCTION [X] -BUILD_SLICE [X] -<134> [ ] -LOAD_CLOSURE [X] -LOAD_DEREF [X] -STORE_DEREF [X] -DELETE_DEREF [X] -<139> [ ] -<140> [ ] -CALL_FUNCTION_KW [X] -CALL_FUNCTION_EX [X] -SETUP_WITH [X] -EXTENDED_ARG [X] -LIST_APPEND [X] -SET_ADD [X] -MAP_ADD [X] -LOAD_CLASSDEREF [X] -<149> [ ] -<150> [ ] -<151> [ ] -MATCH_CLASS [X] -<153> [ ] -SETUP_ASYNC_WITH [X] -FORMAT_VALUE [X] -BUILD_CONST_KEY_MAP [X] -BUILD_STRING [X] -<158> [ ] -<159> [ ] -LOAD_METHOD [X] -CALL_METHOD [X] -LIST_EXTEND [X] -SET_UPDATE [X] -DICT_MERGE [X] -DICT_UPDATE [X] -<166> -<167> -<168> -<169> + 3.11 +CACHE [X] +POP_TOP [X] +PUSH_NULL [X] +<3> [ ] +<4> [ ] +<5> [ ] +<6> [ ] +<7> [ ] +<8> [ ] +NOP [X] +UNARY_POSITIVE [X] +UNARY_NEGATIVE [X] +UNARY_NOT [X] +<13> [ ] +<14> [ ] +UNARY_INVERT [X] +<16> [ ] +<17> [ ] +<18> [ ] +<19> [ ] +<20> [ ] +<21> [ ] +<22> [ ] +<23> [ ] +<24> [ ] +BINARY_SUBSCR [X] +<26> [ ] +<27> [ ] +<28> [ ] +<29> [ ] +GET_LEN [X] +MATCH_MAPPING [X] +MATCH_SEQUENCE [X] +MATCH_KEYS [X] +<34> [ ] +PUSH_EXC_INFO [X] +CHECK_EXC_MATCH [X] +CHECK_EG_MATCH [X] +<38> [ ] +<39> [ ] +<40> [ ] +<41> [ ] +<42> [ ] +<43> [ ] +<44> [ ] +<45> [ ] +<46> [ ] +<47> [ ] +<48> [ ] +WITH_EXCEPT_START [X] +GET_AITER [X] +GET_ANEXT [X] +BEFORE_ASYNC_WITH [X] +BEFORE_WITH [X] +END_ASYNC_FOR [X] +<55> [ ] +<56> [ ] +<57> [ ] +<58> [ ] +<59> [ ] +STORE_SUBSCR [X] +DELETE_SUBSCR [X] +<62> [ ] +<63> [ ] +<64> [ ] +<65> [ ] +<66> [ ] +<67> [ ] +GET_ITER [X] +GET_YIELD_FROM_ITER [X] +PRINT_EXPR [X] +LOAD_BUILD_CLASS [X] +<72> [ ] +<73> [ ] +LOAD_ASSERTION_ERROR [X] +RETURN_GENERATOR [X] +<76> [ ] +<77> [ ] +<78> [ ] +<79> [ ] +<80> [ ] +<81> [ ] +LIST_TO_TUPLE [X] +RETURN_VALUE [X] +IMPORT_STAR [X] +SETUP_ANNOTATIONS [X] +YIELD_VALUE [X] +ASYNC_GEN_WRAP [X] +PREP_RERAISE_STAR [X] +POP_EXCEPT [X] +STORE_NAME [X] +DELETE_NAME [X] +UNPACK_SEQUENCE [X] +FOR_ITER [X] +UNPACK_EX [X] +STORE_ATTR [X] +DELETE_ATTR [X] +STORE_GLOBAL [X] +DELETE_GLOBAL [X] +SWAP [X] +LOAD_CONST [X] +LOAD_NAME [X] +BUILD_TUPLE [X] +BUILD_LIST [X] +BUILD_SET [X] +BUILD_MAP [X] +LOAD_ATTR [X] +COMPARE_OP [X] +IMPORT_NAME [X] +IMPORT_FROM [X] +JUMP_FORWARD [X] +JUMP_IF_FALSE_OR_POP [X] +JUMP_IF_TRUE_OR_POP [X] +<113> [ ] +POP_JUMP_FORWARD_IF_FALSE [X] +POP_JUMP_FORWARD_IF_TRUE [X] +LOAD_GLOBAL [X] +IS_OP [X] +CONTAINS_OP [X] +RERAISE [X] +COPY [X] +<121> [ ] +BINARY_OP [X] +SEND [X] +LOAD_FAST [X] +STORE_FAST [X] +DELETE_FAST [X] +<127> [ ] +POP_JUMP_FORWARD_IF_NOT_NONE [X] +POP_JUMP_FORWARD_IF_NONE [X] +RAISE_VARARGS [X] +GET_AWAITABLE [X] +MAKE_FUNCTION [X] +BUILD_SLICE [X] +JUMP_BACKWARD_NO_INTERRUPT [X] +MAKE_CELL [X] +LOAD_CLOSURE [X] +LOAD_DEREF [X] +STORE_DEREF [X] +DELETE_DEREF [X] +JUMP_BACKWARD [X] +<141> [ ] +CALL_FUNCTION_EX [X] +<143> [ ] +EXTENDED_ARG [X] +LIST_APPEND [X] +SET_ADD [X] +MAP_ADD [X] +LOAD_CLASSDEREF [X] +COPY_FREE_VARS [X] +<150> [ ] +RESUME [X] +MATCH_CLASS [X] +<153> [ ] +<154> [ ] +FORMAT_VALUE [X] +BUILD_CONST_KEY_MAP [X] +BUILD_STRING [X] +<158> [ ] +<159> [ ] +LOAD_METHOD [X] +<161> [ ] +LIST_EXTEND [X] +SET_UPDATE [X] +DICT_MERGE [X] +DICT_UPDATE [X] +PRECALL [X] +<167> [ ] +<168> [ ] +<169> [ ] +<170> [ ] +CALL [X] +KW_NAMES [X] +POP_JUMP_BACKWARD_IF_NOT_NONE [X] +POP_JUMP_BACKWARD_IF_NONE [X] +POP_JUMP_BACKWARD_IF_FALSE [X] +POP_JUMP_BACKWARD_IF_TRUE [X] +<177> +<178> +<179> . . . @@ -791,20 +804,24 @@ TYPE_SHORT_ASCII 'z' TYPE_SHORT_ASCII_INTERNED 'Z' -[TYPE_CODE] 1.0 1.3 1.5 2.1 2.3 3.0 3.8 -argcount short short short long long long -posonlyargc long -kwonlyargc long long +[TYPE_CODE] 1.0 1.3 1.5 2.1 2.3 3.0 3.8 3.11 +argcount short short short long long long long +posonlyargc long long +kwonlyargc long long long nlocals short short short long long long -stacksize short short long long long -flags short short short long long long -code Obj Obj Obj Obj Obj Obj Obj -consts Obj Obj Obj Obj Obj Obj Obj -names Obj Obj Obj Obj Obj Obj Obj +stacksize short short long long long long +flags short short short long long long long +code Obj Obj Obj Obj Obj Obj Obj Obj +consts Obj Obj Obj Obj Obj Obj Obj Obj +names Obj Obj Obj Obj Obj Obj Obj Obj varnames Obj Obj Obj Obj Obj Obj freevars Obj Obj Obj Obj cellvars Obj Obj Obj Obj -filename Obj Obj Obj Obj Obj Obj Obj -name Obj Obj Obj Obj Obj Obj Obj -firstline short short long long long -lntable Obj Obj Obj Obj Obj +locals+names Obj +locals+kinds Obj +filename Obj Obj Obj Obj Obj Obj Obj Obj +name Obj Obj Obj Obj Obj Obj Obj Obj +qualname Obj +firstline short short long long long long +lntable Obj Obj Obj Obj Obj Obj +exceptiontable Obj diff --git a/bytecode.cpp b/bytecode.cpp index f30a258..991e467 100644 --- a/bytecode.cpp +++ b/bytecode.cpp @@ -36,6 +36,7 @@ DECLARE_PYTHON(3, 7) DECLARE_PYTHON(3, 8) DECLARE_PYTHON(3, 9) DECLARE_PYTHON(3, 10) +DECLARE_PYTHON(3, 11) const char* Pyc::OpcodeName(int opcode) { @@ -103,6 +104,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode) case 8: return python_38_map(opcode); case 9: return python_39_map(opcode); case 10: return python_310_map(opcode); + case 11: return python_311_map(opcode); } break; } diff --git a/bytecode_ops.inl b/bytecode_ops.inl index 61fe5f5..7b681fd 100644 --- a/bytecode_ops.inl +++ b/bytecode_ops.inl @@ -102,6 +102,15 @@ OPCODE(RERAISE) OPCODE(WITH_EXCEPT_START) OPCODE(LOAD_ASSERTION_ERROR) OPCODE(LIST_TO_TUPLE) +OPCODE(CACHE) +OPCODE(PUSH_NULL) +OPCODE(PUSH_EXC_INFO) +OPCODE(CHECK_EXC_MATCH) +OPCODE(CHECK_EG_MATCH) +OPCODE(BEFORE_WITH) +OPCODE(RETURN_GENERATOR) +OPCODE(ASYNC_GEN_WRAP) +OPCODE(PREP_RERAISE_STAR) /* Has parameter word */ OPCODE_A_FIRST(STORE_NAME) @@ -194,3 +203,24 @@ OPCODE_A(LIST_EXTEND) OPCODE_A(SET_UPDATE) OPCODE_A(DICT_MERGE) OPCODE_A(DICT_UPDATE) +OPCODE_A(SWAP) +OPCODE_A(POP_JUMP_FORWARD_IF_FALSE) +OPCODE_A(POP_JUMP_FORWARD_IF_TRUE) +OPCODE_A(COPY) +OPCODE_A(BINARY_OP) +OPCODE_A(SEND) +OPCODE_A(POP_JUMP_FORWARD_IF_NOT_NONE) +OPCODE_A(POP_JUMP_FORWARD_IF_NONE) +OPCODE_A(GET_AWAITABLE) +OPCODE_A(JUMP_BACKWARD_NO_INTERRUPT) +OPCODE_A(MAKE_CELL) +OPCODE_A(JUMP_BACKWARD) +OPCODE_A(COPY_FREE_VARS) +OPCODE_A(RESUME) +OPCODE_A(PRECALL) +OPCODE_A(CALL) +OPCODE_A(KW_NAMES) +OPCODE_A(POP_JUMP_BACKWARD_IF_NOT_NONE) +OPCODE_A(POP_JUMP_BACKWARD_IF_NONE) +OPCODE_A(POP_JUMP_BACKWARD_IF_FALSE) +OPCODE_A(POP_JUMP_BACKWARD_IF_TRUE) diff --git a/bytes/comp_map.py b/bytes/comp_map.py index e8983f0..6ba295e 100755 --- a/bytes/comp_map.py +++ b/bytes/comp_map.py @@ -27,7 +27,7 @@ if not os.path.exists(sys.argv[2]): maplist = [ 10, 11, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 310 ] + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 310, 311 ] for mapver in maplist: infile = open(os.path.join(sys.argv[1], 'python_%d.map' % mapver), 'rt') diff --git a/bytes/python_311.map b/bytes/python_311.map new file mode 100644 index 0000000..2b7694a --- /dev/null +++ b/bytes/python_311.map @@ -0,0 +1,110 @@ +0 CACHE +1 POP_TOP +2 PUSH_NULL +9 NOP +10 UNARY_POSITIVE +11 UNARY_NEGATIVE +12 UNARY_NOT +15 UNARY_INVERT +25 BINARY_SUBSCR +30 GET_LEN +31 MATCH_MAPPING +32 MATCH_SEQUENCE +33 MATCH_KEYS +35 PUSH_EXC_INFO +36 CHECK_EXC_MATCH +37 CHECK_EG_MATCH +49 WITH_EXCEPT_START +50 GET_AITER +51 GET_ANEXT +52 BEFORE_ASYNC_WITH +53 BEFORE_WITH +54 END_ASYNC_FOR +60 STORE_SUBSCR +61 DELETE_SUBSCR +68 GET_ITER +69 GET_YIELD_FROM_ITER +70 PRINT_EXPR +71 LOAD_BUILD_CLASS +74 LOAD_ASSERTION_ERROR +75 RETURN_GENERATOR +82 LIST_TO_TUPLE +83 RETURN_VALUE +84 IMPORT_STAR +85 SETUP_ANNOTATIONS +86 YIELD_VALUE +87 ASYNC_GEN_WRAP +88 PREP_RERAISE_STAR +89 POP_EXCEPT +90 STORE_NAME_A +91 DELETE_NAME_A +92 UNPACK_SEQUENCE_A +93 FOR_ITER_A +94 UNPACK_EX_A +95 STORE_ATTR_A +96 DELETE_ATTR_A +97 STORE_GLOBAL_A +98 DELETE_GLOBAL_A +99 SWAP_A +100 LOAD_CONST_A +101 LOAD_NAME_A +102 BUILD_TUPLE_A +103 BUILD_LIST_A +104 BUILD_SET_A +105 BUILD_MAP_A +106 LOAD_ATTR_A +107 COMPARE_OP_A +108 IMPORT_NAME_A +109 IMPORT_FROM_A +110 JUMP_FORWARD_A +111 JUMP_IF_FALSE_OR_POP_A +112 JUMP_IF_TRUE_OR_POP_A +114 POP_JUMP_FORWARD_IF_FALSE_A +115 POP_JUMP_FORWARD_IF_TRUE_A +116 LOAD_GLOBAL_A +117 IS_OP_A +118 CONTAINS_OP_A +119 RERAISE_A +120 COPY_A +122 BINARY_OP_A +123 SEND_A +124 LOAD_FAST_A +125 STORE_FAST_A +126 DELETE_FAST_A +128 POP_JUMP_FORWARD_IF_NOT_NONE_A +129 POP_JUMP_FORWARD_IF_NONE_A +130 RAISE_VARARGS_A +131 GET_AWAITABLE_A +132 MAKE_FUNCTION_A +133 BUILD_SLICE_A +134 JUMP_BACKWARD_NO_INTERRUPT_A +135 MAKE_CELL_A +136 LOAD_CLOSURE_A +137 LOAD_DEREF_A +138 STORE_DEREF_A +139 DELETE_DEREF_A +140 JUMP_BACKWARD_A +142 CALL_FUNCTION_EX_A +144 EXTENDED_ARG_A +145 LIST_APPEND_A +146 SET_ADD_A +147 MAP_ADD_A +148 LOAD_CLASSDEREF_A +149 COPY_FREE_VARS_A +151 RESUME_A +152 MATCH_CLASS_A +155 FORMAT_VALUE_A +156 BUILD_CONST_KEY_MAP_A +157 BUILD_STRING_A +160 LOAD_METHOD_A +162 LIST_EXTEND_A +163 SET_UPDATE_A +164 DICT_MERGE_A +165 DICT_UPDATE_A +166 PRECALL_A +171 CALL_A +172 KW_NAMES_A +173 POP_JUMP_BACKWARD_IF_NOT_NONE_A +174 POP_JUMP_BACKWARD_IF_NONE_A +175 POP_JUMP_BACKWARD_IF_FALSE_A +176 POP_JUMP_BACKWARD_IF_TRUE_A diff --git a/pyc_code.cpp b/pyc_code.cpp index 38a1013..306c8f7 100644 --- a/pyc_code.cpp +++ b/pyc_code.cpp @@ -21,7 +21,7 @@ void PycCode::load(PycData* stream, PycModule* mod) if (mod->verCompare(1, 3) >= 0 && mod->verCompare(2, 3) < 0) m_numLocals = stream->get16(); - else if (mod->verCompare(2, 3) >= 0) + else if (mod->verCompare(2, 3) >= 0 && mod->verCompare(3, 11) < 0) m_numLocals = stream->get32(); else m_numLocals = 0; @@ -44,24 +44,39 @@ void PycCode::load(PycData* stream, PycModule* mod) m_consts = LoadObject(stream, mod).cast(); m_names = LoadObject(stream, mod).cast(); - if (mod->verCompare(1, 3) >= 0) + if (mod->verCompare(1, 3) >= 0 && mod->verCompare(3, 11) < 0) m_varNames = LoadObject(stream, mod).cast(); else m_varNames = new PycTuple; - if (mod->verCompare(2, 1) >= 0) + if (mod->verCompare(2, 1) >= 0 && mod->verCompare(3, 11) < 0) m_freeVars = LoadObject(stream, mod).cast(); else m_freeVars = new PycTuple; - if (mod->verCompare(2, 1) >= 0) + if (mod->verCompare(2, 1) >= 0 && mod->verCompare(3, 11) < 0) m_cellVars = LoadObject(stream, mod).cast(); else m_cellVars = new PycTuple; + if (mod->verCompare(3, 11) >= 0) + m_localsAndNames = LoadObject(stream, mod).cast(); + else + m_localsAndNames = new PycTuple; + + if (mod->verCompare(3, 11) >= 0) + m_localsAndKinds = LoadObject(stream, mod).cast(); + else + m_localsAndKinds = new PycString; + m_fileName = LoadObject(stream, mod).cast(); m_name = LoadObject(stream, mod).cast(); + if (mod->verCompare(3, 11) >= 0) + m_qualName = LoadObject(stream, mod).cast(); + else + m_qualName = new PycString; + if (mod->verCompare(1, 5) >= 0 && mod->verCompare(2, 3) < 0) m_firstLine = stream->get16(); else if (mod->verCompare(2, 3) >= 0) @@ -71,4 +86,9 @@ void PycCode::load(PycData* stream, PycModule* mod) m_lnTable = LoadObject(stream, mod).cast(); else m_lnTable = new PycString; + + if (mod->verCompare(3, 11) >= 0) + m_exceptTable = LoadObject(stream, mod).cast(); + else + m_exceptTable = new PycString; } diff --git a/pyc_code.h b/pyc_code.h index 7aa602c..5c60e74 100644 --- a/pyc_code.h +++ b/pyc_code.h @@ -46,10 +46,14 @@ public: PycRef varNames() const { return m_varNames; } PycRef freeVars() const { return m_freeVars; } PycRef cellVars() const { return m_cellVars; } + PycRef localsAndNames() const { return m_localsAndNames; } + PycRef localsAndKinds() const { return m_localsAndKinds; } PycRef fileName() const { return m_fileName; } PycRef name() const { return m_name; } + PycRef qualName() const { return m_qualName; } int firstLine() const { return m_firstLine; } PycRef lnTable() const { return m_lnTable; } + PycRef exceptTable() const { return m_exceptTable; } PycRef getConst(int idx) const { @@ -89,10 +93,14 @@ private: PycRef m_varNames; PycRef m_freeVars; PycRef m_cellVars; + PycRef m_localsAndNames; + PycRef m_localsAndKinds; PycRef m_fileName; PycRef m_name; + PycRef m_qualName; int m_firstLine; PycRef m_lnTable; + PycRef m_exceptTable; globals_t m_globalsUsed; /* Global vars used in this code */ }; diff --git a/pyc_module.cpp b/pyc_module.cpp index 4b95666..1c86119 100644 --- a/pyc_module.cpp +++ b/pyc_module.cpp @@ -164,6 +164,12 @@ void PycModule::setVersion(unsigned int magic) m_unicode = true; break; + case MAGIC_3_11: + m_maj = 3; + m_min = 11; + m_unicode = true; + break; + /* Bad Magic detected */ default: m_maj = -1; diff --git a/pyc_module.h b/pyc_module.h index 4c75e9d..b3e52db 100644 --- a/pyc_module.h +++ b/pyc_module.h @@ -33,6 +33,7 @@ enum PycMagic { MAGIC_3_8 = 0x0A0D0D55, MAGIC_3_9 = 0x0A0D0D61, MAGIC_3_10 = 0x0A0D0D6F, + MAGIC_3_11 = 0x0A0D0DA7, INVALID = 0, }; diff --git a/scripts/pymultic b/scripts/pymultic index 347d41b..e9eea16 100755 --- a/scripts/pymultic +++ b/scripts/pymultic @@ -29,11 +29,12 @@ PYVERS = { '3.3': '3.3.7', '3.4': '3.4.10', '3.5': '3.5.10', - '3.6': '3.6.13', - '3.7': '3.7.10', - '3.8': '3.8.9', - '3.9': '3.9.4', - '3.10': '3.10.0', + '3.6': '3.6.15', + '3.7': '3.7.15', + '3.8': '3.8.15', + '3.9': '3.9.15', + '3.10': '3.10.8', + '3.11': '3.11.0', } OLD_PYTHONS = ('1.0', '1.1', '1.2', '1.3', '1.4', '1.5') @@ -52,6 +53,7 @@ PYVER_CONTAINERS = { '3.8', '3.9', '3.10', + '3.11', } CONTAINER_EXES = ['podman', 'docker'] CONTAINER_EXE_EXTRA_ARGS = {