Issue #26110: Add LOAD_METHOD/CALL_METHOD opcodes.

Special thanks to INADA Naoki for pushing the patch through
the last mile, Serhiy Storchaka for reviewing the code, and to
Victor Stinner for suggesting the idea (originally implemented
in the PyPy project).
This commit is contained in:
Yury Selivanov 2016-12-13 19:03:51 -05:00
parent e6bb53bf61
commit f2392133eb
13 changed files with 747 additions and 483 deletions

View file

@ -30,6 +30,9 @@
#define CHECKEXC 1 /* Double-check exception checking */
#endif
/* Private API for the LOAD_METHOD opcode. */
extern int _PyObject_GetMethod(PyObject *, PyObject *, PyObject **);
typedef PyObject *(*callproc)(PyObject *, PyObject *, PyObject *);
/* Forward declarations */
@ -3225,6 +3228,100 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
DISPATCH();
}
TARGET(LOAD_METHOD) {
/* Designed to work in tamdem with CALL_METHOD. */
PyObject *name = GETITEM(names, oparg);
PyObject *obj = TOP();
PyObject *meth = NULL;
int meth_found = _PyObject_GetMethod(obj, name, &meth);
SET_TOP(meth); /* Replace `obj` on top; OK if NULL. */
if (meth == NULL) {
/* Most likely attribute wasn't found. */
Py_DECREF(obj);
goto error;
}
if (meth_found) {
/* The method object is now on top of the stack.
Push `obj` back to the stack, so that the stack
layout would be:
method | obj | arg1 | ... | argN
*/
PUSH(obj);
}
else {
/* Not a method (but a regular attr, or something
was returned by a descriptor protocol). Push
NULL to the top of the stack, to signal
CALL_METHOD that it's not a method call.
*/
Py_DECREF(obj);
PUSH(NULL);
}
DISPATCH();
}
TARGET(CALL_METHOD) {
/* Designed to work in tamdem with LOAD_METHOD. */
PyObject **sp, *res, *obj;
sp = stack_pointer;
obj = PEEK(oparg + 1);
if (obj == NULL) {
/* `obj` is NULL when LOAD_METHOD thinks that it's not
a method call. Swap the NULL and callable.
Stack layout:
... | callable | NULL | arg1 | ... | argN
^- TOP()
^- (-oparg)
^- (-oparg-1)
^- (-oparg-2)
after the next line it will be:
... | callable | callable | arg1 | ... | argN
^- TOP()
^- (-oparg)
^- (-oparg-1)
^- (-oparg-2)
Right side `callable` will be POPed by call_funtion.
Left side `callable` will be POPed manually later
(one of "callbale" refs on the stack is borrowed.)
*/
SET_VALUE(oparg + 1, PEEK(oparg + 2));
res = call_function(&sp, oparg, NULL);
stack_pointer = sp;
(void)POP(); /* POP the left side callable. */
}
else {
/* This is a method call. Stack layout:
... | method | obj | arg1 | ... | argN
^- TOP()
^- (-oparg)
^- (-oparg-1)
`obj` and `method` will be POPed by call_function.
We'll be passing `oparg + 1` to call_function, to
make it accept the `obj` as a first argument.
*/
res = call_function(&sp, oparg + 1, NULL);
stack_pointer = sp;
}
PUSH(res);
if (res == NULL)
goto error;
DISPATCH();
}
PREDICTED(CALL_FUNCTION);
TARGET(CALL_FUNCTION) {
PyObject **sp, *res;

View file

@ -1040,6 +1040,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return -oparg;
case CALL_FUNCTION:
return -oparg;
case CALL_METHOD:
return -oparg-1;
case CALL_FUNCTION_KW:
return -oparg-1;
case CALL_FUNCTION_EX:
@ -1078,6 +1080,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
/* If there's a fmt_spec on the stack, we go from 2->1,
else 1->1. */
return (oparg & FVS_MASK) == FVS_HAVE_SPEC ? -1 : 0;
case LOAD_METHOD:
return 1;
default:
return PY_INVALID_STACK_EFFECT;
}
@ -3399,9 +3403,42 @@ compiler_compare(struct compiler *c, expr_ty e)
return 1;
}
static int
maybe_optimize_method_call(struct compiler *c, expr_ty e)
{
Py_ssize_t argsl, i;
expr_ty meth = e->v.Call.func;
asdl_seq *args = e->v.Call.args;
/* Check that the call node is an attribute access, and that
the call doesn't have keyword parameters. */
if (meth->kind != Attribute_kind || meth->v.Attribute.ctx != Load ||
asdl_seq_LEN(e->v.Call.keywords))
return -1;
/* Check that there are no *varargs types of arguments. */
argsl = asdl_seq_LEN(args);
for (i = 0; i < argsl; i++) {
expr_ty elt = asdl_seq_GET(args, i);
if (elt->kind == Starred_kind) {
return -1;
}
}
/* Alright, we can optimize the code. */
VISIT(c, expr, meth->v.Attribute.value);
ADDOP_NAME(c, LOAD_METHOD, meth->v.Attribute.attr, names);
VISIT_SEQ(c, expr, e->v.Call.args);
ADDOP_I(c, CALL_METHOD, asdl_seq_LEN(e->v.Call.args));
return 1;
}
static int
compiler_call(struct compiler *c, expr_ty e)
{
if (maybe_optimize_method_call(c, e) > 0)
return 1;
VISIT(c, expr, e->v.Call.func);
return compiler_call_helper(c, 0,
e->v.Call.args,

View file

@ -56,7 +56,7 @@ const unsigned char _Py_M__importlib[] = {
67,0,0,0,115,60,0,0,0,120,40,100,6,68,0,93,
32,125,2,116,0,124,1,124,2,131,2,114,6,116,1,124,
0,124,2,116,2,124,1,124,2,131,2,131,3,1,0,113,
6,87,0,124,0,106,3,106,4,124,1,106,3,131,1,1,
6,87,0,124,0,106,3,160,4,124,1,106,3,161,1,1,
0,100,5,83,0,41,7,122,47,83,105,109,112,108,101,32,
115,117,98,115,116,105,116,117,116,101,32,102,111,114,32,102,
117,110,99,116,111,111,108,115,46,117,112,100,97,116,101,95,
@ -105,8 +105,8 @@ const unsigned char _Py_M__importlib[] = {
32,32,116,97,107,101,32,108,111,99,107,115,32,66,32,116,
104,101,110,32,65,41,46,10,32,32,32,32,99,2,0,0,
0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,
0,115,48,0,0,0,116,0,106,1,131,0,124,0,95,2,
116,0,106,1,131,0,124,0,95,3,124,1,124,0,95,4,
0,115,48,0,0,0,116,0,160,1,161,0,124,0,95,2,
116,0,160,1,161,0,124,0,95,3,124,1,124,0,95,4,
100,0,124,0,95,5,100,1,124,0,95,6,100,1,124,0,
95,7,100,0,83,0,41,2,78,233,0,0,0,0,41,8,
218,7,95,116,104,114,101,97,100,90,13,97,108,108,111,99,
@ -119,9 +119,9 @@ const unsigned char _Py_M__importlib[] = {
0,0,1,10,1,10,1,6,1,6,1,6,1,122,20,95,
77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105,
116,95,95,99,1,0,0,0,0,0,0,0,4,0,0,0,
2,0,0,0,67,0,0,0,115,64,0,0,0,116,0,106,
1,131,0,125,1,124,0,106,2,125,2,120,44,116,3,106,
4,124,2,131,1,125,3,124,3,100,0,107,8,114,38,100,
3,0,0,0,67,0,0,0,115,64,0,0,0,116,0,160,
1,161,0,125,1,124,0,106,2,125,2,120,44,116,3,160,
4,124,2,161,1,125,3,124,3,100,0,107,8,114,38,100,
1,83,0,124,3,106,2,125,2,124,2,124,1,107,2,114,
16,100,2,83,0,113,16,87,0,100,0,83,0,41,3,78,
70,84,41,5,114,20,0,0,0,218,9,103,101,116,95,105,
@ -134,16 +134,16 @@ const unsigned char _Py_M__importlib[] = {
1,8,1,4,1,6,1,8,1,122,24,95,77,111,100,117,
108,101,76,111,99,107,46,104,97,115,95,100,101,97,100,108,
111,99,107,99,1,0,0,0,0,0,0,0,2,0,0,0,
16,0,0,0,67,0,0,0,115,168,0,0,0,116,0,106,
1,131,0,125,1,124,0,116,2,124,1,60,0,122,138,120,
16,0,0,0,67,0,0,0,115,168,0,0,0,116,0,160,
1,161,0,125,1,124,0,116,2,124,1,60,0,122,138,120,
132,124,0,106,3,143,96,1,0,124,0,106,4,100,1,107,
2,115,48,124,0,106,5,124,1,107,2,114,72,124,1,124,
0,95,5,124,0,4,0,106,4,100,2,55,0,2,0,95,
4,100,3,83,0,124,0,106,6,131,0,114,92,116,7,100,
4,124,0,22,0,131,1,130,1,124,0,106,8,106,9,100,
5,131,1,114,118,124,0,4,0,106,10,100,2,55,0,2,
4,100,3,83,0,124,0,160,6,161,0,114,92,116,7,100,
4,124,0,22,0,131,1,130,1,124,0,106,8,160,9,100,
5,161,1,114,118,124,0,4,0,106,10,100,2,55,0,2,
0,95,10,87,0,100,6,81,0,82,0,88,0,124,0,106,
8,106,9,131,0,1,0,124,0,106,8,106,11,131,0,1,
8,160,9,161,0,1,0,124,0,106,8,160,11,161,0,1,
0,113,20,87,0,87,0,100,6,116,2,124,1,61,0,88,
0,100,6,83,0,41,7,122,185,10,32,32,32,32,32,32,
32,32,65,99,113,117,105,114,101,32,116,104,101,32,109,111,
@ -171,13 +171,13 @@ const unsigned char _Py_M__importlib[] = {
1,24,2,10,1,18,2,122,19,95,77,111,100,117,108,101,
76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,
0,0,0,0,0,2,0,0,0,10,0,0,0,67,0,0,
0,115,122,0,0,0,116,0,106,1,131,0,125,1,124,0,
0,115,122,0,0,0,116,0,160,1,161,0,125,1,124,0,
106,2,143,98,1,0,124,0,106,3,124,1,107,3,114,34,
116,4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,
115,48,116,6,130,1,124,0,4,0,106,5,100,3,56,0,
2,0,95,5,124,0,106,5,100,2,107,2,114,108,100,0,
124,0,95,3,124,0,106,7,114,108,124,0,4,0,106,7,
100,3,56,0,2,0,95,7,124,0,106,8,106,9,131,0,
100,3,56,0,2,0,95,7,124,0,106,8,160,9,161,0,
1,0,87,0,100,0,81,0,82,0,88,0,100,0,83,0,
41,4,78,122,31,99,97,110,110,111,116,32,114,101,108,101,
97,115,101,32,117,110,45,97,99,113,117,105,114,101,100,32,
@ -192,9 +192,9 @@ const unsigned char _Py_M__importlib[] = {
1,8,1,8,1,10,1,8,1,14,1,14,1,10,1,6,
1,6,1,14,1,122,19,95,77,111,100,117,108,101,76,111,
99,107,46,114,101,108,101,97,115,101,99,1,0,0,0,0,
0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,
18,0,0,0,100,1,106,0,124,0,106,1,116,2,124,0,
131,1,131,2,83,0,41,2,78,122,23,95,77,111,100,117,
0,0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,
18,0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,
131,1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,
108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,
123,125,41,3,218,6,102,111,114,109,97,116,114,15,0,0,
0,218,2,105,100,41,1,114,26,0,0,0,114,10,0,0,
@ -247,9 +247,9 @@ const unsigned char _Py_M__importlib[] = {
0,114,35,0,0,0,131,0,0,0,115,6,0,0,0,0,
1,10,1,8,1,122,24,95,68,117,109,109,121,77,111,100,
117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99,
1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,
67,0,0,0,115,18,0,0,0,100,1,106,0,124,0,106,
1,116,2,124,0,131,1,131,2,83,0,41,2,78,122,28,
1,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,
67,0,0,0,115,18,0,0,0,100,1,160,0,124,0,106,
1,116,2,124,0,131,1,161,2,83,0,41,2,78,122,28,
95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,
40,123,33,114,125,41,32,97,116,32,123,125,41,3,114,38,
0,0,0,114,15,0,0,0,114,39,0,0,0,41,1,114,
@ -277,10 +277,10 @@ const unsigned char _Py_M__importlib[] = {
4,0,0,0,0,1,6,1,122,27,95,77,111,100,117,108,
101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,105,
110,105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,
0,0,10,0,0,0,67,0,0,0,115,42,0,0,0,122,
0,0,11,0,0,0,67,0,0,0,115,42,0,0,0,122,
16,116,0,124,0,106,1,131,1,124,0,95,2,87,0,100,
0,116,3,106,4,131,0,1,0,88,0,124,0,106,2,106,
5,131,0,1,0,100,0,83,0,41,1,78,41,6,218,16,
0,116,3,160,4,161,0,1,0,88,0,124,0,106,2,160,
5,161,0,1,0,100,0,83,0,41,1,78,41,6,218,16,
95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,
114,43,0,0,0,114,44,0,0,0,218,4,95,105,109,112,
218,12,114,101,108,101,97,115,101,95,108,111,99,107,114,34,
@ -290,8 +290,8 @@ const unsigned char _Py_M__importlib[] = {
1,16,2,10,1,122,28,95,77,111,100,117,108,101,76,111,
99,107,77,97,110,97,103,101,114,46,95,95,101,110,116,101,
114,95,95,99,1,0,0,0,0,0,0,0,3,0,0,0,
1,0,0,0,79,0,0,0,115,14,0,0,0,124,0,106,
0,106,1,131,0,1,0,100,0,83,0,41,1,78,41,2,
2,0,0,0,79,0,0,0,115,14,0,0,0,124,0,106,
0,160,1,161,0,1,0,100,0,83,0,41,1,78,41,2,
114,44,0,0,0,114,35,0,0,0,41,3,114,26,0,0,
0,218,4,97,114,103,115,90,6,107,119,97,114,103,115,114,
10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8,
@ -303,14 +303,14 @@ const unsigned char _Py_M__importlib[] = {
0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,
114,11,0,0,0,114,42,0,0,0,140,0,0,0,115,6,
0,0,0,8,2,8,4,8,7,114,42,0,0,0,99,1,
0,0,0,0,0,0,0,3,0,0,0,11,0,0,0,3,
0,0,0,0,0,0,0,3,0,0,0,12,0,0,0,3,
0,0,0,115,106,0,0,0,100,1,125,1,121,14,116,0,
136,0,25,0,131,0,125,1,87,0,110,20,4,0,116,1,
107,10,114,38,1,0,1,0,1,0,89,0,110,2,88,0,
124,1,100,1,107,8,114,102,116,2,100,1,107,8,114,66,
116,3,136,0,131,1,125,1,110,8,116,4,136,0,131,1,
125,1,135,0,102,1,100,2,100,3,132,8,125,2,116,5,
106,6,124,1,124,2,131,2,116,0,136,0,60,0,124,1,
160,6,124,1,124,2,161,2,116,0,136,0,60,0,124,1,
83,0,41,4,122,109,71,101,116,32,111,114,32,99,114,101,
97,116,101,32,116,104,101,32,109,111,100,117,108,101,32,108,
111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,
@ -335,10 +335,10 @@ const unsigned char _Py_M__importlib[] = {
4,1,2,1,14,1,14,1,6,1,8,1,8,1,10,2,
8,1,12,2,16,1,114,45,0,0,0,99,1,0,0,0,
0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,0,
115,62,0,0,0,116,0,124,0,131,1,125,1,116,1,106,
2,131,0,1,0,121,12,124,1,106,3,131,0,1,0,87,
115,62,0,0,0,116,0,124,0,131,1,125,1,116,1,160,
2,161,0,1,0,121,12,124,1,160,3,161,0,1,0,87,
0,110,20,4,0,116,4,107,10,114,48,1,0,1,0,1,
0,89,0,110,10,88,0,124,1,106,5,131,0,1,0,100,
0,89,0,110,10,88,0,124,1,160,5,161,0,1,0,100,
1,83,0,41,2,97,21,1,0,0,82,101,108,101,97,115,
101,32,116,104,101,32,103,108,111,98,97,108,32,105,109,112,
111,114,116,32,108,111,99,107,44,32,97,110,100,32,97,99,
@ -393,8 +393,8 @@ const unsigned char _Py_M__importlib[] = {
58,0,0,0,114,33,0,0,0,41,1,218,9,118,101,114,
98,111,115,105,116,121,99,1,0,0,0,1,0,0,0,3,
0,0,0,5,0,0,0,71,0,0,0,115,54,0,0,0,
116,0,106,1,106,2,124,1,107,5,114,50,124,0,106,3,
100,6,131,1,115,30,100,3,124,0,23,0,125,0,116,4,
116,0,106,1,106,2,124,1,107,5,114,50,124,0,160,3,
100,6,161,1,115,30,100,3,124,0,23,0,125,0,116,4,
124,0,106,5,124,2,142,0,116,0,106,6,100,4,141,2,
1,0,100,5,83,0,41,7,122,61,80,114,105,110,116,32,
116,104,101,32,109,101,115,115,97,103,101,32,116,111,32,115,
@ -420,7 +420,7 @@ const unsigned char _Py_M__importlib[] = {
117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0,
0,2,0,0,0,4,0,0,0,19,0,0,0,115,38,0,
0,0,124,1,116,0,106,1,107,7,114,28,116,2,100,1,
106,3,124,1,131,1,124,1,100,2,141,2,130,1,136,0,
160,3,124,1,161,1,124,1,100,2,141,2,130,1,136,0,
124,0,124,1,131,2,83,0,41,3,78,122,29,123,33,114,
125,32,105,115,32,110,111,116,32,97,32,98,117,105,108,116,
45,105,110,32,109,111,100,117,108,101,41,1,114,15,0,0,
@ -448,8 +448,8 @@ const unsigned char _Py_M__importlib[] = {
97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,102,
114,111,122,101,110,46,99,2,0,0,0,0,0,0,0,2,
0,0,0,4,0,0,0,19,0,0,0,115,38,0,0,0,
116,0,106,1,124,1,131,1,115,28,116,2,100,1,106,3,
124,1,131,1,124,1,100,2,141,2,130,1,136,0,124,0,
116,0,160,1,124,1,161,1,115,28,116,2,100,1,160,3,
124,1,161,1,124,1,100,2,141,2,130,1,136,0,124,0,
124,1,131,2,83,0,41,3,78,122,27,123,33,114,125,32,
105,115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,
109,111,100,117,108,101,41,1,114,15,0,0,0,41,4,114,
@ -489,10 +489,10 @@ const unsigned char _Py_M__importlib[] = {
114,11,0,0,0,218,17,95,108,111,97,100,95,109,111,100,
117,108,101,95,115,104,105,109,239,0,0,0,115,12,0,0,
0,0,6,10,1,10,1,10,1,10,1,10,2,114,84,0,
0,0,99,1,0,0,0,0,0,0,0,5,0,0,0,35,
0,0,99,1,0,0,0,0,0,0,0,5,0,0,0,36,
0,0,0,67,0,0,0,115,216,0,0,0,116,0,124,0,
100,1,100,0,131,3,125,1,116,1,124,1,100,2,131,2,
114,54,121,10,124,1,106,2,124,0,131,1,83,0,4,0,
114,54,121,10,124,1,160,2,124,0,161,1,83,0,4,0,
116,3,107,10,114,52,1,0,1,0,1,0,89,0,110,2,
88,0,121,10,124,0,106,4,125,2,87,0,110,20,4,0,
116,5,107,10,114,84,1,0,1,0,1,0,89,0,110,18,
@ -501,9 +501,9 @@ const unsigned char _Py_M__importlib[] = {
116,5,107,10,114,136,1,0,1,0,1,0,100,3,125,3,
89,0,110,2,88,0,121,10,124,0,106,8,125,4,87,0,
110,50,4,0,116,5,107,10,114,198,1,0,1,0,1,0,
124,1,100,0,107,8,114,182,100,4,106,9,124,3,131,1,
83,0,100,5,106,9,124,3,124,1,131,2,83,0,89,0,
110,14,88,0,100,6,106,9,124,3,124,4,131,2,83,0,
124,1,100,0,107,8,114,182,100,4,160,9,124,3,161,1,
83,0,100,5,160,9,124,3,124,1,161,2,83,0,89,0,
110,14,88,0,100,6,160,9,124,3,124,4,161,2,83,0,
100,0,83,0,41,7,78,218,10,95,95,108,111,97,100,101,
114,95,95,218,11,109,111,100,117,108,101,95,114,101,112,114,
250,1,63,122,13,60,109,111,100,117,108,101,32,123,33,114,
@ -702,14 +702,14 @@ const unsigned char _Py_M__importlib[] = {
27,0,0,0,99,1,0,0,115,14,0,0,0,0,2,6,
1,6,1,6,1,6,1,14,3,6,1,122,19,77,111,100,
117,108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,
99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
0,67,0,0,0,115,102,0,0,0,100,1,106,0,124,0,
106,1,131,1,100,2,106,0,124,0,106,2,131,1,103,2,
125,1,124,0,106,3,100,0,107,9,114,52,124,1,106,4,
100,3,106,0,124,0,106,3,131,1,131,1,1,0,124,0,
106,5,100,0,107,9,114,80,124,1,106,4,100,4,106,0,
124,0,106,5,131,1,131,1,1,0,100,5,106,0,124,0,
106,6,106,7,100,6,106,8,124,1,131,1,131,2,83,0,
99,1,0,0,0,0,0,0,0,2,0,0,0,6,0,0,
0,67,0,0,0,115,102,0,0,0,100,1,160,0,124,0,
106,1,161,1,100,2,160,0,124,0,106,2,161,1,103,2,
125,1,124,0,106,3,100,0,107,9,114,52,124,1,160,4,
100,3,160,0,124,0,106,3,161,1,161,1,1,0,124,0,
106,5,100,0,107,9,114,80,124,1,160,4,100,4,160,0,
124,0,106,5,161,1,161,1,1,0,100,5,160,0,124,0,
106,6,106,7,100,6,160,8,124,1,161,1,161,2,83,0,
41,7,78,122,9,110,97,109,101,61,123,33,114,125,122,11,
108,111,97,100,101,114,61,123,33,114,125,122,11,111,114,105,
103,105,110,61,123,33,114,125,122,29,115,117,98,109,111,100,
@ -741,11 +741,11 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,0,1,6,1,2,1,12,1,12,1,12,1,10,
1,12,1,12,1,14,1,122,17,77,111,100,117,108,101,83,
112,101,99,46,95,95,101,113,95,95,99,1,0,0,0,0,
0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,
0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,
58,0,0,0,124,0,106,0,100,0,107,8,114,52,124,0,
106,1,100,0,107,9,114,52,124,0,106,2,114,52,116,3,
100,0,107,8,114,38,116,4,130,1,116,3,106,5,124,0,
106,1,131,1,124,0,95,0,124,0,106,0,83,0,41,1,
100,0,107,8,114,38,116,4,130,1,116,3,160,5,124,0,
106,1,161,1,124,0,95,0,124,0,106,0,83,0,41,1,
78,41,6,114,108,0,0,0,114,103,0,0,0,114,107,0,
0,0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,
120,116,101,114,110,97,108,218,19,78,111,116,73,109,112,108,
@ -761,9 +761,9 @@ const unsigned char _Py_M__importlib[] = {
0,114,112,0,0,0,114,10,0,0,0,114,10,0,0,0,
114,11,0,0,0,114,112,0,0,0,142,1,0,0,115,2,
0,0,0,0,2,99,1,0,0,0,0,0,0,0,1,0,
0,0,2,0,0,0,67,0,0,0,115,36,0,0,0,124,
0,106,0,100,1,107,8,114,26,124,0,106,1,106,2,100,
2,131,1,100,3,25,0,83,0,124,0,106,1,83,0,100,
0,0,3,0,0,0,67,0,0,0,115,36,0,0,0,124,
0,106,0,100,1,107,8,114,26,124,0,106,1,160,2,100,
2,161,1,100,3,25,0,83,0,124,0,106,1,83,0,100,
1,83,0,41,4,122,32,84,104,101,32,110,97,109,101,32,
111,102,32,116,104,101,32,109,111,100,117,108,101,39,115,32,
112,97,114,101,110,116,46,78,218,1,46,114,19,0,0,0,
@ -801,8 +801,8 @@ const unsigned char _Py_M__importlib[] = {
48,124,4,124,0,124,1,100,3,141,2,83,0,124,3,114,
56,103,0,110,2,100,2,125,5,124,4,124,0,124,1,124,
5,100,4,141,3,83,0,124,3,100,2,107,8,114,138,116,
0,124,1,100,5,131,2,114,134,121,14,124,1,106,4,124,
0,131,1,125,3,87,0,113,138,4,0,116,5,107,10,114,
0,124,1,100,5,131,2,114,134,121,14,124,1,160,4,124,
0,161,1,125,3,87,0,113,138,4,0,116,5,107,10,114,
130,1,0,1,0,1,0,100,2,125,3,89,0,113,138,88,
0,110,4,100,6,125,3,116,6,124,0,124,1,124,2,124,
3,100,7,141,4,83,0,41,8,122,53,82,101,116,117,114,
@ -869,7 +869,7 @@ const unsigned char _Py_M__importlib[] = {
124,1,100,2,100,0,131,3,100,0,107,8,114,166,124,0,
106,4,125,3,124,3,100,0,107,8,114,134,124,0,106,5,
100,0,107,9,114,134,116,6,100,0,107,8,114,110,116,7,
130,1,116,6,106,8,125,4,124,4,106,9,124,4,131,1,
130,1,116,6,106,8,125,4,124,4,160,9,124,4,161,1,
125,3,124,0,106,5,124,3,95,10,121,10,124,3,124,1,
95,11,87,0,110,20,4,0,116,3,107,10,114,164,1,0,
1,0,1,0,89,0,110,2,88,0,124,2,115,186,116,0,
@ -915,7 +915,7 @@ const unsigned char _Py_M__importlib[] = {
6,1,114,133,0,0,0,99,1,0,0,0,0,0,0,0,
2,0,0,0,3,0,0,0,67,0,0,0,115,82,0,0,
0,100,1,125,1,116,0,124,0,106,1,100,2,131,2,114,
30,124,0,106,1,106,2,124,0,131,1,125,1,110,20,116,
30,124,0,106,1,160,2,124,0,161,1,125,1,110,20,116,
0,124,0,106,1,100,3,131,2,114,50,116,3,100,4,131,
1,130,1,124,1,100,1,107,8,114,68,116,4,124,0,106,
5,131,1,125,1,116,6,124,0,124,1,131,2,1,0,124,
@ -936,14 +936,14 @@ const unsigned char _Py_M__importlib[] = {
95,115,112,101,99,41,2,0,0,115,18,0,0,0,0,3,
4,1,12,3,14,1,12,1,8,2,8,1,10,1,10,1,
114,136,0,0,0,99,1,0,0,0,0,0,0,0,2,0,
0,0,3,0,0,0,67,0,0,0,115,106,0,0,0,124,
0,0,4,0,0,0,67,0,0,0,115,106,0,0,0,124,
0,106,0,100,1,107,8,114,14,100,2,110,4,124,0,106,
0,125,1,124,0,106,1,100,1,107,8,114,66,124,0,106,
2,100,1,107,8,114,50,100,3,106,3,124,1,131,1,83,
0,100,4,106,3,124,1,124,0,106,2,131,2,83,0,110,
36,124,0,106,4,114,86,100,5,106,3,124,1,124,0,106,
1,131,2,83,0,100,6,106,3,124,0,106,0,124,0,106,
1,131,2,83,0,100,1,83,0,41,7,122,38,82,101,116,
2,100,1,107,8,114,50,100,3,160,3,124,1,161,1,83,
0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,110,
36,124,0,106,4,114,86,100,5,160,3,124,1,124,0,106,
1,161,2,83,0,100,6,160,3,124,0,106,0,124,0,106,
1,161,2,83,0,100,1,83,0,41,7,122,38,82,101,116,
117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32,
117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117,
108,101,46,78,114,87,0,0,0,122,13,60,109,111,100,117,
@ -959,17 +959,17 @@ const unsigned char _Py_M__importlib[] = {
3,20,1,10,1,10,1,10,2,16,2,6,1,14,2,114,
91,0,0,0,99,2,0,0,0,0,0,0,0,4,0,0,
0,12,0,0,0,67,0,0,0,115,186,0,0,0,124,0,
106,0,125,2,116,1,106,2,131,0,1,0,116,3,124,2,
131,1,143,148,1,0,116,4,106,5,106,6,124,2,131,1,
124,1,107,9,114,62,100,1,106,7,124,2,131,1,125,3,
106,0,125,2,116,1,160,2,161,0,1,0,116,3,124,2,
131,1,143,148,1,0,116,4,106,5,160,6,124,2,161,1,
124,1,107,9,114,62,100,1,160,7,124,2,161,1,125,3,
116,8,124,3,124,2,100,2,141,2,130,1,124,0,106,9,
100,3,107,8,114,114,124,0,106,10,100,3,107,8,114,96,
116,8,100,4,124,0,106,0,100,2,141,2,130,1,116,11,
124,0,124,1,100,5,100,6,141,3,1,0,124,1,83,0,
116,11,124,0,124,1,100,5,100,6,141,3,1,0,116,12,
124,0,106,9,100,7,131,2,115,154,124,0,106,9,106,13,
124,2,131,1,1,0,110,12,124,0,106,9,106,14,124,1,
131,1,1,0,87,0,100,3,81,0,82,0,88,0,116,4,
124,0,106,9,100,7,131,2,115,154,124,0,106,9,160,13,
124,2,161,1,1,0,110,12,124,0,106,9,160,14,124,1,
161,1,1,0,87,0,100,3,81,0,82,0,88,0,116,4,
106,5,124,2,25,0,83,0,41,8,122,70,69,120,101,99,
117,116,101,32,116,104,101,32,115,112,101,99,39,115,32,115,
112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,
@ -992,14 +992,14 @@ const unsigned char _Py_M__importlib[] = {
16,1,10,1,12,1,10,1,10,1,14,2,14,1,4,1,
14,1,12,4,14,2,22,1,114,80,0,0,0,99,1,0,
0,0,0,0,0,0,2,0,0,0,27,0,0,0,67,0,
0,0,115,206,0,0,0,124,0,106,0,106,1,124,0,106,
2,131,1,1,0,116,3,106,4,124,0,106,2,25,0,125,
0,0,115,206,0,0,0,124,0,106,0,160,1,124,0,106,
2,161,1,1,0,116,3,106,4,124,0,106,2,25,0,125,
1,116,5,124,1,100,1,100,0,131,3,100,0,107,8,114,
76,121,12,124,0,106,0,124,1,95,6,87,0,110,20,4,
0,116,7,107,10,114,74,1,0,1,0,1,0,89,0,110,
2,88,0,116,5,124,1,100,2,100,0,131,3,100,0,107,
8,114,154,121,40,124,1,106,8,124,1,95,9,116,10,124,
1,100,3,131,2,115,130,124,0,106,2,106,11,100,4,131,
1,100,3,131,2,115,130,124,0,106,2,160,11,100,4,161,
1,100,5,25,0,124,1,95,9,87,0,110,20,4,0,116,
7,107,10,114,152,1,0,1,0,1,0,89,0,110,2,88,
0,116,5,124,1,100,6,100,0,131,3,100,0,107,8,114,
@ -1025,7 +1025,7 @@ const unsigned char _Py_M__importlib[] = {
0,131,1,125,1,116,4,124,1,131,1,143,54,1,0,124,
0,106,0,100,0,107,8,114,84,124,0,106,5,100,0,107,
8,114,96,116,6,100,2,124,0,106,7,100,3,141,2,130,
1,110,12,124,0,106,0,106,8,124,1,131,1,1,0,87,
1,110,12,124,0,106,0,160,8,124,1,161,1,1,0,87,
0,100,0,81,0,82,0,88,0,116,9,106,10,124,0,106,
7,25,0,83,0,41,4,78,114,135,0,0,0,122,14,109,
105,115,115,105,110,103,32,108,111,97,100,101,114,41,1,114,
@ -1039,7 +1039,7 @@ const unsigned char _Py_M__importlib[] = {
0,0,2,10,2,12,1,8,2,8,1,10,1,10,1,10,
1,16,3,22,5,114,141,0,0,0,99,1,0,0,0,0,
0,0,0,1,0,0,0,9,0,0,0,67,0,0,0,115,
38,0,0,0,116,0,106,1,131,0,1,0,116,2,124,0,
38,0,0,0,116,0,160,1,161,0,1,0,116,2,124,0,
106,3,131,1,143,10,1,0,116,4,124,0,131,1,83,0,
81,0,82,0,88,0,100,1,83,0,41,2,122,191,82,101,
116,117,114,110,32,97,32,110,101,119,32,109,111,100,117,108,
@ -1079,9 +1079,9 @@ const unsigned char _Py_M__importlib[] = {
105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32,
32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116,
104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,99,
1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,
67,0,0,0,115,12,0,0,0,100,1,106,0,124,0,106,
1,131,1,83,0,41,2,122,115,82,101,116,117,114,110,32,
1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,
67,0,0,0,115,12,0,0,0,100,1,160,0,124,0,106,
1,161,1,83,0,41,2,122,115,82,101,116,117,114,110,32,
114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,
117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,
101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,
@ -1097,8 +1097,8 @@ const unsigned char _Py_M__importlib[] = {
110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101,
95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,4,
0,0,0,5,0,0,0,67,0,0,0,115,44,0,0,0,
124,2,100,0,107,9,114,12,100,0,83,0,116,0,106,1,
124,1,131,1,114,36,116,2,124,1,124,0,100,1,100,2,
124,2,100,0,107,9,114,12,100,0,83,0,116,0,160,1,
124,1,161,1,114,36,116,2,124,1,124,0,100,1,100,2,
141,3,83,0,100,0,83,0,100,0,83,0,41,3,78,122,
8,98,117,105,108,116,45,105,110,41,1,114,103,0,0,0,
41,3,114,46,0,0,0,90,10,105,115,95,98,117,105,108,
@ -1109,8 +1109,8 @@ const unsigned char _Py_M__importlib[] = {
115,10,0,0,0,0,2,8,1,4,1,10,1,14,2,122,
25,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,
46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,
0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,
30,0,0,0,124,0,106,0,124,1,124,2,131,2,125,3,
0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115,
30,0,0,0,124,0,160,0,124,1,124,2,161,2,125,3,
124,3,100,1,107,9,114,26,124,3,106,1,83,0,100,1,
83,0,41,2,122,175,70,105,110,100,32,116,104,101,32,98,
117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,10,
@ -1132,7 +1132,7 @@ const unsigned char _Py_M__importlib[] = {
101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,2,
0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
0,0,0,115,46,0,0,0,124,1,106,0,116,1,106,2,
107,7,114,34,116,3,100,1,106,4,124,1,106,0,131,1,
107,7,114,34,116,3,100,1,160,4,124,1,106,0,161,1,
124,1,106,0,100,2,141,2,130,1,116,5,116,6,106,7,
124,1,131,2,83,0,41,3,122,24,67,114,101,97,116,101,
32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,
@ -1221,8 +1221,8 @@ const unsigned char _Py_M__importlib[] = {
116,104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,
105,110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,
99,108,97,115,115,46,10,10,32,32,32,32,99,1,0,0,
0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,
0,115,12,0,0,0,100,1,106,0,124,0,106,1,131,1,
0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
0,115,12,0,0,0,100,1,160,0,124,0,106,1,161,1,
83,0,41,2,122,115,82,101,116,117,114,110,32,114,101,112,
114,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,
46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,109,
@ -1238,7 +1238,7 @@ const unsigned char _Py_M__importlib[] = {
7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,
114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4,
0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,
0,0,0,115,32,0,0,0,116,0,106,1,124,1,131,1,
0,0,0,115,32,0,0,0,116,0,160,1,124,1,161,1,
114,24,116,2,124,1,124,0,100,1,100,2,141,3,83,0,
100,0,83,0,100,0,83,0,41,3,78,90,6,102,114,111,
122,101,110,41,1,114,103,0,0,0,41,3,114,46,0,0,
@ -1248,8 +1248,8 @@ const unsigned char _Py_M__importlib[] = {
114,146,0,0,0,3,3,0,0,115,6,0,0,0,0,2,
10,1,14,2,122,24,70,114,111,122,101,110,73,109,112,111,
114,116,101,114,46,102,105,110,100,95,115,112,101,99,99,3,
0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,
0,0,0,115,18,0,0,0,116,0,106,1,124,1,131,1,
0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,
0,0,0,115,18,0,0,0,116,0,160,1,124,1,161,1,
114,14,124,0,83,0,100,1,83,0,41,2,122,93,70,105,
110,100,32,97,32,102,114,111,122,101,110,32,109,111,100,117,
108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,
@ -1274,8 +1274,8 @@ const unsigned char _Py_M__importlib[] = {
99,114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,
0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,
0,0,115,64,0,0,0,124,0,106,0,106,1,125,1,116,
2,106,3,124,1,131,1,115,36,116,4,100,1,106,5,124,
1,131,1,124,1,100,2,141,2,130,1,116,6,116,2,106,
2,160,3,124,1,161,1,115,36,116,4,100,1,160,5,124,
1,161,1,124,1,100,2,141,2,130,1,116,6,116,2,106,
7,124,1,131,2,125,2,116,8,124,2,124,0,106,9,131,
2,1,0,100,0,83,0,41,3,78,122,27,123,33,114,125,
32,105,115,32,110,111,116,32,97,32,102,114,111,122,101,110,
@ -1303,8 +1303,8 @@ const unsigned char _Py_M__importlib[] = {
0,114,138,0,0,0,32,3,0,0,115,2,0,0,0,0,
7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,
114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,
0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,
0,0,115,10,0,0,0,116,0,106,1,124,1,131,1,83,
0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,
0,0,115,10,0,0,0,116,0,160,1,124,1,161,1,83,
0,41,1,122,45,82,101,116,117,114,110,32,116,104,101,32,
99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,
116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,
@ -1324,8 +1324,8 @@ const unsigned char _Py_M__importlib[] = {
47,3,0,0,115,2,0,0,0,0,4,122,25,70,114,111,
122,101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,
115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,2,
0,0,0,2,0,0,0,67,0,0,0,115,10,0,0,0,
116,0,106,1,124,1,131,1,83,0,41,1,122,46,82,101,
0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0,
116,0,160,1,124,1,161,1,83,0,41,1,122,46,82,101,
116,117,114,110,32,84,114,117,101,32,105,102,32,116,104,101,
32,102,114,111,122,101,110,32,109,111,100,117,108,101,32,105,
115,32,97,32,112,97,99,107,97,103,101,46,41,2,114,46,
@ -1352,8 +1352,8 @@ const unsigned char _Py_M__importlib[] = {
111,99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,
101,120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,
116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,
99,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,
0,67,0,0,0,115,12,0,0,0,116,0,106,1,131,0,
99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
0,67,0,0,0,115,12,0,0,0,116,0,160,1,161,0,
1,0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,
101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,
107,46,78,41,2,114,46,0,0,0,114,137,0,0,0,41,
@ -1362,8 +1362,8 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,0,2,122,28,95,73,109,112,111,114,116,76,111,
99,107,67,111,110,116,101,120,116,46,95,95,101,110,116,101,
114,95,95,99,4,0,0,0,0,0,0,0,4,0,0,0,
1,0,0,0,67,0,0,0,115,12,0,0,0,116,0,106,
1,131,0,1,0,100,1,83,0,41,2,122,60,82,101,108,
2,0,0,0,67,0,0,0,115,12,0,0,0,116,0,160,
1,161,0,1,0,100,1,83,0,41,2,122,60,82,101,108,
101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,
108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,
111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,
@ -1380,11 +1380,11 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,
0,0,114,157,0,0,0,62,3,0,0,115,6,0,0,0,
8,2,4,2,8,4,114,157,0,0,0,99,3,0,0,0,
0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,
115,64,0,0,0,124,1,106,0,100,1,124,2,100,2,24,
0,131,2,125,3,116,1,124,3,131,1,124,2,107,0,114,
0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,
115,64,0,0,0,124,1,160,0,100,1,124,2,100,2,24,
0,161,2,125,3,116,1,124,3,131,1,124,2,107,0,114,
36,116,2,100,3,131,1,130,1,124,3,100,4,25,0,125,
4,124,0,114,60,100,5,106,3,124,4,124,0,131,2,83,
4,124,0,114,60,100,5,160,3,124,4,124,0,161,2,83,
0,124,4,83,0,41,6,122,50,82,101,115,111,108,118,101,
32,97,32,114,101,108,97,116,105,118,101,32,109,111,100,117,
108,101,32,110,97,109,101,32,116,111,32,97,110,32,97,98,
@ -1401,9 +1401,9 @@ const unsigned char _Py_M__importlib[] = {
0,0,114,11,0,0,0,218,13,95,114,101,115,111,108,118,
101,95,110,97,109,101,75,3,0,0,115,10,0,0,0,0,
2,16,1,12,1,8,1,8,1,114,163,0,0,0,99,3,
0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,
0,0,0,115,34,0,0,0,124,0,106,0,124,1,124,2,
131,2,125,3,124,3,100,0,107,8,114,24,100,0,83,0,
0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,
0,0,0,115,34,0,0,0,124,0,160,0,124,1,124,2,
161,2,125,3,124,3,100,0,107,8,114,24,100,0,83,0,
116,1,124,1,124,3,131,2,83,0,41,1,78,41,2,114,
147,0,0,0,114,78,0,0,0,41,4,218,6,102,105,110,
100,101,114,114,15,0,0,0,114,144,0,0,0,114,93,0,
@ -1414,7 +1414,7 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,10,0,0,0,27,0,0,0,67,0,0,0,115,
242,0,0,0,116,0,106,1,125,3,124,3,100,1,107,8,
114,22,116,2,100,2,131,1,130,1,124,3,115,38,116,3,
106,4,100,3,116,5,131,2,1,0,124,0,116,0,106,6,
160,4,100,3,116,5,161,2,1,0,124,0,116,0,106,6,
107,6,125,4,120,188,124,3,68,0,93,176,125,5,116,7,
131,0,143,72,1,0,121,10,124,5,106,8,125,6,87,0,
110,42,4,0,116,9,107,10,114,118,1,0,1,0,1,0,
@ -1449,15 +1449,15 @@ const unsigned char _Py_M__importlib[] = {
10,1,8,1,2,1,10,1,14,1,12,1,8,1,8,2,
22,1,8,2,16,1,10,1,2,1,10,1,14,4,6,2,
8,1,4,2,6,2,8,2,114,170,0,0,0,99,3,0,
0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,
0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,
0,0,115,140,0,0,0,116,0,124,0,116,1,131,2,115,
28,116,2,100,1,106,3,116,4,124,0,131,1,131,1,131,
28,116,2,100,1,160,3,116,4,124,0,131,1,161,1,131,
1,130,1,124,2,100,2,107,0,114,44,116,5,100,3,131,
1,130,1,124,2,100,2,107,4,114,114,116,0,124,1,116,
1,131,2,115,72,116,2,100,4,131,1,130,1,110,42,124,
1,115,86,116,6,100,5,131,1,130,1,110,28,124,1,116,
7,106,8,107,7,114,114,100,6,125,3,116,9,124,3,106,
3,124,1,131,1,131,1,130,1,124,0,12,0,114,136,124,
7,106,8,107,7,114,114,100,6,125,3,116,9,124,3,160,
3,124,1,161,1,131,1,130,1,124,0,12,0,114,136,124,
2,100,2,107,2,114,136,116,5,100,7,131,1,130,1,100,
8,83,0,41,9,122,28,86,101,114,105,102,121,32,97,114,
103,117,109,101,110,116,115,32,97,114,101,32,34,115,97,110,
@ -1488,20 +1488,20 @@ const unsigned char _Py_M__importlib[] = {
1,10,2,10,1,4,2,14,1,14,1,114,175,0,0,0,
122,16,78,111,32,109,111,100,117,108,101,32,110,97,109,101,
100,32,122,4,123,33,114,125,99,2,0,0,0,0,0,0,
0,8,0,0,0,12,0,0,0,67,0,0,0,115,220,0,
0,0,100,0,125,2,124,0,106,0,100,1,131,1,100,2,
0,8,0,0,0,13,0,0,0,67,0,0,0,115,220,0,
0,0,100,0,125,2,124,0,160,0,100,1,161,1,100,2,
25,0,125,3,124,3,114,134,124,3,116,1,106,2,107,7,
114,42,116,3,124,1,124,3,131,2,1,0,124,0,116,1,
106,2,107,6,114,62,116,1,106,2,124,0,25,0,83,0,
116,1,106,2,124,3,25,0,125,4,121,10,124,4,106,4,
125,2,87,0,110,50,4,0,116,5,107,10,114,132,1,0,
1,0,1,0,116,6,100,3,23,0,106,7,124,0,124,3,
131,2,125,5,116,8,124,5,124,0,100,4,141,2,100,0,
1,0,1,0,116,6,100,3,23,0,160,7,124,0,124,3,
161,2,125,5,116,8,124,5,124,0,100,4,141,2,100,0,
130,2,89,0,110,2,88,0,116,9,124,0,124,2,131,2,
125,6,124,6,100,0,107,8,114,172,116,8,116,6,106,7,
124,0,131,1,124,0,100,4,141,2,130,1,110,8,116,10,
125,6,124,6,100,0,107,8,114,172,116,8,116,6,160,7,
124,0,161,1,124,0,100,4,141,2,130,1,110,8,116,10,
124,6,131,1,125,7,124,3,114,216,116,1,106,2,124,3,
25,0,125,4,116,11,124,4,124,0,106,0,100,1,131,1,
25,0,125,4,116,11,124,4,124,0,160,0,100,1,161,1,
100,5,25,0,124,7,131,3,1,0,124,7,83,0,41,6,
78,114,117,0,0,0,114,19,0,0,0,122,23,59,32,123,
33,114,125,32,105,115,32,110,111,116,32,97,32,112,97,99,
@ -1536,11 +1536,11 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,
0,115,120,0,0,0,116,0,124,0,124,1,124,2,131,3,
1,0,124,2,100,1,107,4,114,32,116,1,124,0,124,1,
124,2,131,3,125,0,116,2,106,3,131,0,1,0,124,0,
124,2,131,3,125,0,116,2,160,3,161,0,1,0,124,0,
116,4,106,5,107,7,114,60,116,6,124,0,116,7,131,2,
83,0,116,4,106,5,124,0,25,0,125,3,124,3,100,2,
107,8,114,108,116,2,106,8,131,0,1,0,100,3,106,9,
124,0,131,1,125,4,116,10,124,4,124,0,100,4,141,2,
107,8,114,108,116,2,160,8,161,0,1,0,100,3,160,9,
124,0,161,1,125,4,116,10,124,4,124,0,100,4,141,2,
130,1,116,11,124,0,131,1,1,0,124,3,83,0,41,5,
97,50,1,0,0,73,109,112,111,114,116,32,97,110,100,32,
114,101,116,117,114,110,32,116,104,101,32,109,111,100,117,108,
@ -1578,10 +1578,10 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,0,0,0,6,0,0,0,17,0,0,0,67,0,
0,0,115,164,0,0,0,116,0,124,0,100,1,131,2,114,
160,100,2,124,1,107,6,114,58,116,1,124,1,131,1,125,
1,124,1,106,2,100,2,131,1,1,0,116,0,124,0,100,
3,131,2,114,58,124,1,106,3,124,0,106,4,131,1,1,
1,124,1,160,2,100,2,161,1,1,0,116,0,124,0,100,
3,131,2,114,58,124,1,160,3,124,0,106,4,161,1,1,
0,120,100,124,1,68,0,93,92,125,3,116,0,124,0,124,
3,131,2,115,64,100,4,106,5,124,0,106,6,124,3,131,
3,131,2,115,64,100,4,160,5,124,0,106,6,124,3,161,
2,125,4,121,14,116,7,124,2,124,4,131,2,1,0,87,
0,113,64,4,0,116,8,107,10,114,154,1,0,125,5,1,
0,122,20,124,5,106,9,124,4,107,2,114,136,119,64,130,
@ -1616,15 +1616,15 @@ const unsigned char _Py_M__importlib[] = {
1,10,1,10,1,14,1,2,1,14,1,16,4,10,1,2,
1,24,1,114,189,0,0,0,99,1,0,0,0,0,0,0,
0,3,0,0,0,6,0,0,0,67,0,0,0,115,146,0,
0,0,124,0,106,0,100,1,131,1,125,1,124,0,106,0,
100,2,131,1,125,2,124,1,100,3,107,9,114,82,124,2,
0,0,124,0,160,0,100,1,161,1,125,1,124,0,160,0,
100,2,161,1,125,2,124,1,100,3,107,9,114,82,124,2,
100,3,107,9,114,78,124,1,124,2,106,1,107,3,114,78,
116,2,106,3,100,4,124,1,155,2,100,5,124,2,106,1,
155,2,100,6,157,5,116,4,100,7,100,8,141,3,1,0,
124,1,83,0,124,2,100,3,107,9,114,96,124,2,106,1,
83,0,116,2,106,3,100,9,116,4,100,7,100,8,141,3,
1,0,124,0,100,10,25,0,125,1,100,11,124,0,107,7,
114,142,124,1,106,5,100,12,131,1,100,13,25,0,125,1,
114,142,124,1,160,5,100,12,161,1,100,13,25,0,125,1,
124,1,83,0,41,14,122,167,67,97,108,99,117,108,97,116,
101,32,119,104,97,116,32,95,95,112,97,99,107,97,103,101,
95,95,32,115,104,111,117,108,100,32,98,101,46,10,10,32,
@ -1661,9 +1661,9 @@ const unsigned char _Py_M__importlib[] = {
131,1,125,5,110,36,124,1,100,2,107,9,114,30,124,1,
110,2,105,0,125,6,116,1,124,6,131,1,125,7,116,0,
124,0,124,7,124,4,131,3,125,5,124,3,115,150,124,4,
100,1,107,2,114,84,116,0,124,0,106,2,100,3,131,1,
100,1,107,2,114,84,116,0,124,0,160,2,100,3,161,1,
100,1,25,0,131,1,83,0,124,0,115,92,124,5,83,0,
116,3,124,0,131,1,116,3,124,0,106,2,100,3,131,1,
116,3,124,0,131,1,116,3,124,0,160,2,100,3,161,1,
100,1,25,0,131,1,24,0,125,8,116,4,106,5,124,5,
106,6,100,2,116,3,124,5,106,6,131,1,124,8,24,0,
133,2,25,0,25,0,83,0,110,12,116,7,124,5,124,3,
@ -1710,8 +1710,8 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,11,8,1,10,2,16,1,8,1,12,1,4,3,
8,1,18,1,4,1,4,4,26,3,32,2,114,196,0,0,
0,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,
0,0,67,0,0,0,115,38,0,0,0,116,0,106,1,124,
0,131,1,125,1,124,1,100,0,107,8,114,30,116,2,100,
0,0,67,0,0,0,115,38,0,0,0,116,0,160,1,124,
0,161,1,125,1,124,1,100,0,107,8,114,30,116,2,100,
1,124,0,23,0,131,1,130,1,116,3,124,1,131,1,83,
0,41,2,78,122,25,110,111,32,98,117,105,108,116,45,105,
110,32,109,111,100,117,108,101,32,110,97,109,101,100,32,41,
@ -1723,10 +1723,10 @@ const unsigned char _Py_M__importlib[] = {
1,8,1,12,1,114,197,0,0,0,99,2,0,0,0,0,
0,0,0,12,0,0,0,12,0,0,0,67,0,0,0,115,
244,0,0,0,124,1,97,0,124,0,97,1,116,2,116,1,
131,1,125,2,120,86,116,1,106,3,106,4,131,0,68,0,
131,1,125,2,120,86,116,1,106,3,160,4,161,0,68,0,
93,72,92,2,125,3,125,4,116,5,124,4,124,2,131,2,
114,28,124,3,116,1,106,6,107,6,114,62,116,7,125,5,
110,18,116,0,106,8,124,3,131,1,114,28,116,9,125,5,
110,18,116,0,160,8,124,3,161,1,114,28,116,9,125,5,
110,2,113,28,116,10,124,4,124,5,131,2,125,6,116,11,
124,6,124,4,131,2,1,0,113,28,87,0,116,1,106,3,
116,12,25,0,125,7,120,54,100,5,68,0,93,46,125,8,
@ -1774,12 +1774,12 @@ const unsigned char _Py_M__importlib[] = {
1,10,1,10,1,6,1,10,1,6,2,2,1,10,1,14,
3,10,1,10,1,10,1,10,2,10,1,16,3,2,1,12,
1,14,2,10,1,12,3,8,1,114,201,0,0,0,99,2,
0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,
0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,
0,0,0,115,66,0,0,0,116,0,124,0,124,1,131,2,
1,0,116,1,106,2,106,3,116,4,131,1,1,0,116,1,
106,2,106,3,116,5,131,1,1,0,100,1,100,2,108,6,
125,2,124,2,97,7,124,2,106,8,116,1,106,9,116,10,
25,0,131,1,1,0,100,2,83,0,41,3,122,50,73,110,
1,0,116,1,106,2,160,3,116,4,161,1,1,0,116,1,
106,2,160,3,116,5,161,1,1,0,100,1,100,2,108,6,
125,2,124,2,97,7,124,2,160,8,116,1,106,9,116,10,
25,0,161,1,1,0,100,2,83,0,41,3,122,50,73,110,
115,116,97,108,108,32,105,109,112,111,114,116,108,105,98,32,
97,115,32,116,104,101,32,105,109,112,108,101,109,101,110,116,
97,116,105,111,110,32,111,102,32,105,109,112,111,114,116,46,

File diff suppressed because it is too large Load diff

View file

@ -159,8 +159,8 @@ static void *opcode_targets[256] = {
&&TARGET_BUILD_STRING,
&&TARGET_BUILD_TUPLE_UNPACK_WITH_CALL,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
&&TARGET_LOAD_METHOD,
&&TARGET_CALL_METHOD,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,