Preview of Python 3.3 support

This commit is contained in:
Michael Hansen
2012-05-26 13:50:23 -07:00
parent 3fb340ccd8
commit 50657fb984
9 changed files with 311 additions and 190 deletions

View File

@@ -21,7 +21,7 @@ BYTES = \
python_10 python_11 python_13 python_14 python_15 python_16 \
python_20 python_21 python_22 python_23 python_24 \
python_25 python_26 python_27 \
python_30 python_31 python_32
python_30 python_31 python_32 python_33
BYTE_OBJS = $(BYTES:%=out/%.o)
BYTE_SRCS = $(BYTES:%=bytes/%.cpp)

View File

@@ -2,7 +2,7 @@ Python MAGIC Python MAGIC Python MAGIC
1.0 0x00999902 2.0 0x0A0DC687 3.0 0x0A0D0C3A
1.1 0x00999903 2.1 0x0A0DEB2A 3.1 0x0A0D0C4E
1.2 0x00999903 2.2 0x0A0DED2D 3.2 0x0A0D0C6C
1.3 0x0A0D2E89 2.3 0x0A0DF23B
1.3 0x0A0D2E89 2.3 0x0A0DF23B 3.3 0x0A0D0C94
1.4 0x0A0D1704 2.4 0x0A0DF26D
1.5 0x0A0D4E99 2.5 0x0A0DF2B3
1.6 0x0A0DC4FC 2.6 0x0A0DF2D1
@@ -346,170 +346,170 @@ MAP_ADD [ ] [ ] [ ] [ ] [ ] [ ] [ ]
.
3.0 3.1 3.2
STOP_CODE [X] [X] [X]
POP_TOP [X] [X] [X]
ROT_TWO [X] [X] [X]
ROT_THREE [X] [X] [X]
DUP_TOP [X] [X] [X]
3.0 3.1 3.2 3.3
STOP_CODE [X] [X] [X] [ ]
POP_TOP [X] [X] [X] [X]
ROT_TWO [X] [X] [X] [X]
ROT_THREE [X] [X] [X] [X]
DUP_TOP [X] [X] [X] [X]
ROT_FOUR ! [X] [X]
DUP_TOP_TWO ! [X]
<6> [ ] [ ] [ ]
<7> [ ] [ ] [ ]
<8> [ ] [ ] [ ]
NOP [X] [X] [X]
UNARY_POSITIVE [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X]
UNARY_NOT [X] [X] [X]
<13> [ ] [ ] [ ]
<14> [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X]
<16> [ ] [ ] [ ]
SET_ADD [X] [ ] [ ]
LIST_APPEND [X] [ ] [ ]
BINARY_POWER [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X]
<21> [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X]
BINARY_ADD [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X]
BINARY_SUBSCR [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X]
INPLACE_TRUE_DIVIDE [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]
INPLACE_ADD [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X]
<58> [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X]
STORE_SUBSCR [X] [X] [X]
DELETE_SUBSCR [X] [X] [X]
BINARY_LSHIFT [X] [X] [X]
BINARY_RSHIFT [X] [X] [X]
BINARY_AND [X] [X] [X]
BINARY_XOR [X] [X] [X]
BINARY_OR [X] [X] [X]
INPLACE_POWER [X] [X] [X]
GET_ITER [X] [X] [X]
STORE_LOCALS [X] [X] [X]
PRINT_EXPR [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X]
<72> [ ] [ ] [ ]
<73> [ ] [ ] [ ]
<74> [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X]
INPLACE_AND [X] [X] [X]
INPLACE_XOR [X] [X] [X]
INPLACE_OR [X] [X] [X]
BREAK_LOOP [X] [X] [X]
WITH_CLEANUP [X] [X] [X]
<82> [ ] [ ] [ ]
RETURN_VALUE [X] [X] [X]
IMPORT_STAR [X] [X] [X]
<85> [ ] [ ] [ ]
YIELD_VALUE [X] [X] [X]
POP_BLOCK [X] [X] [X]
END_FINALLY [X] [X] [X]
POP_EXCEPT [X] [X] [X]
STORE_NAME [X] [X] [X]
DELETE_NAME [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X]
FOR_ITER [X] [X] [X]
UNPACK_EX [X] [X] [X]
STORE_ATTR [X] [X] [X]
DELETE_ATTR [X] [X] [X]
STORE_GLOBAL [X] [X] [X]
DELETE_GLOBAL [X] [X] [X]
DUP_TOPX [X] [X] [ ]
LOAD_CONST [X] [X] [X]
LOAD_NAME [X] [X] [X]
BUILD_TUPLE [X] [X] [X]
BUILD_LIST [X] [X] [X]
BUILD_SET [X] [X] [X]
BUILD_MAP [X] [X] [X]
LOAD_ATTR [X] [X] [X]
COMPARE_OP [X] [X] [X]
IMPORT_NAME [X] [X] [X]
IMPORT_FROM [X] [X] [X]
JUMP_FORWARD [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [+]
JUMP_ABSOLUTE [X] [X] [X]
POP_JUMP_IF_FALSE [ ] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X]
LOAD_GLOBAL [X] [X] [X]
<117> [ ] [ ] [ ]
<118> [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [X]
SETUP_LOOP [X] [X] [X]
SETUP_EXCEPT [X] [X] [X]
SETUP_FINALLY [X] [X] [X]
<123> [ ] [ ] [ ]
LOAD_FAST [X] [X] [X]
STORE_FAST [X] [X] [X]
DELETE_FAST [X] [X] [X]
<127> [ ] [ ] [ ]
<128> [ ] [ ] [ ]
<129> [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X]
CALL_FUNCTION [X] [X] [X]
MAKE_FUNCTION [X] [X] [X]
BUILD_SLICE [X] [X] [X]
MAKE_CLOSURE [X] [X] [X]
LOAD_CLOSURE [X] [X] [X]
LOAD_DEREF [X] [X] [X]
STORE_DEREF [X] [X] [X]
DELETE_DEREF [ ] [ ] [X]
<139> [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [X]
CALL_FUNCTION_KW [X] [X] [X]
CALL_FUNCTION_VAR_KW [X] [X] [X]
DUP_TOP_TWO ! [X] [X]
<6> [ ] [ ] [ ] [ ]
<7> [ ] [ ] [ ] [ ]
<8> [ ] [ ] [ ] [ ]
NOP [X] [X] [X] [X]
UNARY_POSITIVE [X] [X] [X] [X]
UNARY_NEGATIVE [X] [X] [X] [X]
UNARY_NOT [X] [X] [X] [X]
<13> [ ] [ ] [ ] [ ]
<14> [ ] [ ] [ ] [ ]
UNARY_INVERT [X] [X] [X] [X]
<16> [ ] [ ] [ ] [ ]
SET_ADD [X] [ ] [ ] [ ]
LIST_APPEND [X] [ ] [ ] [ ]
BINARY_POWER [X] [X] [X] [X]
BINARY_MULTIPLY [X] [X] [X] [X]
<21> [ ] [ ] [ ] [ ]
BINARY_MODULO [X] [X] [X] [X]
BINARY_ADD [X] [X] [X] [X]
BINARY_SUBTRACT [X] [X] [X] [X]
BINARY_SUBSCR [X] [X] [X] [X]
BINARY_FLOOR_DIVIDE [X] [X] [X] [X]
BINARY_TRUE_DIVIDE [X] [X] [X] [X]
INPLACE_FLOOR_DIVIDE [X] [X] [X] [X]
INPLACE_TRUE_DIVIDE [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]
INPLACE_ADD [X] [X] [X] [X]
INPLACE_SUBTRACT [X] [X] [X] [X]
INPLACE_MULTIPLY [X] [X] [X] [X]
<58> [ ] [ ] [ ] [ ]
INPLACE_MODULO [X] [X] [X] [X]
STORE_SUBSCR [X] [X] [X] [X]
DELETE_SUBSCR [X] [X] [X] [X]
BINARY_LSHIFT [X] [X] [X] [X]
BINARY_RSHIFT [X] [X] [X] [X]
BINARY_AND [X] [X] [X] [X]
BINARY_XOR [X] [X] [X] [X]
BINARY_OR [X] [X] [X] [X]
INPLACE_POWER [X] [X] [X] [X]
GET_ITER [X] [X] [X] [X]
STORE_LOCALS [X] [X] [X] [X]
PRINT_EXPR [X] [X] [X] [X]
LOAD_BUILD_CLASS [X] [X] [X] [X]
YIELD_FROM [ ] [ ] [ ] [X]
<73> [ ] [ ] [ ] [ ]
<74> [ ] [ ] [ ] [ ]
INPLACE_LSHIFT [X] [X] [X] [X]
INPLACE_RSHIFT [X] [X] [X] [X]
INPLACE_AND [X] [X] [X] [X]
INPLACE_XOR [X] [X] [X] [X]
INPLACE_OR [X] [X] [X] [X]
BREAK_LOOP [X] [X] [X] [X]
WITH_CLEANUP [X] [X] [X] [X]
<82> [ ] [ ] [ ] [ ]
RETURN_VALUE [X] [X] [X] [X]
IMPORT_STAR [X] [X] [X] [X]
<85> [ ] [ ] [ ] [ ]
YIELD_VALUE [X] [X] [X] [X]
POP_BLOCK [X] [X] [X] [X]
END_FINALLY [X] [X] [X] [X]
POP_EXCEPT [X] [X] [X] [X]
STORE_NAME [X] [X] [X] [X]
DELETE_NAME [X] [X] [X] [X]
UNPACK_SEQUENCE [X] [X] [X] [X]
FOR_ITER [X] [X] [X] [X]
UNPACK_EX [X] [X] [X] [X]
STORE_ATTR [X] [X] [X] [X]
DELETE_ATTR [X] [X] [X] [X]
STORE_GLOBAL [X] [X] [X] [X]
DELETE_GLOBAL [X] [X] [X] [X]
DUP_TOPX [X] [X] [ ] [ ]
LOAD_CONST [X] [X] [X] [X]
LOAD_NAME [X] [X] [X] [X]
BUILD_TUPLE [X] [X] [X] [X]
BUILD_LIST [X] [X] [X] [X]
BUILD_SET [X] [X] [X] [X]
BUILD_MAP [X] [X] [X] [X]
LOAD_ATTR [X] [X] [X] [X]
COMPARE_OP [X] [X] [X] [X]
IMPORT_NAME [X] [X] [X] [X]
IMPORT_FROM [X] [X] [X] [X]
JUMP_FORWARD [X] [X] [X] [X]
JUMP_IF_FALSE (_OR_POP) [X] [X] [+] [+]
JUMP_IF_TRUE (_OR_POP) [X] [X] [+] [+]
JUMP_ABSOLUTE [X] [X] [X] [X]
POP_JUMP_IF_FALSE [ ] [X] [X] [X]
POP_JUMP_IF_TRUE [ ] [X] [X] [X]
LOAD_GLOBAL [X] [X] [X] [X]
<117> [ ] [ ] [ ] [ ]
<118> [ ] [ ] [ ] [ ]
CONTINUE_LOOP [X] [X] [X] [X]
SETUP_LOOP [X] [X] [X] [X]
SETUP_EXCEPT [X] [X] [X] [X]
SETUP_FINALLY [X] [X] [X] [X]
<123> [ ] [ ] [ ] [ ]
LOAD_FAST [X] [X] [X] [X]
STORE_FAST [X] [X] [X] [X]
DELETE_FAST [X] [X] [X] [X]
<127> [ ] [ ] [ ] [ ]
<128> [ ] [ ] [ ] [ ]
<129> [ ] [ ] [ ] [ ]
RAISE_VARARGS [X] [X] [X] [X]
CALL_FUNCTION [X] [X] [X] [X]
MAKE_FUNCTION [X] [X] [X] [X]
BUILD_SLICE [X] [X] [X] [X]
MAKE_CLOSURE [X] [X] [X] [X]
LOAD_CLOSURE [X] [X] [X] [X]
LOAD_DEREF [X] [X] [X] [X]
STORE_DEREF [X] [X] [X] [X]
DELETE_DEREF [ ] [ ] [X] [X]
<139> [ ] [ ] [ ] [ ]
CALL_FUNCTION_VAR [X] [X] [X] [X]
CALL_FUNCTION_KW [X] [X] [X] [X]
CALL_FUNCTION_VAR_KW [X] [X] [X] [X]
EXTENDED_ARG ! [X] [X]
SETUP_WITH ! [X]
SETUP_WITH ! [X] [X]
<144> ! [ ] [ ]
EXTENDED_ARG ! [X]
LIST_APPEND [ ] [X] [X]
SET_ADD [ ] [X] [X]
MAP_ADD [ ] [X] [X]
<148> [ ] [ ] [ ]
<149> [ ] [ ] [ ]
<150> [ ] [ ] [ ]
<151> [ ] [ ] [ ]
<152> [ ] [ ] [ ]
<153> [ ] [ ] [ ]
<154> [ ] [ ] [ ]
<155> [ ] [ ] [ ]
<156> [ ] [ ] [ ]
<157> [ ] [ ] [ ]
<158> [ ] [ ] [ ]
<159> [ ] [ ] [ ]
EXTENDED_ARG ! [X] [X]
LIST_APPEND [ ] [X] [X] [X]
SET_ADD [ ] [X] [X] [X]
MAP_ADD [ ] [X] [X] [X]
<148> [ ] [ ] [ ] [ ]
<149> [ ] [ ] [ ] [ ]
<150> [ ] [ ] [ ] [ ]
<151> [ ] [ ] [ ] [ ]
<152> [ ] [ ] [ ] [ ]
<153> [ ] [ ] [ ] [ ]
<154> [ ] [ ] [ ] [ ]
<155> [ ] [ ] [ ] [ ]
<156> [ ] [ ] [ ] [ ]
<157> [ ] [ ] [ ] [ ]
<158> [ ] [ ] [ ] [ ]
<159> [ ] [ ] [ ] [ ]
.
.
.
@@ -560,29 +560,29 @@ TYPE_SET '<' '<'
TYPE_FROZENSET '>' '>' '>'
3.0 3.1 3.2
TYPE_NULL '0' '0' '0'
TYPE_NONE 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.'
TYPE_INT 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y' 'y'
TYPE_LONG 'l' 'l' 'l'
TYPE_STRING 's' 's' 's'
TYPE_TUPLE '(' '(' '('
TYPE_LIST '[' '[' '['
TYPE_DICT '{' '{' '{'
TYPE_CODE 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?'
TYPE_SET '<' '<' '<'
TYPE_FROZENSET '>' '>' '>'
3.0 3.1 3.2 3.3
TYPE_NULL '0' '0' '0' '0'
TYPE_NONE 'N' 'N' 'N' 'N'
TYPE_FALSE 'F' 'F' 'F' 'F'
TYPE_TRUE 'T' 'T' 'T' 'T'
TYPE_STOPITER 'S' 'S' 'S' 'S'
TYPE_ELLIPSIS '.' '.' '.' '.'
TYPE_INT 'i' 'i' 'i' 'i'
TYPE_INT64 'I' 'I' 'I' 'I'
TYPE_FLOAT 'f' 'f' 'f' 'f'
TYPE_BINARY_FLOAT 'g' 'g' 'g' 'g'
TYPE_COMPLEX 'x' 'x' 'x' 'x'
TYPE_BINARY_COMPLEX 'y' 'y' 'y' 'y'
TYPE_LONG 'l' 'l' 'l' 'l'
TYPE_STRING 's' 's' 's' 's'
TYPE_TUPLE '(' '(' '(' '('
TYPE_LIST '[' '[' '[' '['
TYPE_DICT '{' '{' '{' '{'
TYPE_CODE 'c' 'c' 'c' 'c'
TYPE_UNICODE 'u' 'u' 'u' 'u'
TYPE_UNKNOWN '?' '?' '?' '?'
TYPE_SET '<' '<' '<' '<'
TYPE_FROZENSET '>' '>' '>' '>'
[TYPE_CODE] 1.0 1.3 1.5 2.1 2.3 3.0

View File

@@ -26,6 +26,7 @@ DECLARE_PYTHON(2, 7)
DECLARE_PYTHON(3, 0)
DECLARE_PYTHON(3, 1)
DECLARE_PYTHON(3, 2)
DECLARE_PYTHON(3, 3)
const char* Pyc::OpcodeName(int opcode)
{
@@ -48,7 +49,7 @@ const char* Pyc::OpcodeName(int opcode)
"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",
"STORE_LOCALS", "POP_EXCEPT", "SET_ADD", "YIELD_FROM",
"STORE_NAME", "DELETE_NAME", "UNPACK_TUPLE", "UNPACK_LIST", "UNPACK_ARG",
"STORE_ATTR", "DELETE_ATTR", "STORE_GLOBAL", "DELETE_GLOBAL",
@@ -108,6 +109,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
case 0: return python_30_map(opcode);
case 1: return python_31_map(opcode);
case 2: return python_32_map(opcode);
case 3: return python_33_map(opcode);
}
break;
}

View File

@@ -23,7 +23,7 @@ enum Opcode {
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,
POP_EXCEPT, SET_ADD, YIELD_FROM,
/* Has parameter word */
PYC_HAVE_ARG,

View File

@@ -17,7 +17,7 @@
maplist = [ 10, 11, 13, 14, 15, 16,
20, 21, 22, 23, 24, 25, 26, 27,
30, 31, 32 ]
30, 31, 32, 33 ]
for mapver in maplist:
infile = open('python_%d.map' % mapver, 'rt')

101
bytes/python_33.map Normal file
View File

@@ -0,0 +1,101 @@
1 POP_TOP
2 ROT_TWO
3 ROT_THREE
4 DUP_TOP
5 DUP_TOP_TWO
9 NOP
10 UNARY_POSITIVE
11 UNARY_NEGATIVE
12 UNARY_NOT
15 UNARY_INVERT
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
54 STORE_MAP
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 STORE_LOCALS
70 PRINT_EXPR
71 LOAD_BUILD_CLASS
72 YIELD_FROM
75 INPLACE_LSHIFT
76 INPLACE_RSHIFT
77 INPLACE_AND
78 INPLACE_XOR
79 INPLACE_OR
80 BREAK_LOOP
81 WITH_CLEANUP
83 RETURN_VALUE
84 IMPORT_STAR
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
119 CONTINUE_LOOP_A
120 SETUP_LOOP_A
121 SETUP_EXCEPT_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
134 MAKE_CLOSURE_A
135 LOAD_CLOSURE_A
136 LOAD_DEREF_A
137 STORE_DEREF_A
138 DELETE_DEREF_A
140 CALL_FUNCTION_VAR_A
141 CALL_FUNCTION_KW_A
142 CALL_FUNCTION_VAR_KW_A
143 SETUP_WITH_A
144 EXTENDED_ARG_A
145 LIST_APPEND_A
146 SET_ADD_A
147 MAP_ADD_A

View File

@@ -116,6 +116,12 @@ void PycModule::setVersion(unsigned int magic)
m_unicode = true;
break;
case MAGIC_3_3:
m_maj = 3;
m_min = 3;
m_unicode = true;
break;
/* Bad Magic detected */
default:
m_maj = -1;
@@ -137,6 +143,9 @@ void PycModule::loadFromFile(const char* filename)
}
in.get32(); // Timestamp -- who cares?
if (verCompare(3, 3) >= 0)
in.get32(); // Size parameter added in Python 3.3
m_code = LoadObject(&in, this).cast<PycCode>();
}

View File

@@ -24,6 +24,7 @@ enum PycMagic {
MAGIC_3_0 = 0x0A0D0C3A,
MAGIC_3_1 = 0x0A0D0C4E,
MAGIC_3_2 = 0x0A0D0C6C,
MAGIC_3_3 = 0x0A0D0C94,
};
#define PYC_VERSION(maj, min) MAGIC_##maj##_##min
@@ -37,6 +38,14 @@ public:
unsigned int majorVer() const { return m_maj; }
unsigned int minorVer() const { return m_min; }
int verCompare(int maj, int min) const
{
if (m_maj == maj)
return m_min - min;
return m_maj - maj;
}
bool isUnicode() const { return m_unicode; }
PycRef<PycCode> code() const { return m_code; }

View File

@@ -64,7 +64,7 @@ PycRef<PycObject> CreateObject(int type)
return new PycSet(PycObject::TYPE_FROZENSET);
default:
fprintf(stderr, "CreateObject: Got unsupported type 0x%X\n", type);
return (PycObject*)0;
return Pyc_NULL;
}
}