Add bytecode and disassembly support for Python 3.8.

Also fixes running pymultic from outside of its source directory.
This commit is contained in:
Michael Hansen
2019-02-08 16:06:55 -08:00
parent de78e1b882
commit 428d11c4b5
12 changed files with 419 additions and 267 deletions

View File

@@ -17,7 +17,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
30 31 32 33 34 35 36 37 38
)
foreach(ver ${PYTHON_VERSIONS})

View File

@@ -8,6 +8,7 @@ Python MAGIC Python MAGIC Python MAGIC
1.6 0x0A0DC4FC 2.6 0x0A0DF2D1 3.5.3 0x0A0D0D17
2.7 0x0A0DF303 3.6 0x0A0D0D33
3.7 0x0A0D0D42
3.8 0x0A0D0D55
1.0 1.1 1.2 1.3 1.4 1.5 1.6
@@ -347,273 +348,277 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ]
.
3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7
STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ]
POP_TOP [X] [X] [X] [X] [X] [X] [X] [X]
ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X]
ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOP [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
STOP_CODE [X] [X] [X] [ ] [ ] [ ] [ ] [ ] [ ]
POP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_TWO [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_THREE [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
ROT_FOUR ! [X] [X]
DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X]
<6> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
NOP [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X]
<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
DUP_TOP_TWO ! [X] [X] [X] [X] [X] [X] [X]
ROT_FOUR [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
NOP [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [X] [X]
<13> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MATRIX_MULTIPLY [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
SET_ADD ! [X] [ ] [ ] [ ] [ ]
INPLACE_MATRIX_MULTIPLY ! [X] [X] [X]
LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X]
<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_TRUE_DIVIDE [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> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<48> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<49> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
<53> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
STORE_MAP [X] [X] [X] [X] [X] [ ] [ ] [ ]
INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X]
<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X]
GET_ITER [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_MATRIX_MULTIPLY ! [X] [X] [X] [X]
LIST_APPEND [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<21> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_TRUE_DIVIDE [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> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<48> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<49> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
GET_AITER [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
GET_ANEXT [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BEFORE_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BEGIN_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
STORE_MAP ! [X] [X] [X] [X] [X] [ ] [ ] [ ]
END_ASYNC_FOR ! [X]
INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<58> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_AND [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_OR [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [X] [X]
GET_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_LOCALS ! [X] [X] [X] [X] [ ]
GET_YIELD_FROM_ITER ! [X] [X] [X]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X]
YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X]
GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
<74> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_OR [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]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [X] [X]
YIELD_FROM [ ] [ ] [ ] [X] [X] [X] [X] [X] [X]
GET_AWAITABLE [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
<74> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [X] [X]
INPLACE_OR [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]
WITH_CLEANUP_FINISH [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X]
POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [X]
END_FINALLY [X] [X] [X] [X] [X] [X] [X] [X]
POP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X]
STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X]
FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X]
STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X]
COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_FORWARD [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]
POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X]
<117> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<118> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X]
<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X]
STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ANNOTATION [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ]
<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<129> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SLICE [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]
LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X]
STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_DEREF [ ] [ ] [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]
WITH_CLEANUP_START ! [X] [X] [X] [X]
WITH_CLEANUP_FINISH [ ] [ ] [ ] [ ] [ ] [X] [X] [X] [X]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X] [X]
SETUP_ANNOTATIONS [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
YIELD_VALUE [X] [X] [X] [X] [X] [X] [X] [X] [X]
POP_BLOCK [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]
STORE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [X] [X]
FOR_ITER [X] [X] [X] [X] [X] [X] [X] [X] [X]
UNPACK_EX [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
DUP_TOPX [X] [X] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SET [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [X] [X]
COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_FORWARD [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]
POP_JUMP_IF_FALSE [ ] [X] [X] [X] [X] [X] [X] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X] [X]
<117> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<118> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [X] [X]
<123> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_FAST [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_FAST [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]
CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X]
MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [X] [X]
BUILD_SLICE [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]
LOAD_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X]
STORE_DEREF [X] [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_DEREF [ ] [ ] [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]
CALL_FUNCTION_VAR_KW ! [X] [X] [X] [X] [X] [X]
CALL_FUNCTION_EX ! [X] [X]
CALL_FUNCTION_EX ! [X] [X] [X]
EXTENDED_ARG ! [X] [X]
SETUP_WITH ! [X] [X] [X] [X] [X] [X]
SETUP_WITH ! [X] [X] [X] [X] [X] [X] [X]
<144> ! [ ] [ ]
EXTENDED_ARG ! [X] [X] [X] [X] [X] [X]
LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X]
SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X]
MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X]
LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [X] [X] [X] [X]
BUILD_LIST_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_MAP_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_MAP_UNPACK_WITH_CALL [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_TUPLE_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_SET_UNPACK [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
SETUP_ASYNC_WITH [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<162> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<163> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X]
LIST_APPEND [ ] [X] [X] [X] [X] [X] [X] [X] [X]
SET_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X]
MAP_ADD [ ] [X] [X] [X] [X] [X] [X] [X] [X]
LOAD_CLASSDEREF [ ] [ ] [ ] [ ] [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]
FORMAT_VALUE [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_CONST_KEY_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_STRING [ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
BUILD_TUPLE_UNPACK_WITH_CALL[ ] [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
<159> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
CALL_METHOD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X] [X]
CALL_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
POP_FINALLY [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<164> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<165> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
.
.
.
1.0 1.1 1.2 1.3 1.4 1.5 1.6
TYPE_NULL '0' '0' '0' '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' 'N' 'N' 'N' 'N'
TYPE_ELLIPSIS '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' 'f' 'f'
TYPE_COMPLEX 'x' 'x' 'x'
TYPE_LONG 'l' 'l' 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's' 's' 's'
TYPE_TUPLE '(' '(' '(' '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{' '{' '{' '{'
TYPE_CODE 'C' 'C' 'C' 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u'
TYPE_UNKNOWN '?' '?' '?' '?' '?' '?' '?'
1.0 1.3 1.4 1.5 1.6
TYPE_NULL '0' '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' 'N' 'N'
TYPE_ELLIPSIS '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f'
TYPE_COMPLEX 'x' 'x' 'x'
TYPE_LONG 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's'
TYPE_TUPLE '(' '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{' '{'
TYPE_CODE 'C' 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u'
TYPE_UNKNOWN '?' '?' '?' '?' '?'
2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7
TYPE_NULL '0' '0' '0' '0' '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' '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' 'S'
TYPE_ELLIPSIS '.' '.' '.' '.' '.' '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I' 'I' 'I' 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x' 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y' 'y'
TYPE_LONG 'l' 'l' 'l' 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's' 's' 's' 's'
TYPE_INTERNED 't' 't' 't' 't'
TYPE_STRINGREF 'R' 'R' 'R' 'R'
TYPE_TUPLE '(' '(' '(' '(' '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '[' '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{' '{' '{' '{' '{'
TYPE_CODE 'c' 'c' 'c' 'c' 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u' 'u' 'u' 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?' '?' '?' '?' '?' '?'
TYPE_SET '<' '<' '<'
TYPE_FROZENSET '>' '>' '>'
2.0 2.2 2.3 2.4 2.5
TYPE_NULL '0' '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g'
TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y'
TYPE_LONG 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's'
TYPE_INTERNED 't' 't'
TYPE_STRINGREF 'R' '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 '>'
3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7
TYPE_NULL '0' '0' '0' '0' '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' 'N' 'N' 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F' 'F' 'F' 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T' 'T' 'T' 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S' 'S' 'S' 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.' '.' '.' '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g' 'g' 'g' 'g' 'g' 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x' 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y' 'y' 'y' 'y' 'y' 'y' 'y'
TYPE_LONG 'l' 'l' 'l' 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's' 's' 's' 's'
TYPE_INTERNED 't' 't' 't' 't'
TYPE_REF 'r' 'r' 'r' 'r'
TYPE_TUPLE '(' '(' '(' '(' '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '[' '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{' '{' '{' '{' '{'
TYPE_CODE 'c' 'c' 'c' 'c' 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u' 'u' 'u' 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?' '?' '?' '?' '?' '?'
TYPE_SET '<' '<' '<' '<' '<' '<' '<' '<'
TYPE_FROZENSET '>' '>' '>' '>' '>' '>' '>' '>'
TYPE_ASCII 'a' 'a' 'a' 'a'
TYPE_ASCII_INTERNED 'A' 'A' 'A' 'A'
TYPE_SMALL_TUPLE ')' ')' ')' ')'
TYPE_SHORT_ASCII 'z' 'z' 'z' 'z'
TYPE_SHORT_ASCII_INTERNED 'Z' 'Z' 'Z' 'Z'
3.0 3.4
TYPE_NULL '0' '0'
TYPE_NONE 'N' 'N'
TYPE_FALSE 'F' 'F'
TYPE_TRUE 'T' 'T'
TYPE_STOPITER 'S' 'S'
TYPE_ELLIPSIS '.' '.'
TYPE_INT 'i' 'i'
TYPE_INT64 'I'
TYPE_FLOAT 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g'
TYPE_COMPLEX 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y'
TYPE_LONG 'l' 'l'
TYPE_STRING 's' 's'
TYPE_INTERNED 't'
TYPE_REF 'r'
TYPE_TUPLE '(' '('
TYPE_LIST '[' '['
TYPE_DICT '{' '{'
TYPE_CODE 'c' 'c'
TYPE_UNICODE '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_CODE] 1.0 1.3 1.5 2.1 2.3 3.0
argcount short short short long long
kwonlyargc long
nlocals short short short long long
stacksize short short long long
flags short short short long long
code Obj Obj Obj Obj Obj Obj
consts Obj Obj Obj Obj Obj Obj
names Obj Obj Obj Obj Obj Obj
varnames Obj Obj Obj Obj Obj
freevars Obj Obj Obj
cellvars Obj Obj Obj
filename Obj Obj Obj Obj Obj Obj
name Obj Obj Obj Obj Obj Obj
firstline short short long long
lntable Obj Obj Obj Obj
[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
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
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

View File

@@ -31,6 +31,7 @@ DECLARE_PYTHON(3, 4)
DECLARE_PYTHON(3, 5)
DECLARE_PYTHON(3, 6)
DECLARE_PYTHON(3, 7)
DECLARE_PYTHON(3, 8)
const char* Pyc::OpcodeName(int opcode)
{
@@ -95,6 +96,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
case 5: return python_35_map(opcode);
case 6: return python_36_map(opcode);
case 7: return python_37_map(opcode);
case 8: return python_38_map(opcode);
}
break;
}

View File

@@ -91,6 +91,8 @@ OPCODE(GET_ANEXT)
OPCODE(BEFORE_ASYNC_WITH)
OPCODE(GET_YIELD_FROM_ITER)
OPCODE(GET_AWAITABLE)
OPCODE(BEGIN_FINALLY)
OPCODE(END_ASYNC_FOR)
/* Has parameter word */
OPCODE_A_FIRST(STORE_NAME)
@@ -170,3 +172,5 @@ OPCODE_A(BUILD_STRING)
OPCODE_A(BUILD_TUPLE_UNPACK_WITH_CALL)
OPCODE_A(LOAD_METHOD)
OPCODE_A(CALL_METHOD)
OPCODE_A(CALL_FINALLY)
OPCODE_A(POP_FINALLY)

View File

@@ -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 ]
30, 31, 32, 33, 34, 35, 36, 37, 38 ]
for mapver in maplist:
infile = open(os.path.join(sys.argv[1], 'python_%d.map' % mapver), 'rt')

120
bytes/python_38.map Normal file
View File

@@ -0,0 +1,120 @@
1 POP_TOP
2 ROT_TWO
3 ROT_THREE
4 DUP_TOP
5 DUP_TOP_TWO
6 ROT_FOUR
9 NOP
10 UNARY_POSITIVE
11 UNARY_NEGATIVE
12 UNARY_NOT
15 UNARY_INVERT
16 BINARY_MATRIX_MULTIPLY
17 INPLACE_MATRIX_MULTIPLY
19 BINARY_POWER
20 BINARY_MULTIPLY
22 BINARY_MODULO
23 BINARY_ADD
24 BINARY_SUBTRACT
25 BINARY_SUBSCR
26 BINARY_FLOOR_DIVIDE
27 BINARY_TRUE_DIVIDE
28 INPLACE_FLOOR_DIVIDE
29 INPLACE_TRUE_DIVIDE
50 GET_AITER
51 GET_ANEXT
52 BEFORE_ASYNC_WITH
53 BEGIN_FINALLY
54 END_ASYNC_FOR
55 INPLACE_ADD
56 INPLACE_SUBTRACT
57 INPLACE_MULTIPLY
59 INPLACE_MODULO
60 STORE_SUBSCR
61 DELETE_SUBSCR
62 BINARY_LSHIFT
63 BINARY_RSHIFT
64 BINARY_AND
65 BINARY_XOR
66 BINARY_OR
67 INPLACE_POWER
68 GET_ITER
69 GET_YIELD_FROM_ITER
70 PRINT_EXPR
71 LOAD_BUILD_CLASS
72 YIELD_FROM
73 GET_AWAITABLE
75 INPLACE_LSHIFT
76 INPLACE_RSHIFT
77 INPLACE_AND
78 INPLACE_XOR
79 INPLACE_OR
81 WITH_CLEANUP_START
82 WITH_CLEANUP_FINISH
83 RETURN_VALUE
84 IMPORT_STAR
85 SETUP_ANNOTATIONS
86 YIELD_VALUE
87 POP_BLOCK
88 END_FINALLY
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
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
113 JUMP_ABSOLUTE_A
114 POP_JUMP_IF_FALSE_A
115 POP_JUMP_IF_TRUE_A
116 LOAD_GLOBAL_A
122 SETUP_FINALLY_A
124 LOAD_FAST_A
125 STORE_FAST_A
126 DELETE_FAST_A
130 RAISE_VARARGS_A
131 CALL_FUNCTION_A
132 MAKE_FUNCTION_A
133 BUILD_SLICE_A
135 LOAD_CLOSURE_A
136 LOAD_DEREF_A
137 STORE_DEREF_A
138 DELETE_DEREF_A
141 CALL_FUNCTION_KW_A
142 CALL_FUNCTION_EX_A
143 SETUP_WITH_A
144 EXTENDED_ARG_A
145 LIST_APPEND_A
146 SET_ADD_A
147 MAP_ADD_A
148 LOAD_CLASSDEREF_A
149 BUILD_LIST_UNPACK_A
150 BUILD_MAP_UNPACK_A
151 BUILD_MAP_UNPACK_WITH_CALL_A
152 BUILD_TUPLE_UNPACK_A
153 BUILD_SET_UNPACK_A
154 SETUP_ASYNC_WITH_A
155 FORMAT_VALUE_A
156 BUILD_CONST_KEY_MAP_A
157 BUILD_STRING_A
158 BUILD_TUPLE_UNPACK_WITH_CALL_A
160 LOAD_METHOD_A
161 CALL_METHOD_A
162 CALL_FINALLY_A
163 POP_FINALLY_A

View File

@@ -9,6 +9,11 @@ void PycCode::load(PycData* stream, PycModule* mod)
else if (mod->verCompare(2, 3) >= 0)
m_argCount = stream->get32();
if (mod->verCompare(3, 8) >= 0)
m_posOnlyArgCount = stream->get32();
else
m_posOnlyArgCount = 0;
if (mod->majorVer() >= 3)
m_kwOnlyArgCount = stream->get32();
else

View File

@@ -28,12 +28,13 @@ public:
};
PycCode(int type = TYPE_CODE)
: PycObject(type), m_argCount(0), m_kwOnlyArgCount(0), m_numLocals(0),
m_stackSize(0), m_flags(0), m_firstLine(0) { }
: PycObject(type), m_argCount(), m_posOnlyArgCount(), m_kwOnlyArgCount(),
m_numLocals(), m_stackSize(), m_flags(), m_firstLine() { }
void load(class PycData* stream, class PycModule* mod) override;
int argCount() const { return m_argCount; }
int posOnlyArgCount() const { return m_posOnlyArgCount; }
int kwOnlyArgCount() const { return m_kwOnlyArgCount; }
int numLocals() const { return m_numLocals; }
int stackSize() const { return m_stackSize; }
@@ -50,13 +51,19 @@ public:
PycRef<PycString> lnTable() const { return m_lnTable; }
PycRef<PycObject> getConst(int idx) const
{ return m_consts->get(idx); }
{
return m_consts->get(idx);
}
PycRef<PycString> getName(int idx) const
{ return m_names->get(idx).require_cast<PycString>(); }
{
return m_names->get(idx).require_cast<PycString>();
}
PycRef<PycString> getVarName(int idx) const
{ return m_varNames->get(idx).require_cast<PycString>(); }
{
return m_varNames->get(idx).require_cast<PycString>();
}
PycRef<PycString> getCellVar(int idx) const
{
@@ -74,7 +81,8 @@ public:
}
private:
int m_argCount, m_kwOnlyArgCount, m_numLocals, m_stackSize, m_flags;
int m_argCount, m_posOnlyArgCount, m_kwOnlyArgCount, m_numLocals;
int m_stackSize, m_flags;
PycRef<PycString> m_code;
PycRef<PycSequence> m_consts;
PycRef<PycSequence> m_names;

View File

@@ -146,6 +146,12 @@ void PycModule::setVersion(unsigned int magic)
m_unicode = true;
break;
case MAGIC_3_8:
m_maj = 3;
m_min = 8;
m_unicode = true;
break;
/* Bad Magic detected */
default:
m_maj = -1;

View File

@@ -30,10 +30,9 @@ enum PycMagic {
MAGIC_3_5_3 = 0x0A0D0D17,
MAGIC_3_6 = 0x0A0D0D33,
MAGIC_3_7 = 0x0A0D0D42,
MAGIC_3_8 = 0x0A0D0D55,
};
#define PYC_VERSION(maj, min) MAGIC_##maj##_##min
class PycModule {
public:
PycModule() : m_maj(-1), m_min(-1), m_unicode(false) { }

View File

@@ -86,6 +86,8 @@ void output_object(PycRef<PycObject> obj, PycModule* mod, int indent)
iprintf(indent + 1, "File Name: %s\n", codeObj->fileName()->value());
iprintf(indent + 1, "Object Name: %s\n", codeObj->name()->value());
iprintf(indent + 1, "Arg Count: %d\n", codeObj->argCount());
if (mod->verCompare(3, 8) >= 0)
iprintf(indent + 1, "Pos Only Arg Count: %d\n", codeObj->posOnlyArgCount());
if (mod->majorVer() >= 3)
iprintf(indent + 1, "KW Only Arg Count: %d\n", codeObj->kwOnlyArgCount());
iprintf(indent + 1, "Locals: %d\n", codeObj->numLocals());

View File

@@ -31,6 +31,7 @@ PYVERS = {
'3.5': '3.5.7',
'3.6': '3.6.9',
'3.7': '3.7.4',
'3.8': '3.8.0',
}
OLD_PYTHONS = ('1.0', '1.1', '1.2', '1.3', '1.4', '1.5')
@@ -53,7 +54,7 @@ def fetch_python(snekdir, version):
tarball = 'Python-{}.tgz'.format(realver)
url = '{}/{}/{}'.format(PYURL, realver, tarball)
pyver_dir = 'Python-{}'.format(realver)
pyver_dir = os.path.join(snekdir, 'Python-{}'.format(realver))
if os.path.exists(pyver_dir):
return
@@ -72,16 +73,16 @@ def fetch_python(snekdir, version):
sys.exit(1)
print('Extracting Python {}...'.format(realver))
if subprocess.call(['tar', 'xaf', tarfile]) != 0:
if subprocess.call(['tar', 'xaf', tarfile], cwd=snekdir) != 0:
sys.exit(1)
if os.path.exists('python-{}'.format(realver)) \
if os.path.exists(os.path.join(snekdir, 'python-{}'.format(realver))) \
and not os.path.exists(pyver_dir):
# The dual check prevents useless renames on case-insensitive
# file systems
os.rename('python-{}'.format(realver), pyver_dir)
os.rename(os.path.join(snekdir, 'python-{}'.format(realver)), pyver_dir)
patch_file = '{}/python-builds/Python-{}.patch'.format(snekdir, realver)
patch_file = os.path.join(snekdir, 'python-builds', 'Python-{}.patch'.format(realver))
if os.path.exists(patch_file):
if subprocess.call(['patch', '-p1', '-i', patch_file], cwd=pyver_dir) != 0:
sys.exit(1)