diff --git a/CMakeLists.txt b/CMakeLists.txt index 16a941ec6..e645d8e5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,9 +9,9 @@ if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") endif() set(PYTHON_VERSIONS - 10 11 13 14 15 16 # Python 1.1 and 1.2 are marshall-identical + 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 + 30 31 32 33 34 35 ) foreach(ver ${PYTHON_VERSIONS}) diff --git a/PythonBytecode.txt b/PythonBytecode.txt index a26ae9975..8d2b33f4d 100644 --- a/PythonBytecode.txt +++ b/PythonBytecode.txt @@ -4,7 +4,7 @@ Python MAGIC Python MAGIC Python MAGIC 1.2 0x00999903 2.2 0x0A0DED2D 3.2 0x0A0D0C6C 1.3 0x0A0D2E89 2.3 0x0A0DF23B 3.3 0x0A0D0C9E 1.4 0x0A0D1704 2.4 0x0A0DF26D 3.4 0x0A0D0CEE -1.5 0x0A0D4E99 2.5 0x0A0DF2B3 +1.5 0x0A0D4E99 2.5 0x0A0DF2B3 3.5 0x0A0D0D16 1.6 0x0A0DC4FC 2.6 0x0A0DF2D1 2.7 0x0A0DF303 @@ -346,170 +346,173 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ] . - 3.0 3.1 3.2 3.3 3.4 -STOP_CODE [X] [X] [X] [ ] [ ] -POP_TOP [X] [X] [X] [X] [X] -ROT_TWO [X] [X] [X] [X] [X] -ROT_THREE [X] [X] [X] [X] [X] -DUP_TOP [X] [X] [X] [X] [X] -ROT_FOUR ! [X] [X] -DUP_TOP_TWO ! [X] [X] [X] -<6> [ ] [ ] [ ] [ ] [ ] -<7> [ ] [ ] [ ] [ ] [ ] -<8> [ ] [ ] [ ] [ ] [ ] -NOP [X] [X] [X] [X] [X] -UNARY_POSITIVE [X] [X] [X] [X] [X] -UNARY_NEGATIVE [X] [X] [X] [X] [X] -UNARY_NOT [X] [X] [X] [X] [X] -<13> [ ] [ ] [ ] [ ] [ ] -<14> [ ] [ ] [ ] [ ] [ ] -UNARY_INVERT [X] [X] [X] [X] [X] -<16> [ ] [ ] [ ] [ ] [ ] -SET_ADD [X] [ ] [ ] [ ] [ ] -LIST_APPEND [X] [ ] [ ] [ ] [ ] -BINARY_POWER [X] [X] [X] [X] [X] -BINARY_MULTIPLY [X] [X] [X] [X] [X] -<21> [ ] [ ] [ ] [ ] [ ] -BINARY_MODULO [X] [X] [X] [X] [X] -BINARY_ADD [X] [X] [X] [X] [X] -BINARY_SUBTRACT [X] [X] [X] [X] [X] -BINARY_SUBSCR [X] [X] [X] [X] [X] -BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] -BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] -INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] -INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] -<30> [ ] [ ] [ ] [ ] [ ] -<31> [ ] [ ] [ ] [ ] [ ] -<32> [ ] [ ] [ ] [ ] [ ] -<33> [ ] [ ] [ ] [ ] [ ] -<34> [ ] [ ] [ ] [ ] [ ] -<35> [ ] [ ] [ ] [ ] [ ] -<36> [ ] [ ] [ ] [ ] [ ] -<37> [ ] [ ] [ ] [ ] [ ] -<38> [ ] [ ] [ ] [ ] [ ] -<39> [ ] [ ] [ ] [ ] [ ] -<40> [ ] [ ] [ ] [ ] [ ] -<41> [ ] [ ] [ ] [ ] [ ] -<42> [ ] [ ] [ ] [ ] [ ] -<43> [ ] [ ] [ ] [ ] [ ] -<44> [ ] [ ] [ ] [ ] [ ] -<45> [ ] [ ] [ ] [ ] [ ] -<46> [ ] [ ] [ ] [ ] [ ] -<47> [ ] [ ] [ ] [ ] [ ] -<48> [ ] [ ] [ ] [ ] [ ] -<49> [ ] [ ] [ ] [ ] [ ] -<50> [ ] [ ] [ ] [ ] [ ] -<51> [ ] [ ] [ ] [ ] [ ] -<52> [ ] [ ] [ ] [ ] [ ] -<53> [ ] [ ] [ ] [ ] [ ] -STORE_MAP [X] [X] [X] [X] [X] -INPLACE_ADD [X] [X] [X] [X] [X] -INPLACE_SUBTRACT [X] [X] [X] [X] [X] -INPLACE_MULTIPLY [X] [X] [X] [X] [X] -<58> [ ] [ ] [ ] [ ] [ ] -INPLACE_MODULO [X] [X] [X] [X] [X] -STORE_SUBSCR [X] [X] [X] [X] [X] -DELETE_SUBSCR [X] [X] [X] [X] [X] -BINARY_LSHIFT [X] [X] [X] [X] [X] -BINARY_RSHIFT [X] [X] [X] [X] [X] -BINARY_AND [X] [X] [X] [X] [X] -BINARY_XOR [X] [X] [X] [X] [X] -BINARY_OR [X] [X] [X] [X] [X] -INPLACE_POWER [X] [X] [X] [X] [X] -GET_ITER [X] [X] [X] [X] [X] -STORE_LOCALS [X] [X] [X] [X] [ ] -PRINT_EXPR [X] [X] [X] [X] [X] -LOAD_BUILD_CLASS [X] [X] [X] [X] [X] -YIELD_FROM [ ] [ ] [ ] [X] [X] -<73> [ ] [ ] [ ] [ ] [ ] -<74> [ ] [ ] [ ] [ ] [ ] -INPLACE_LSHIFT [X] [X] [X] [X] [X] -INPLACE_RSHIFT [X] [X] [X] [X] [X] -INPLACE_AND [X] [X] [X] [X] [X] -INPLACE_XOR [X] [X] [X] [X] [X] -INPLACE_OR [X] [X] [X] [X] [X] -BREAK_LOOP [X] [X] [X] [X] [X] -WITH_CLEANUP [X] [X] [X] [X] [X] -<82> [ ] [ ] [ ] [ ] [ ] -RETURN_VALUE [X] [X] [X] [X] [X] -IMPORT_STAR [X] [X] [X] [X] [X] -<85> [ ] [ ] [ ] [ ] [ ] -YIELD_VALUE [X] [X] [X] [X] [X] -POP_BLOCK [X] [X] [X] [X] [X] -END_FINALLY [X] [X] [X] [X] [X] -POP_EXCEPT [X] [X] [X] [X] [X] -STORE_NAME [X] [X] [X] [X] [X] -DELETE_NAME [X] [X] [X] [X] [X] -UNPACK_SEQUENCE [X] [X] [X] [X] [X] -FOR_ITER [X] [X] [X] [X] [X] -UNPACK_EX [X] [X] [X] [X] [X] -STORE_ATTR [X] [X] [X] [X] [X] -DELETE_ATTR [X] [X] [X] [X] [X] -STORE_GLOBAL [X] [X] [X] [X] [X] -DELETE_GLOBAL [X] [X] [X] [X] [X] -DUP_TOPX [X] [X] [ ] [ ] [ ] -LOAD_CONST [X] [X] [X] [X] [X] -LOAD_NAME [X] [X] [X] [X] [X] -BUILD_TUPLE [X] [X] [X] [X] [X] -BUILD_LIST [X] [X] [X] [X] [X] -BUILD_SET [X] [X] [X] [X] [X] -BUILD_MAP [X] [X] [X] [X] [X] -LOAD_ATTR [X] [X] [X] [X] [X] -COMPARE_OP [X] [X] [X] [X] [X] -IMPORT_NAME [X] [X] [X] [X] [X] -IMPORT_FROM [X] [X] [X] [X] [X] -JUMP_FORWARD [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] -POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] -POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] -LOAD_GLOBAL [X] [X] [X] [X] [X] -<117> [ ] [ ] [ ] [ ] [ ] -<118> [ ] [ ] [ ] [ ] [ ] -CONTINUE_LOOP [X] [X] [X] [X] [X] -SETUP_LOOP [X] [X] [X] [X] [X] -SETUP_EXCEPT [X] [X] [X] [X] [X] -SETUP_FINALLY [X] [X] [X] [X] [X] -<123> [ ] [ ] [ ] [ ] [ ] -LOAD_FAST [X] [X] [X] [X] [X] -STORE_FAST [X] [X] [X] [X] [X] -DELETE_FAST [X] [X] [X] [X] [X] -<127> [ ] [ ] [ ] [ ] [ ] -<128> [ ] [ ] [ ] [ ] [ ] -<129> [ ] [ ] [ ] [ ] [ ] -RAISE_VARARGS [X] [X] [X] [X] [X] -CALL_FUNCTION [X] [X] [X] [X] [X] -MAKE_FUNCTION [X] [X] [X] [X] [X] -BUILD_SLICE [X] [X] [X] [X] [X] -MAKE_CLOSURE [X] [X] [X] [X] [X] -LOAD_CLOSURE [X] [X] [X] [X] [X] -LOAD_DEREF [X] [X] [X] [X] [X] -STORE_DEREF [X] [X] [X] [X] [X] -DELETE_DEREF [ ] [ ] [X] [X] [X] -<139> [ ] [ ] [ ] [ ] [ ] -CALL_FUNCTION_VAR [X] [X] [X] [X] [X] -CALL_FUNCTION_KW [X] [X] [X] [X] [X] -CALL_FUNCTION_VAR_KW [X] [X] [X] [X] [X] -EXTENDED_ARG ! [X] [X] -SETUP_WITH ! [X] [X] [X] -<144> ! [ ] [ ] -EXTENDED_ARG ! [X] [X] [X] -LIST_APPEND [ ] [X] [X] [X] [X] -SET_ADD [ ] [X] [X] [X] [X] -MAP_ADD [ ] [X] [X] [X] [X] -LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] -<149> [ ] [ ] [ ] [ ] [ ] -<150> [ ] [ ] [ ] [ ] [ ] -<151> [ ] [ ] [ ] [ ] [ ] -<152> [ ] [ ] [ ] [ ] [ ] -<153> [ ] [ ] [ ] [ ] [ ] -<154> [ ] [ ] [ ] [ ] [ ] -<155> [ ] [ ] [ ] [ ] [ ] -<156> [ ] [ ] [ ] [ ] [ ] -<157> [ ] [ ] [ ] [ ] [ ] -<158> [ ] [ ] [ ] [ ] [ ] -<159> [ ] [ ] [ ] [ ] [ ] + 3.0 3.1 3.2 3.3 3.4 3.5 +STOP_CODE [X] [X] [X] [ ] [ ] [ ] +POP_TOP [X] [X] [X] [X] [X] [X] +ROT_TWO [X] [X] [X] [X] [X] [X] +ROT_THREE [X] [X] [X] [X] [X] [X] +DUP_TOP [X] [X] [X] [X] [X] [X] +ROT_FOUR ! [X] [X] +DUP_TOP_TWO ! [X] [X] [X] [X] +<6> [ ] [ ] [ ] [ ] [ ] [ ] +<7> [ ] [ ] [ ] [ ] [ ] [ ] +<8> [ ] [ ] [ ] [ ] [ ] [ ] +NOP [X] [X] [X] [X] [X] [X] +UNARY_POSITIVE [X] [X] [X] [X] [X] [X] +UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] +UNARY_NOT [X] [X] [X] [X] [X] [X] +<13> [ ] [ ] [ ] [ ] [ ] [ ] +<14> [ ] [ ] [ ] [ ] [ ] [ ] +UNARY_INVERT [X] [X] [X] [X] [X] [X] +BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] +SET_ADD ! [X] [ ] [ ] [ ] [ ] +INPLACE_MATRIX_MULTIPLY ! [X] +LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] +BINARY_POWER [X] [X] [X] [X] [X] [X] +BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] +<21> [ ] [ ] [ ] [ ] [ ] [ ] +BINARY_MODULO [X] [X] [X] [X] [X] [X] +BINARY_ADD [X] [X] [X] [X] [X] [X] +BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] +BINARY_SUBSCR [X] [X] [X] [X] [X] [X] +BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] +BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] +INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] +INPLACE_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] +<30> [ ] [ ] [ ] [ ] [ ] [ ] +<31> [ ] [ ] [ ] [ ] [ ] [ ] +<32> [ ] [ ] [ ] [ ] [ ] [ ] +<33> [ ] [ ] [ ] [ ] [ ] [ ] +<34> [ ] [ ] [ ] [ ] [ ] [ ] +<35> [ ] [ ] [ ] [ ] [ ] [ ] +<36> [ ] [ ] [ ] [ ] [ ] [ ] +<37> [ ] [ ] [ ] [ ] [ ] [ ] +<38> [ ] [ ] [ ] [ ] [ ] [ ] +<39> [ ] [ ] [ ] [ ] [ ] [ ] +<40> [ ] [ ] [ ] [ ] [ ] [ ] +<41> [ ] [ ] [ ] [ ] [ ] [ ] +<42> [ ] [ ] [ ] [ ] [ ] [ ] +<43> [ ] [ ] [ ] [ ] [ ] [ ] +<44> [ ] [ ] [ ] [ ] [ ] [ ] +<45> [ ] [ ] [ ] [ ] [ ] [ ] +<46> [ ] [ ] [ ] [ ] [ ] [ ] +<47> [ ] [ ] [ ] [ ] [ ] [ ] +<48> [ ] [ ] [ ] [ ] [ ] [ ] +<49> [ ] [ ] [ ] [ ] [ ] [ ] +GET_AITER [ ] [ ] [ ] [ ] [ ] [X] +GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] +BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] +<53> [ ] [ ] [ ] [ ] [ ] [ ] +STORE_MAP [X] [X] [X] [X] [X] [ ] +INPLACE_ADD [X] [X] [X] [X] [X] [X] +INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] +INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] +<58> [ ] [ ] [ ] [ ] [ ] [ ] +INPLACE_MODULO [X] [X] [X] [X] [X] [X] +STORE_SUBSCR [X] [X] [X] [X] [X] [X] +DELETE_SUBSCR [X] [X] [X] [X] [X] [X] +BINARY_LSHIFT [X] [X] [X] [X] [X] [X] +BINARY_RSHIFT [X] [X] [X] [X] [X] [X] +BINARY_AND [X] [X] [X] [X] [X] [X] +BINARY_XOR [X] [X] [X] [X] [X] [X] +BINARY_OR [X] [X] [X] [X] [X] [X] +INPLACE_POWER [X] [X] [X] [X] [X] [X] +GET_ITER [X] [X] [X] [X] [X] [X] +STORE_LOCALS ! [X] [X] [X] [X] [ ] +GET_YIELD_FROM_ITER ! [X] +PRINT_EXPR [X] [X] [X] [X] [X] [X] +LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] +YIELD_FROM [ ] [ ] [ ] [X] [X] [X] +GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] +<74> [ ] [ ] [ ] [ ] [ ] [ ] +INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] +INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] +INPLACE_AND [X] [X] [X] [X] [X] [X] +INPLACE_XOR [X] [X] [X] [X] [X] [X] +INPLACE_OR [X] [X] [X] [X] [X] [X] +BREAK_LOOP [X] [X] [X] [X] [X] [X] +WITH_CLEANUP ! [X] [X] [X] [X] [X] +WITH_CLEANUP_START ! [X] +WITH_CLEANUP_FINISH [ ] [ ] [ ] [ ] [ ] [X] +RETURN_VALUE [X] [X] [X] [X] [X] [X] +IMPORT_STAR [X] [X] [X] [X] [X] [X] +<85> [ ] [ ] [ ] [ ] [ ] [ ] +YIELD_VALUE [X] [X] [X] [X] [X] [X] +POP_BLOCK [X] [X] [X] [X] [X] [X] +END_FINALLY [X] [X] [X] [X] [X] [X] +POP_EXCEPT [X] [X] [X] [X] [X] [X] +STORE_NAME [X] [X] [X] [X] [X] [X] +DELETE_NAME [X] [X] [X] [X] [X] [X] +UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] +FOR_ITER [X] [X] [X] [X] [X] [X] +UNPACK_EX [X] [X] [X] [X] [X] [X] +STORE_ATTR [X] [X] [X] [X] [X] [X] +DELETE_ATTR [X] [X] [X] [X] [X] [X] +STORE_GLOBAL [X] [X] [X] [X] [X] [X] +DELETE_GLOBAL [X] [X] [X] [X] [X] [X] +DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] +LOAD_CONST [X] [X] [X] [X] [X] [X] +LOAD_NAME [X] [X] [X] [X] [X] [X] +BUILD_TUPLE [X] [X] [X] [X] [X] [X] +BUILD_LIST [X] [X] [X] [X] [X] [X] +BUILD_SET [X] [X] [X] [X] [X] [X] +BUILD_MAP [X] [X] [X] [X] [X] [X] +LOAD_ATTR [X] [X] [X] [X] [X] [X] +COMPARE_OP [X] [X] [X] [X] [X] [X] +IMPORT_NAME [X] [X] [X] [X] [X] [X] +IMPORT_FROM [X] [X] [X] [X] [X] [X] +JUMP_FORWARD [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] +POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] +POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] +LOAD_GLOBAL [X] [X] [X] [X] [X] [X] +<117> [ ] [ ] [ ] [ ] [ ] [ ] +<118> [ ] [ ] [ ] [ ] [ ] [ ] +CONTINUE_LOOP [X] [X] [X] [X] [X] [X] +SETUP_LOOP [X] [X] [X] [X] [X] [X] +SETUP_EXCEPT [X] [X] [X] [X] [X] [X] +SETUP_FINALLY [X] [X] [X] [X] [X] [X] +<123> [ ] [ ] [ ] [ ] [ ] [ ] +LOAD_FAST [X] [X] [X] [X] [X] [X] +STORE_FAST [X] [X] [X] [X] [X] [X] +DELETE_FAST [X] [X] [X] [X] [X] [X] +<127> [ ] [ ] [ ] [ ] [ ] [ ] +<128> [ ] [ ] [ ] [ ] [ ] [ ] +<129> [ ] [ ] [ ] [ ] [ ] [ ] +RAISE_VARARGS [X] [X] [X] [X] [X] [X] +CALL_FUNCTION [X] [X] [X] [X] [X] [X] +MAKE_FUNCTION [X] [X] [X] [X] [X] [X] +BUILD_SLICE [X] [X] [X] [X] [X] [X] +MAKE_CLOSURE [X] [X] [X] [X] [X] [X] +LOAD_CLOSURE [X] [X] [X] [X] [X] [X] +LOAD_DEREF [X] [X] [X] [X] [X] [X] +STORE_DEREF [X] [X] [X] [X] [X] [X] +DELETE_DEREF [ ] [ ] [X] [X] [X] [X] +<139> [ ] [ ] [ ] [ ] [ ] [ ] +CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] +CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] +CALL_FUNCTION_VAR_KW [X] [X] [X] [X] [X] [X] +EXTENDED_ARG ! [X] [X] +SETUP_WITH ! [X] [X] [X] [X] +<144> ! [ ] [ ] +EXTENDED_ARG ! [X] [X] [X] [X] +LIST_APPEND [ ] [X] [X] [X] [X] [X] +SET_ADD [ ] [X] [X] [X] [X] [X] +MAP_ADD [ ] [X] [X] [X] [X] [X] +LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] +BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] +BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] +BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] +BUILD_TUPLE_UNPACK [ ] [ ] [ ] [ ] [ ] [X] +BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] +SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] +<155> [ ] [ ] [ ] [ ] [ ] [ ] +<156> [ ] [ ] [ ] [ ] [ ] [ ] +<157> [ ] [ ] [ ] [ ] [ ] [ ] +<158> [ ] [ ] [ ] [ ] [ ] [ ] +<159> [ ] [ ] [ ] [ ] [ ] [ ] . . . @@ -560,36 +563,36 @@ TYPE_SET '<' '<' TYPE_FROZENSET '>' '>' '>' - 3.0 3.1 3.2 3.3 3.4 -TYPE_NULL '0' '0' '0' '0' '0' -TYPE_NONE 'N' 'N' 'N' 'N' 'N' -TYPE_FALSE 'F' 'F' 'F' 'F' 'F' -TYPE_TRUE 'T' 'T' 'T' 'T' 'T' -TYPE_STOPITER 'S' 'S' 'S' 'S' 'S' -TYPE_ELLIPSIS '.' '.' '.' '.' '.' -TYPE_INT 'i' 'i' 'i' 'i' 'i' + 3.0 3.1 3.2 3.3 3.4 3.5 +TYPE_NULL '0' '0' '0' '0' '0' '0' +TYPE_NONE 'N' 'N' 'N' 'N' 'N' 'N' +TYPE_FALSE 'F' 'F' 'F' 'F' 'F' 'F' +TYPE_TRUE 'T' 'T' 'T' 'T' 'T' 'T' +TYPE_STOPITER 'S' 'S' 'S' 'S' 'S' 'S' +TYPE_ELLIPSIS '.' '.' '.' '.' '.' '.' +TYPE_INT 'i' 'i' 'i' 'i' 'i' 'i' TYPE_INT64 'I' 'I' 'I' 'I' -TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' -TYPE_BINARY_FLOAT 'g' 'g' 'g' 'g' 'g' -TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x' -TYPE_BINARY_COMPLEX 'y' 'y' 'y' 'y' 'y' -TYPE_LONG 'l' 'l' 'l' 'l' 'l' -TYPE_STRING 's' 's' 's' 's' 's' -TYPE_INTERNED 't' -TYPE_REF 'r' -TYPE_TUPLE '(' '(' '(' '(' '(' -TYPE_LIST '[' '[' '[' '[' '[' -TYPE_DICT '{' '{' '{' '{' '{' -TYPE_CODE 'c' 'c' 'c' 'c' 'c' -TYPE_UNICODE 'u' 'u' 'u' 'u' 'u' -TYPE_UNKNOWN '?' '?' '?' '?' '?' -TYPE_SET '<' '<' '<' '<' '<' -TYPE_FROZENSET '>' '>' '>' '>' '>' -TYPE_ASCII 'a' -TYPE_ASCII_INTERNED 'A' -TYPE_SMALL_TUPLE ')' -TYPE_SHORT_ASCII 'z' -TYPE_SHORT_ASCII_INTERNED 'Z' +TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' 'f' +TYPE_BINARY_FLOAT 'g' 'g' 'g' 'g' 'g' 'g' +TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x' 'x' +TYPE_BINARY_COMPLEX 'y' 'y' 'y' 'y' 'y' 'y' +TYPE_LONG 'l' 'l' 'l' 'l' 'l' 'l' +TYPE_STRING 's' 's' 's' 's' 's' 's' +TYPE_INTERNED 't' 't' +TYPE_REF 'r' 'r' +TYPE_TUPLE '(' '(' '(' '(' '(' '(' +TYPE_LIST '[' '[' '[' '[' '[' '[' +TYPE_DICT '{' '{' '{' '{' '{' '{' +TYPE_CODE 'c' 'c' 'c' 'c' 'c' 'c' +TYPE_UNICODE 'u' 'u' 'u' 'u' 'u' 'u' +TYPE_UNKNOWN '?' '?' '?' '?' '?' '?' +TYPE_SET '<' '<' '<' '<' '<' '<' +TYPE_FROZENSET '>' '>' '>' '>' '>' '>' +TYPE_ASCII 'a' 'a' +TYPE_ASCII_INTERNED 'A' 'A' +TYPE_SMALL_TUPLE ')' ')' +TYPE_SHORT_ASCII 'z' 'z' +TYPE_SHORT_ASCII_INTERNED 'Z' 'Z' [TYPE_CODE] 1.0 1.3 1.5 2.1 2.3 3.0 diff --git a/bytecode.cpp b/bytecode.cpp index 73464144a..247bc9148 100644 --- a/bytecode.cpp +++ b/bytecode.cpp @@ -28,6 +28,7 @@ DECLARE_PYTHON(3, 1) DECLARE_PYTHON(3, 2) DECLARE_PYTHON(3, 3) DECLARE_PYTHON(3, 4) +DECLARE_PYTHON(3, 5) const char* Pyc::OpcodeName(int opcode) { @@ -49,8 +50,11 @@ const char* Pyc::OpcodeName(int opcode) "INPLACE_MULTIPLY", "INPLACE_DIVIDE", "INPLACE_MODULO", "INPLACE_POWER", "GET_ITER", "PRINT_ITEM_TO", "PRINT_NEWLINE_TO", "INPLACE_LSHIFT", "INPLACE_RSHIFT", "INPLACE_AND", "INPLACE_XOR", "INPLACE_OR", - "WITH_CLEANUP", "IMPORT_STAR", "YIELD_VALUE", "LOAD_BUILD_CLASS", - "STORE_LOCALS", "POP_EXCEPT", "SET_ADD", "YIELD_FROM", + "WITH_CLEANUP", "WITH_CLEANUP_START", "WITH_CLEANUP_FINISH", "IMPORT_STAR", + "YIELD_VALUE", "LOAD_BUILD_CLASS", "STORE_LOCALS", "POP_EXCEPT", "SET_ADD", + "YIELD_FROM", "BINARY_MATRIX_MULTIPLY", "INPLACE_MATRIX_MULTIPLY", + "GET_AITER", "GET_ANEXT", "BEFORE_ASYNC_WITH", "GET_YEILD_FROM_ITER", + "GET_AWAITABLE", "STORE_NAME", "DELETE_NAME", "UNPACK_TUPLE", "UNPACK_LIST", "UNPACK_ARG", "STORE_ATTR", "DELETE_ATTR", "STORE_GLOBAL", "DELETE_GLOBAL", @@ -66,9 +70,16 @@ const char* Pyc::OpcodeName(int opcode) "POP_JUMP_IF_FALSE", "POP_JUMP_IF_TRUE", "CONTINUE_LOOP", "MAKE_CLOSURE", "LOAD_CLOSURE", "LOAD_DEREF", "STORE_DEREF", "DELETE_DEREF", "EXTENDED_ARG", "SETUP_WITH", "SET_ADD", "MAP_ADD", "UNPACK_EX", - "LIST_APPEND", "LOAD_CLASSDEREF", + "LIST_APPEND", "LOAD_CLASSDEREF", "BUILD_LIST_UNPACK", "BUILD_MAP_UNPACK", + "BUILD_MAP_UNPACK_WITH_CALL", "BUILD_TUPLE_UNPACK", "BUILD_SET_UNPACK", + "SETUP_ASYNC_WITH", }; +#if __cplusplus >= 201103L + static_assert(sizeof(opcode_names) / sizeof(opcode_names[0]) == PYC_LAST_OPCODE, + "Pyc::OpcodeName opcode_names not in sync with opcode enum"); +#endif + if (opcode < 0) return ""; @@ -112,6 +123,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode) case 2: return python_32_map(opcode); case 3: return python_33_map(opcode); case 4: return python_34_map(opcode); + case 5: return python_35_map(opcode); } break; } diff --git a/bytecode.h b/bytecode.h index 9e671a88b..164978f7d 100644 --- a/bytecode.h +++ b/bytecode.h @@ -22,8 +22,10 @@ enum Opcode { INPLACE_MULTIPLY, INPLACE_DIVIDE, INPLACE_MODULO, INPLACE_POWER, GET_ITER, PRINT_ITEM_TO, PRINT_NEWLINE_TO, INPLACE_LSHIFT, INPLACE_RSHIFT, INPLACE_AND, INPLACE_XOR, INPLACE_OR, WITH_CLEANUP, - IMPORT_STAR, YIELD_VALUE, LOAD_BUILD_CLASS, STORE_LOCALS, - POP_EXCEPT, SET_ADD, YIELD_FROM, + WITH_CLEANUP_START, WITH_CLEANUP_FINISH, IMPORT_STAR, YIELD_VALUE, + LOAD_BUILD_CLASS, STORE_LOCALS, POP_EXCEPT, SET_ADD, YIELD_FROM, + BINARY_MATRIX_MULTIPLY, INPLACE_MATRIX_MULTIPLY, GET_AITER, GET_ANEXT, + BEFORE_ASYNC_WITH, GET_YIELD_FROM_ITER, GET_AWAITABLE, /* Has parameter word */ PYC_HAVE_ARG, @@ -42,7 +44,9 @@ enum Opcode { POP_JUMP_IF_FALSE_A, POP_JUMP_IF_TRUE_A, CONTINUE_LOOP_A, MAKE_CLOSURE_A, LOAD_CLOSURE_A, LOAD_DEREF_A, STORE_DEREF_A, DELETE_DEREF_A, EXTENDED_ARG_A, SETUP_WITH_A, SET_ADD_A, MAP_ADD_A, UNPACK_EX_A, - LIST_APPEND_A, LOAD_CLASSDEREF_A, + LIST_APPEND_A, LOAD_CLASSDEREF_A, BUILD_LIST_UNPACK_A, BUILD_MAP_UNPACK_A, + BUILD_MAP_UNPACK_WITH_CALL_A, BUILD_TUPLE_UNPACK_A, BUILD_SET_UNPACK_A, + SETUP_ASYNC_WITH_A, PYC_LAST_OPCODE, PYC_INVALID_OPCODE = -1, diff --git a/bytes/comp_map.py b/bytes/comp_map.py index 8049cf064..86062f642 100755 --- a/bytes/comp_map.py +++ b/bytes/comp_map.py @@ -25,9 +25,9 @@ if not os.path.exists(sys.argv[2]): os.mkdir(sys.argv[2]) -maplist = [ 10, 11, 13, 14, 15, 16, +maplist = [ 10, 11, 13, 14, 15, 16, 20, 21, 22, 23, 24, 25, 26, 27, - 30, 31, 32, 33, 34 ] + 30, 31, 32, 33, 34, 35 ] for mapver in maplist: infile = open(os.path.join(sys.argv[1], 'python_%d.map' % mapver), 'rt') diff --git a/pyc_code.h b/pyc_code.h index a90a73564..8a578695c 100644 --- a/pyc_code.h +++ b/pyc_code.h @@ -15,6 +15,8 @@ class PycCode : public PycObject { CO_NESTED = 0x10, CO_GENERATOR = 0x20, CO_NOFREE = 0x40, + CO_COROUTINE = 0x80, + CO_ITERABLE_COROUTINE = 0x100, CO_GENERATOR_ALLOWED = 0x1000, CO_FUTURE_DIVISION = 0x2000, CO_FUTURE_ABSOLUTE_IMPORT = 0x4000, @@ -22,6 +24,7 @@ class PycCode : public PycObject { CO_FUTURE_PRINT_FUNCTION = 0x10000, CO_FUTURE_UNICODE_LITERALS = 0x20000, CO_FUTURE_BARRY_AS_BDFL = 0x40000, + CO_FUTURE_GENERATOR_STOP = 0x80000, }; PycCode(int type = TYPE_CODE) diff --git a/pyc_module.cpp b/pyc_module.cpp index 8a94c88a2..bab02ae6b 100644 --- a/pyc_module.cpp +++ b/pyc_module.cpp @@ -124,6 +124,12 @@ void PycModule::setVersion(unsigned int magic) m_unicode = true; break; + case MAGIC_3_5: + m_maj = 3; + m_min = 5; + m_unicode = true; + break; + /* Bad Magic detected */ default: m_maj = -1; diff --git a/pyc_module.h b/pyc_module.h index 5bc3cf61c..fd69c2448 100644 --- a/pyc_module.h +++ b/pyc_module.h @@ -26,6 +26,7 @@ enum PycMagic { MAGIC_3_2 = 0x0A0D0C6C, MAGIC_3_3 = 0x0A0D0C9E, MAGIC_3_4 = 0x0A0D0CEE, + MAGIC_3_5 = 0x0A0D0D16, }; #define PYC_VERSION(maj, min) MAGIC_##maj##_##min diff --git a/pycdas.cpp b/pycdas.cpp index ef044a392..42fb3863b 100644 --- a/pycdas.cpp +++ b/pycdas.cpp @@ -13,14 +13,15 @@ static const char* flag_names[] = { "CO_OPTIMIZED", "CO_NEWLOCALS", "CO_VARARGS", "CO_VARKEYWORDS", - "CO_NESTED", "CO_GENERATOR", "CO_NOFREE", "<0x80>", "<0x100>", "<0x200>", - "<0x400>", "<0x800>", "CO_GENERATOR_ALLOWED", "CO_FUTURE_DIVISION", + "CO_NESTED", "CO_GENERATOR", "CO_NOFREE", "CO_COROUTINE", + "CO_ITERABLE_COROUTINE", "<0x200>", "<0x400>", "<0x800>", + "CO_GENERATOR_ALLOWED", "CO_FUTURE_DIVISION", "CO_FUTURE_ABSOLUTE_IMPORT", "CO_FUTURE_WITH_STATEMENT", "CO_FUTURE_PRINT_FUNCTION", "CO_FUTURE_UNICODE_LITERALS", - "CO_FUTURE_BARRY_AS_BDFL", "<0x80000>", "<0x100000>", "<0x200000>", - "<0x400000>", "<0x800000>", "<0x1000000>", "<0x2000000>", "<0x4000000>", - "<0x8000000>", "<0x10000000>", "<0x20000000>", "<0x40000000>", - "<0x80000000>" + "CO_FUTURE_BARRY_AS_BDFL", "CO_FUTURE_GENERATOR_STOP", + "<0x100000>", "<0x200000>", "<0x400000>", "<0x800000>", + "<0x1000000>", "<0x2000000>", "<0x4000000>", "<0x8000000>", + "<0x10000000>", "<0x20000000>", "<0x40000000>", "<0x80000000>" }; static void print_coflags(unsigned long flags)