Add pycdas support for Python 2.7

This commit is contained in:
Michael Hansen
2010-09-02 01:01:05 -07:00
parent 6f67603858
commit b45c30cc59
4 changed files with 234 additions and 154 deletions

View File

@@ -176,154 +176,159 @@ CALL_FUNCTION_VAR_KW [ ] [ ] [ ] [ ] [ ] [ ] [X]
2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7
STOP_CODE [X] [X] [X] [X] [X] [X] [X] [ ]
POP_TOP [X] [X] [X] [X] [X] [X] [X] [ ]
ROT_TWO [X] [X] [X] [X] [X] [X] [X] [ ]
ROT_THREE [X] [X] [X] [X] [X] [X] [X] [ ]
DUP_TOP [X] [X] [X] [X] [X] [X] [X] [ ]
ROT_FOUR [X] [X] [X] [X] [X] [X] [X] [ ]
STOP_CODE [X] [X] [X] [X] [X] [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]
ROT_FOUR [X] [X] [X] [X] [X] [X] [X] [X]
<6> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<7> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
NOP [ ] [ ] [ ] [ ] [X] [X] [X] [ ]
UNARY_POSITIVE [X] [X] [X] [X] [X] [X] [X] [ ]
UNARY_NEGATIVE [X] [X] [X] [X] [X] [X] [X] [ ]
UNARY_NOT [X] [X] [X] [X] [X] [X] [X] [ ]
UNARY_CONVERT [X] [X] [X] [X] [X] [X] [X] [ ]
NOP [ ] [ ] [ ] [ ] [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]
UNARY_CONVERT [X] [X] [X] [X] [X] [X] [X] [X]
<14> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [ ]
UNARY_INVERT [X] [X] [X] [X] [X] [X] [X] [X]
<16> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<17> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LIST_APPEND [ ] [ ] [ ] [ ] [X] [X] [X] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_DIVIDE [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_MODULO [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_ADD [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_SUBSCR [X] [X] [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] [ ]
SLICE+0 [X] [X] [X] [X] [X] [X] [X] [ ]
SLICE+1 [X] [X] [X] [X] [X] [X] [X] [ ]
SLICE+2 [X] [X] [X] [X] [X] [X] [X] [ ]
SLICE+3 [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_POWER [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [X]
BINARY_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X]
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]
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]
SLICE+0 [X] [X] [X] [X] [X] [X] [X] [X]
SLICE+1 [X] [X] [X] [X] [X] [X] [X] [X]
SLICE+2 [X] [X] [X] [X] [X] [X] [X] [X]
SLICE+3 [X] [X] [X] [X] [X] [X] [X] [X]
<34> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<35> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<36> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<37> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<38> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<39> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
STORE_SLICE+0 [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_SLICE+1 [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_SLICE+2 [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_SLICE+3 [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_SLICE+0 [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SLICE+1 [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SLICE+2 [X] [X] [X] [X] [X] [X] [X] [X]
STORE_SLICE+3 [X] [X] [X] [X] [X] [X] [X] [X]
<44> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<45> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<46> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<47> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<48> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<49> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
DELETE_SLICE+0 [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_SLICE+1 [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_SLICE+2 [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_SLICE+3 [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_MAP [ ] [ ] [ ] [ ] [ ] [ ] [X] [ ]
INPLACE_ADD [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_SUBTRACT [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_MULTIPLY [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_MODULO [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_SUBSCR [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_LSHIFT [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_RSHIFT [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_AND [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_XOR [X] [X] [X] [X] [X] [X] [X] [ ]
BINARY_OR [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_POWER [X] [X] [X] [X] [X] [X] [X] [ ]
GET_ITER [ ] [ ] [X] [X] [X] [X] [X] [ ]
DELETE_SLICE+0 [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SLICE+1 [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SLICE+2 [X] [X] [X] [X] [X] [X] [X] [X]
DELETE_SLICE+3 [X] [X] [X] [X] [X] [X] [X] [X]
STORE_MAP [ ] [ ] [ ] [ ] [ ] [ ] [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]
INPLACE_DIVIDE [X] [X] [X] [X] [X] [X] [X] [X]
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]
<69> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [ ]
PRINT_ITEM [X] [X] [X] [X] [X] [X] [X] [ ]
PRINT_NEWLINE [X] [X] [X] [X] [X] [X] [X] [ ]
PRINT_ITEM_TO [X] [X] [X] [X] [X] [X] [X] [ ]
PRINT_NEWLINE_TO [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_LSHIFT [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_RSHIFT [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_AND [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_XOR [X] [X] [X] [X] [X] [X] [X] [ ]
INPLACE_OR [X] [X] [X] [X] [X] [X] [X] [ ]
BREAK_LOOP [X] [X] [X] [X] [X] [X] [X] [ ]
WITH_CLEANUP [ ] [ ] [ ] [ ] [ ] [X] [X] [ ]
LOAD_LOCALS [X] [X] [X] [X] [X] [X] [X] [ ]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [ ]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [ ]
EXEC_STMT [X] [X] [X] [X] [X] [X] [X] [ ]
YIELD_VALUE [ ] [ ] [X] [X] [X] [X] [X] [ ]
POP_BLOCK [X] [X] [X] [X] [X] [X] [X] [ ]
END_FINALLY [X] [X] [X] [X] [X] [X] [X] [ ]
BUILD_CLASS [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_NAME [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_NAME [X] [X] [X] [X] [X] [X] [X] [ ]
UNPACK_SEQUENCE [X] [X] [X] [X] [X] [X] [X] [ ]
FOR_ITER [ ] [ ] [X] [X] [X] [X] [X] [ ]
<94> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
STORE_ATTR [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_ATTR [X] [X] [X] [X] [X] [X] [X] [ ]
STORE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_GLOBAL [X] [X] [X] [X] [X] [X] [X] [ ]
DUP_TOPX [X] [X] [X] [X] [X] [X] [X] [ ]
LOAD_CONST [X] [X] [X] [X] [X] [X] [X] [ ]
LOAD_NAME [X] [X] [X] [X] [X] [X] [X] [ ]
BUILD_TUPLE [X] [X] [X] [X] [X] [X] [X] [ ]
BUILD_LIST [X] [X] [X] [X] [X] [X] [X] [ ]
BUILD_MAP [X] [X] [X] [X] [X] [X] [X] [ ]
LOAD_ATTR [X] [X] [X] [X] [X] [X] [X] [ ]
COMPARE_OP [X] [X] [X] [X] [X] [X] [X] [ ]
IMPORT_NAME [X] [X] [X] [X] [X] [X] [X] [ ]
IMPORT_FROM [X] [X] [X] [X] [X] [X] [X] [ ]
<109> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [ ]
JUMP_IF_FALSE [X] [X] [X] [X] [X] [X] [X] [ ]
JUMP_IF_TRUE [X] [X] [X] [X] [X] [X] [X] [ ]
JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [ ]
FOR_LOOP [X] [X] [X] [ ] [ ] [ ] [ ] [ ]
<115> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [ ]
PRINT_EXPR [X] [X] [X] [X] [X] [X] [X] [X]
PRINT_ITEM [X] [X] [X] [X] [X] [X] [X] [X]
PRINT_NEWLINE [X] [X] [X] [X] [X] [X] [X] [X]
PRINT_ITEM_TO [X] [X] [X] [X] [X] [X] [X] [X]
PRINT_NEWLINE_TO [X] [X] [X] [X] [X] [X] [X] [X]
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]
WITH_CLEANUP [ ] [ ] [ ] [ ] [ ] [X] [X] [X]
LOAD_LOCALS [X] [X] [X] [X] [X] [X] [X] [X]
RETURN_VALUE [X] [X] [X] [X] [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X] [X] [X] [X] [X]
EXEC_STMT [X] [X] [X] [X] [X] [X] [X] [X]
YIELD_VALUE [ ] [ ] [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]
BUILD_CLASS [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]
LIST_APPEND [ ] [ ] [ ] [ ] [ ] [ ] [ ] [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] [X] [X] [X] [X] [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]
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]
<109> ! [ ] [ ] [ ] [ ] [ ] [ ] [ ]
JUMP_FORWARD [X] [X] [X] [X] [X] [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [X] [X] [X] [X] [X] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [X] [X] [X] [X] [X] [+]
JUMP_ABSOLUTE [X] [X] [X] [X] [X] [X] [X] [X]
FOR_LOOP ! [X] [X] [X] [ ] [ ] [ ] [ ]
<115> ! [ ] [ ] [ ] [ ] [ ] [ ] [ ]
POP_JUMP_IF_FALSE ! [X]
POP_JUMP_IF_TRUE ! [X]
LOAD_GLOBAL [X] [X] [X] [X] [X] [X] [X] [X]
<117> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<118> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CONTINUE_LOOP [ ] [X] [X] [X] [X] [X] [X] [ ]
SETUP_LOOP [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_EXCEPT [X] [X] [X] [X] [X] [X] [X] [ ]
SETUP_FINALLY [X] [X] [X] [X] [X] [X] [X] [ ]
CONTINUE_LOOP [ ] [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] [ ]
STORE_FAST [X] [X] [X] [X] [X] [X] [X] [ ]
DELETE_FAST [X] [X] [X] [X] [X] [X] [X] [ ]
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]
SET_LINENO [X] [X] [X] [ ] [ ] [ ] [ ] [ ]
<128> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<129> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X] [X] [X] [X] [X] [ ]
CALL_FUNCTION [X] [X] [X] [X] [X] [X] [X] [ ]
MAKE_FUNCTION [X] [X] [X] [X] [X] [X] [X] [ ]
BUILD_SLICE [X] [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] [ ]
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] [X]
LOAD_CLOSURE [ ] [X] [X] [X] [X] [X] [X] [X]
LOAD_DEREF [ ] [X] [X] [X] [X] [X] [X] [X]
STORE_DEREF [ ] [X] [X] [X] [X] [X] [X] [X]
<138> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<139> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [X] [ ]
CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [ ]
CALL_FUNCTION_VAR_KW [X] [X] [X] [X] [X] [X] [X] [ ]
EXTENDED_ARG [X] [X] [X] [X] [X] [X] [X] [ ]
CALL_FUNCTION_VAR [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION_KW [X] [X] [X] [X] [X] [X] [X] [X]
CALL_FUNCTION_VAR_KW [X] [X] [X] [X] [X] [X] [X] [X]
EXTENDED_ARG ! [X] [X] [X] [X] [X] [X] [X]
SETUP_WITH ! [X]
<144> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<145> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<146> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<147> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<145> ! [ ] [ ] [ ] [ ] [ ] [ ] [ ]
EXTENDED_ARG ! [X]
SET_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ] [X]
<148> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<149> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
<150> [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
@@ -526,30 +531,30 @@ 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'
TYPE_NONE 'N' 'N' 'N' 'N' 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.' '.' '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I' 'I' 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f' 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x' 'x' 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y'
TYPE_LONG 'l' 'l' 'l' 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's' 's' 's' 's'
TYPE_INTERNED 't' 't' 't'
TYPE_STRINGREF 'R' 'R' 'R'
TYPE_TUPLE '(' '(' '(' '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{' '{' '{' '{'
TYPE_CODE 'c' 'c' 'c' 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u' 'u' 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?' '?' '?' '?' '?'
TYPE_SET '<' '<'
TYPE_FROZENSET '>' '>'
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 '>' '>' '>'
3.0 3.1 3.2

View File

@@ -99,6 +99,57 @@ const char* Py2k::OpcodeNames[256] = {
"<248>", "<249>", "<250>", "<251>", "<252>", "<253>", "<254>", "<255>",
};
const char* Py2k::OpcodeNames27[256] = {
"STOP_CODE", "POP_TOP", "ROT_TWO", "ROT_THREE", "DUP_TOP", "ROT_FOUR",
"<6>", "<7>", "<8>", "NOP",
"UNARY_POSITIVE", "UNARY_NEGATIVE", "UNARY_NOT", "UNARY_CONVERT",
"<14>", "UNARY_INVERT", "<16>", "<17>", "<18>",
"BINARY_POWER", "BINARY_MULTIPLY", "BINARY_DIVIDE", "BINARY_MODULO",
"BINARY_ADD", "BINARY_SUBTRACT", "BINARY_SUBSCR", "BINARY_FLOOR_DIVIDE",
"BINARY_TRUE_DIVIDE", "INPLACE_FLOOR_DIVIDE", "INPLACE_TRUE_DIVIDE",
"SLICE+0", "SLICE+1", "SLICE+2", "SLICE+3",
"<34>", "<35>", "<36>", "<37>", "<38>", "<39>",
"STORE_SLICE+0", "STORE_SLICE+1", "STORE_SLICE+2", "STORE_SLICE+3",
"<44>", "<45>", "<46>", "<47>", "<48>", "<49>",
"DELETE_SLICE+0", "DELETE_SLICE+1", "DELETE_SLICE+2", "DELETE_SLICE+3",
"STORE_MAP", "INPLACE_ADD", "INPLACE_SUBTRACT", "INPLACE_MULTIPLY",
"INPLACE_DIVIDE", "INPLACE_MODULO",
"STORE_SUBSCR", "DELETE_SUBSCR", "BINARY_LSHIFT", "BINARY_RSHIFT",
"BINARY_AND", "BINARY_XOR", "BINARY_OR", "INPLACE_POWER", "GET_ITER", "<69>",
"PRINT_EXPR", "PRINT_ITEM", "PRINT_NEWLINE", "PRINT_ITEM_TO",
"PRINT_NEWLINE_TO", "INPLACE_LSHIFT", "INPLACE_RSHIFT", "INPLACE_AND",
"INPLACE_XOR", "INPLACE_OR",
"BREAK_LOOP", "WITH_CLEANUP", "LOAD_LOCALS", "RETURN_VALUE",
"IMPORT_STAR", "EXEC_STMT", "YIELD_VALUE", "POP_BLOCK", "END_FINALLY",
"BUILD_CLASS",
"STORE_NAME", "DELETE_NAME", "UNPACK_SEQUENCE", "FOR_ITER", "LIST_APPEND",
"STORE_ATTR", "DELETE_ATTR", "STORE_GLOBAL", "DELETE_GLOBAL", "DUP_TOPX",
"LOAD_CONST", "LOAD_NAME", "BUILD_TUPLE", "BUILD_LIST", "BUILD_SET",
"BUILD_MAP", "LOAD_ATTR", "COMPARE_OP", "IMPORT_NAME", "IMPORT_FROM",
"JUMP_FORWARD", "JUMP_IF_FALSE_OR_POP", "JUMP_IF_TRUE_OR_POP",
"JUMP_ABSOLUTE", "POP_JUMP_IF_FALSE", "POP_JUMP_IF_TRUE",
"LOAD_GLOBAL", "<117>", "<118>", "CONTINUE_LOOP",
"SETUP_LOOP", "SETUP_EXCEPT", "SETUP_FINALLY", "<123>",
"LOAD_FAST", "STORE_FAST", "DELETE_FAST", "SET_LINENO", "<128>", "<129>",
"RAISE_VARARGS", "CALL_FUNCTION", "MAKE_FUNCTION", "BUILD_SLICE",
"MAKE_CLOSURE", "LOAD_CLOSURE", "LOAD_DEREF", "STORE_DEREF", "<138>", "<139>",
"CALL_FUNCTION_VAR", "CALL_FUNCTION_KW", "CALL_FUNCTION_VAR_KW", "SETUP_WITH",
"<144>", "EXTENDED_ARG", "SET_ADD", "MAP_ADD", "<148>", "<149>", "<150>", "<151>",
"<152>", "<153>", "<154>", "<155>", "<156>", "<157>", "<158>", "<159>",
"<160>", "<161>", "<162>", "<163>", "<164>", "<165>", "<166>", "<167>",
"<168>", "<169>", "<170>", "<171>", "<172>", "<173>", "<174>", "<175>",
"<176>", "<177>", "<178>", "<179>", "<180>", "<181>", "<182>", "<183>",
"<184>", "<185>", "<186>", "<187>", "<188>", "<189>", "<190>", "<191>",
"<192>", "<193>", "<194>", "<195>", "<196>", "<197>", "<198>", "<199>",
"<200>", "<201>", "<202>", "<203>", "<204>", "<205>", "<206>", "<207>",
"<208>", "<209>", "<210>", "<211>", "<212>", "<213>", "<214>", "<215>",
"<216>", "<217>", "<218>", "<219>", "<220>", "<221>", "<222>", "<223>",
"<224>", "<225>", "<226>", "<227>", "<228>", "<229>", "<230>", "<231>",
"<232>", "<233>", "<234>", "<235>", "<236>", "<237>", "<238>", "<239>",
"<240>", "<241>", "<242>", "<243>", "<244>", "<245>", "<246>", "<247>",
"<248>", "<249>", "<250>", "<251>", "<252>", "<253>", "<254>", "<255>",
};
const char* Py3k::OpcodeNames[256] = {
"STOP_CODE", "POP_TOP", "ROT_TWO", "ROT_THREE", "DUP_TOP", "ROT_FOUR",
"<6>", "<7>", "<8>", "NOP",
@@ -181,14 +232,23 @@ bool Py2k::IsConstArg(int opcode)
return (opcode == Py2k::LOAD_CONST);
}
bool Py2k::IsNameArg(int opcode)
bool Py2k::IsNameArg(int opcode, int minorVer)
{
return (opcode == Py2k::DELETE_ATTR) || (opcode == Py2k::DELETE_GLOBAL) ||
(opcode == Py2k::DELETE_NAME) || (opcode == Py2k::IMPORT_FROM) ||
(opcode == Py2k::IMPORT_NAME) || (opcode == Py2k::LOAD_ATTR) ||
(opcode == Py2k::LOAD_GLOBAL) || (opcode == Py2k::LOAD_NAME) ||
(opcode == Py2k::STORE_ATTR) || (opcode == Py2k::STORE_GLOBAL) ||
(opcode == Py2k::STORE_NAME);
if (minorVer >= 7) {
return (opcode == Py2k::DELETE_ATTR) || (opcode == Py2k::DELETE_GLOBAL) ||
(opcode == Py2k::DELETE_NAME) || (opcode == Py2k::IMPORT_FROM_27) ||
(opcode == Py2k::IMPORT_NAME_27) || (opcode == Py2k::LOAD_ATTR_27) ||
(opcode == Py2k::LOAD_GLOBAL) || (opcode == Py2k::LOAD_NAME) ||
(opcode == Py2k::STORE_ATTR) || (opcode == Py2k::STORE_GLOBAL) ||
(opcode == Py2k::STORE_NAME);
} else {
return (opcode == Py2k::DELETE_ATTR) || (opcode == Py2k::DELETE_GLOBAL) ||
(opcode == Py2k::DELETE_NAME) || (opcode == Py2k::IMPORT_FROM) ||
(opcode == Py2k::IMPORT_NAME) || (opcode == Py2k::LOAD_ATTR) ||
(opcode == Py2k::LOAD_GLOBAL) || (opcode == Py2k::LOAD_NAME) ||
(opcode == Py2k::STORE_ATTR) || (opcode == Py2k::STORE_GLOBAL) ||
(opcode == Py2k::STORE_NAME);
}
}
bool Py2k::IsVarNameArg(int opcode)
@@ -365,7 +425,8 @@ void bc_next(PycBuffer& source, PycModule* mod, int& opcode, int& operand, int&
bool haveExtArg = false;
pos += 1;
if ((mod->majorVer() == 2 && opcode == Py2k::EXTENDED_ARG) ||
if ((mod->majorVer() == 2 && ((mod->minorVer() < 7 && opcode == Py2k::EXTENDED_ARG) ||
(mod->minorVer() >= 7 && opcode == Py2k::EXTENDED_ARG_27))) ||
(mod->majorVer() == 3 && opcode == Py3k::EXTENDED_ARG)) {
operand = source.get16() << 16;
opcode = source.getByte();
@@ -400,8 +461,10 @@ void bc_disasm(PycRef<PycCode> code, PycModule* mod, int indent)
if (mod->majorVer() == 1) {
printf("%-24s", Py1k::OpcodeNames[opcode]);
} else if (mod->majorVer() == 2) {
} else if (mod->majorVer() == 2 && mod->minorVer() < 7) {
printf("%-24s", Py2k::OpcodeNames[opcode]);
} else if (mod->majorVer() == 2 && mod->minorVer() >= 7) {
printf("%-24s", Py2k::OpcodeNames27[opcode]);
} else if (mod->majorVer() == 3) {
printf("%-24s", Py3k::OpcodeNames[opcode]);
}
@@ -413,7 +476,7 @@ void bc_disasm(PycRef<PycCode> code, PycModule* mod, int indent)
print_const(code->getConst(operand), mod);
} else if ((mod->majorVer() == 1 && Py1k::IsNameArg(opcode)) ||
(mod->majorVer() == 1 && mod->minorVer() < 3 && Py1k::IsVarNameArg(opcode)) ||
(mod->majorVer() == 2 && Py2k::IsNameArg(opcode)) ||
(mod->majorVer() == 2 && Py2k::IsNameArg(opcode, mod->minorVer())) ||
(mod->majorVer() == 3 && Py3k::IsNameArg(opcode))) {
printf("%d: %s", operand, code->getName(operand)->value());
} else if ((mod->majorVer() == 1 && Py1k::IsVarNameArg(opcode)) ||

View File

@@ -77,12 +77,23 @@ enum Opcodes {
MAKE_CLOSURE, LOAD_CLOSURE, LOAD_DEREF, STORE_DEREF,
CALL_FUNCTION_VAR = 140, CALL_FUNCTION_KW, CALL_FUNCTION_VAR_KW,
EXTENDED_ARG,
/* Different opcodes in Python 2.7. Boo! */
LIST_APPEND_27 = 94,
BUILD_SET_27 = BUILD_MAP, BUILD_MAP_27, LOAD_ATTR_27, COMPARE_OP_27,
IMPORT_NAME_27, IMPORT_FROM_27,
JUMP_IF_FALSE_OR_POP = JUMP_IF_FALSE,
JUMP_IF_TRUE_OR_POP = JUMP_IF_TRUE,
POP_JUMP_IF_FALSE = FOR_LOOP, POP_JUMP_IF_TRUE,
SETUP_WITH = EXTENDED_ARG, EXTENDED_ARG_27 = 145,
SET_ADD = 146, MAP_ADD,
};
extern const char* OpcodeNames[256];
extern const char* OpcodeNames27[256];
bool IsConstArg(int opcode);
bool IsNameArg(int opcode);
bool IsNameArg(int opcode, int minorVer);
bool IsVarNameArg(int opcode);
bool IsCellArg(int opcode);
bool IsJumpOffsetArg(int opcode);

View File

@@ -95,6 +95,7 @@ void PycModule::setVersion(unsigned int magic)
case MAGIC_2_7:
m_maj = 2;
m_min = 7;
break;
/* 3.0 and above are always unicode */
case MAGIC_3_0+1: