diff options
Diffstat (limited to 'Include')
-rw-r--r-- | Include/cpython/funcobject.h | 5 | ||||
-rw-r--r-- | Include/cpython/pystats.h | 4 | ||||
-rw-r--r-- | Include/internal/pycore_code.h | 51 | ||||
-rw-r--r-- | Include/internal/pycore_crossinterp.h | 7 | ||||
-rw-r--r-- | Include/internal/pycore_debug_offsets.h | 2 | ||||
-rw-r--r-- | Include/internal/pycore_list.h | 3 | ||||
-rw-r--r-- | Include/internal/pycore_opcode_metadata.h | 9 | ||||
-rw-r--r-- | Include/internal/pycore_pystate.h | 4 | ||||
-rw-r--r-- | Include/internal/pycore_uop_ids.h | 400 | ||||
-rw-r--r-- | Include/internal/pycore_uop_metadata.h | 8 | ||||
-rw-r--r-- | Include/opcode_ids.h | 147 | ||||
-rw-r--r-- | Include/pyport.h | 15 |
12 files changed, 321 insertions, 334 deletions
diff --git a/Include/cpython/funcobject.h b/Include/cpython/funcobject.h index 18249b95bef..598cd330bc9 100644 --- a/Include/cpython/funcobject.h +++ b/Include/cpython/funcobject.h @@ -97,11 +97,6 @@ static inline PyObject* PyFunction_GET_GLOBALS(PyObject *func) { } #define PyFunction_GET_GLOBALS(func) PyFunction_GET_GLOBALS(_PyObject_CAST(func)) -static inline PyObject* PyFunction_GET_BUILTINS(PyObject *func) { - return _PyFunction_CAST(func)->func_builtins; -} -#define PyFunction_GET_BUILTINS(func) PyFunction_GET_BUILTINS(_PyObject_CAST(func)) - static inline PyObject* PyFunction_GET_MODULE(PyObject *func) { return _PyFunction_CAST(func)->func_module; } diff --git a/Include/cpython/pystats.h b/Include/cpython/pystats.h index 7c1459bde8f..cf830b6066f 100644 --- a/Include/cpython/pystats.h +++ b/Include/cpython/pystats.h @@ -29,9 +29,9 @@ # error "this header file must not be included directly" #endif -#define PYSTATS_MAX_UOP_ID 512 +#define PYSTATS_MAX_UOP_ID 1024 -#define SPECIALIZATION_FAILURE_KINDS 50 +#define SPECIALIZATION_FAILURE_KINDS 60 /* Stats for determining who is calling PyEval_EvalFrame */ #define EVAL_CALL_TOTAL 0 diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 9b02e2934aa..635d2b24f4b 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -565,57 +565,6 @@ extern int _Py_ClearUnusedTLBC(PyInterpreterState *interp); #endif -typedef struct { - int total; - struct co_locals_counts { - int total; - struct { - int total; - int numposonly; - int numposorkw; - int numkwonly; - int varargs; - int varkwargs; - } args; - int numpure; - struct { - int total; - // numargs does not contribute to locals.total. - int numargs; - int numothers; - } cells; - struct { - int total; - int numpure; - int numcells; - } hidden; - } locals; - int numfree; // nonlocal - struct co_unbound_counts { - int total; - struct { - int total; - int numglobal; - int numbuiltin; - int numunknown; - } globals; - int numattrs; - int numunknown; - } unbound; -} _PyCode_var_counts_t; - -PyAPI_FUNC(void) _PyCode_GetVarCounts( - PyCodeObject *, - _PyCode_var_counts_t *); -PyAPI_FUNC(int) _PyCode_SetUnboundVarCounts( - PyThreadState *, - PyCodeObject *, - _PyCode_var_counts_t *, - PyObject *globalnames, - PyObject *attrnames, - PyObject *globalsns, - PyObject *builtinsns); - PyAPI_FUNC(int) _PyCode_ReturnsOnlyNone(PyCodeObject *); diff --git a/Include/internal/pycore_crossinterp.h b/Include/internal/pycore_crossinterp.h index 4b7446a1f40..4b4617fdbcb 100644 --- a/Include/internal/pycore_crossinterp.h +++ b/Include/internal/pycore_crossinterp.h @@ -171,6 +171,13 @@ PyAPI_FUNC(_PyBytes_data_t *) _PyBytes_GetXIDataWrapped( xid_newobjfunc, _PyXIData_t *); +// _PyObject_GetXIData() for pickle +PyAPI_DATA(PyObject *) _PyPickle_LoadFromXIData(_PyXIData_t *); +PyAPI_FUNC(int) _PyPickle_GetXIData( + PyThreadState *, + PyObject *, + _PyXIData_t *); + // _PyObject_GetXIData() for marshal PyAPI_FUNC(PyObject *) _PyMarshal_ReadObjectFromXIData(_PyXIData_t *); PyAPI_FUNC(int) _PyMarshal_GetXIData( diff --git a/Include/internal/pycore_debug_offsets.h b/Include/internal/pycore_debug_offsets.h index b280633c9ef..59d2c9d5377 100644 --- a/Include/internal/pycore_debug_offsets.h +++ b/Include/internal/pycore_debug_offsets.h @@ -59,7 +59,7 @@ extern "C" { typedef struct _Py_DebugOffsets { - char cookie[8]; + char cookie[8] _Py_NONSTRING; uint64_t version; uint64_t free_threaded; // Runtime state offset; diff --git a/Include/internal/pycore_list.h b/Include/internal/pycore_list.h index 5c66d76a0d6..ffbcebdb7df 100644 --- a/Include/internal/pycore_list.h +++ b/Include/internal/pycore_list.h @@ -13,10 +13,13 @@ extern "C" { #endif PyAPI_FUNC(PyObject*) _PyList_Extend(PyListObject *, PyObject *); +PyAPI_FUNC(PyObject) *_PyList_SliceSubscript(PyObject*, PyObject*); extern void _PyList_DebugMallocStats(FILE *out); // _PyList_GetItemRef should be used only when the object is known as a list // because it doesn't raise TypeError when the object is not a list, whereas PyList_GetItemRef does. extern PyObject* _PyList_GetItemRef(PyListObject *, Py_ssize_t i); + + #ifdef Py_GIL_DISABLED // Returns -1 in case of races with other threads. extern int _PyList_GetItemRefNoLock(PyListObject *, Py_ssize_t, _PyStackRef *); diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h index 23751f36ef3..852d6313394 100644 --- a/Include/internal/pycore_opcode_metadata.h +++ b/Include/internal/pycore_opcode_metadata.h @@ -60,6 +60,8 @@ int _PyOpcode_num_popped(int opcode, int oparg) { return 2; case BINARY_OP_SUBSCR_LIST_INT: return 2; + case BINARY_OP_SUBSCR_LIST_SLICE: + return 2; case BINARY_OP_SUBSCR_STR_INT: return 2; case BINARY_OP_SUBSCR_TUPLE_INT: @@ -545,6 +547,8 @@ int _PyOpcode_num_pushed(int opcode, int oparg) { return 0; case BINARY_OP_SUBSCR_LIST_INT: return 1; + case BINARY_OP_SUBSCR_LIST_SLICE: + return 1; case BINARY_OP_SUBSCR_STR_INT: return 1; case BINARY_OP_SUBSCR_TUPLE_INT: @@ -1085,6 +1089,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = { [BINARY_OP_SUBSCR_DICT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG }, [BINARY_OP_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, + [BINARY_OP_SUBSCR_LIST_SLICE] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_STR_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG }, @@ -1335,6 +1340,7 @@ _PyOpcode_macro_expansion[256] = { [BINARY_OP_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_DICT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_GETITEM] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_CHECK_FUNC, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_INIT_CALL, OPARG_SIMPLE, 5 }, { _PUSH_FRAME, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_INT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_SUBSCR_LIST_SLICE] = { .nuops = 3, .uops = { { _GUARD_TOS_SLICE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_SLICE, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_STR_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_STR_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_TUPLE_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_TUPLE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_TUPLE_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, OPARG_SIMPLE, 5 } } }, @@ -1524,6 +1530,7 @@ const char *_PyOpcode_OpName[267] = { [BINARY_OP_SUBSCR_DICT] = "BINARY_OP_SUBSCR_DICT", [BINARY_OP_SUBSCR_GETITEM] = "BINARY_OP_SUBSCR_GETITEM", [BINARY_OP_SUBSCR_LIST_INT] = "BINARY_OP_SUBSCR_LIST_INT", + [BINARY_OP_SUBSCR_LIST_SLICE] = "BINARY_OP_SUBSCR_LIST_SLICE", [BINARY_OP_SUBSCR_STR_INT] = "BINARY_OP_SUBSCR_STR_INT", [BINARY_OP_SUBSCR_TUPLE_INT] = "BINARY_OP_SUBSCR_TUPLE_INT", [BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT", @@ -1791,6 +1798,7 @@ const uint8_t _PyOpcode_Deopt[256] = { [BINARY_OP_SUBSCR_DICT] = BINARY_OP, [BINARY_OP_SUBSCR_GETITEM] = BINARY_OP, [BINARY_OP_SUBSCR_LIST_INT] = BINARY_OP, + [BINARY_OP_SUBSCR_LIST_SLICE] = BINARY_OP, [BINARY_OP_SUBSCR_STR_INT] = BINARY_OP, [BINARY_OP_SUBSCR_TUPLE_INT] = BINARY_OP, [BINARY_OP_SUBTRACT_FLOAT] = BINARY_OP, @@ -2018,7 +2026,6 @@ const uint8_t _PyOpcode_Deopt[256] = { case 125: \ case 126: \ case 127: \ - case 211: \ case 212: \ case 213: \ case 214: \ diff --git a/Include/internal/pycore_pystate.h b/Include/internal/pycore_pystate.h index e8b630f5441..633e5cf77db 100644 --- a/Include/internal/pycore_pystate.h +++ b/Include/internal/pycore_pystate.h @@ -300,7 +300,7 @@ _Py_AssertHoldsTstateFunc(const char *func) #define _Py_AssertHoldsTstate() #endif -#if !_Py__has_builtin(__builtin_frame_address) && !defined(_MSC_VER) +#if !_Py__has_builtin(__builtin_frame_address) && !defined(__GNUC__) && !defined(_MSC_VER) static uintptr_t return_pointer_as_int(char* p) { return (uintptr_t)p; } @@ -308,7 +308,7 @@ static uintptr_t return_pointer_as_int(char* p) { static inline uintptr_t _Py_get_machine_stack_pointer(void) { -#if _Py__has_builtin(__builtin_frame_address) +#if _Py__has_builtin(__builtin_frame_address) || defined(__GNUC__) return (uintptr_t)__builtin_frame_address(0); #elif defined(_MSC_VER) return (uintptr_t)_AddressOfReturnAddress(); diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index 1c7fde3fa24..371b77e2c96 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -23,11 +23,12 @@ extern "C" { #define _BINARY_OP_SUBSCR_DICT 311 #define _BINARY_OP_SUBSCR_INIT_CALL 312 #define _BINARY_OP_SUBSCR_LIST_INT 313 -#define _BINARY_OP_SUBSCR_STR_INT 314 -#define _BINARY_OP_SUBSCR_TUPLE_INT 315 -#define _BINARY_OP_SUBTRACT_FLOAT 316 -#define _BINARY_OP_SUBTRACT_INT 317 -#define _BINARY_SLICE 318 +#define _BINARY_OP_SUBSCR_LIST_SLICE 314 +#define _BINARY_OP_SUBSCR_STR_INT 315 +#define _BINARY_OP_SUBSCR_TUPLE_INT 316 +#define _BINARY_OP_SUBTRACT_FLOAT 317 +#define _BINARY_OP_SUBTRACT_INT 318 +#define _BINARY_SLICE 319 #define _BUILD_INTERPOLATION BUILD_INTERPOLATION #define _BUILD_LIST BUILD_LIST #define _BUILD_MAP BUILD_MAP @@ -36,128 +37,129 @@ extern "C" { #define _BUILD_STRING BUILD_STRING #define _BUILD_TEMPLATE BUILD_TEMPLATE #define _BUILD_TUPLE BUILD_TUPLE -#define _CALL_BUILTIN_CLASS 319 -#define _CALL_BUILTIN_FAST 320 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 321 -#define _CALL_BUILTIN_O 322 +#define _CALL_BUILTIN_CLASS 320 +#define _CALL_BUILTIN_FAST 321 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 322 +#define _CALL_BUILTIN_O 323 #define _CALL_INTRINSIC_1 CALL_INTRINSIC_1 #define _CALL_INTRINSIC_2 CALL_INTRINSIC_2 #define _CALL_ISINSTANCE CALL_ISINSTANCE -#define _CALL_KW_NON_PY 323 +#define _CALL_KW_NON_PY 324 #define _CALL_LEN CALL_LEN #define _CALL_LIST_APPEND CALL_LIST_APPEND -#define _CALL_METHOD_DESCRIPTOR_FAST 324 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 325 -#define _CALL_METHOD_DESCRIPTOR_NOARGS 326 -#define _CALL_METHOD_DESCRIPTOR_O 327 -#define _CALL_NON_PY_GENERAL 328 -#define _CALL_STR_1 329 -#define _CALL_TUPLE_1 330 -#define _CALL_TYPE_1 331 -#define _CHECK_AND_ALLOCATE_OBJECT 332 -#define _CHECK_ATTR_CLASS 333 -#define _CHECK_ATTR_METHOD_LAZY_DICT 334 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 335 +#define _CALL_METHOD_DESCRIPTOR_FAST 325 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 326 +#define _CALL_METHOD_DESCRIPTOR_NOARGS 327 +#define _CALL_METHOD_DESCRIPTOR_O 328 +#define _CALL_NON_PY_GENERAL 329 +#define _CALL_STR_1 330 +#define _CALL_TUPLE_1 331 +#define _CALL_TYPE_1 332 +#define _CHECK_AND_ALLOCATE_OBJECT 333 +#define _CHECK_ATTR_CLASS 334 +#define _CHECK_ATTR_METHOD_LAZY_DICT 335 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 336 #define _CHECK_EG_MATCH CHECK_EG_MATCH #define _CHECK_EXC_MATCH CHECK_EXC_MATCH -#define _CHECK_FUNCTION 336 -#define _CHECK_FUNCTION_EXACT_ARGS 337 -#define _CHECK_FUNCTION_VERSION 338 -#define _CHECK_FUNCTION_VERSION_INLINE 339 -#define _CHECK_FUNCTION_VERSION_KW 340 -#define _CHECK_IS_NOT_PY_CALLABLE 341 -#define _CHECK_IS_NOT_PY_CALLABLE_KW 342 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES 343 -#define _CHECK_METHOD_VERSION 344 -#define _CHECK_METHOD_VERSION_KW 345 -#define _CHECK_PEP_523 346 -#define _CHECK_PERIODIC 347 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 348 -#define _CHECK_STACK_SPACE 349 -#define _CHECK_STACK_SPACE_OPERAND 350 -#define _CHECK_VALIDITY 351 -#define _COMPARE_OP 352 -#define _COMPARE_OP_FLOAT 353 -#define _COMPARE_OP_INT 354 -#define _COMPARE_OP_STR 355 -#define _CONTAINS_OP 356 -#define _CONTAINS_OP_DICT 357 -#define _CONTAINS_OP_SET 358 +#define _CHECK_FUNCTION 337 +#define _CHECK_FUNCTION_EXACT_ARGS 338 +#define _CHECK_FUNCTION_VERSION 339 +#define _CHECK_FUNCTION_VERSION_INLINE 340 +#define _CHECK_FUNCTION_VERSION_KW 341 +#define _CHECK_IS_NOT_PY_CALLABLE 342 +#define _CHECK_IS_NOT_PY_CALLABLE_KW 343 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES 344 +#define _CHECK_METHOD_VERSION 345 +#define _CHECK_METHOD_VERSION_KW 346 +#define _CHECK_PEP_523 347 +#define _CHECK_PERIODIC 348 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 349 +#define _CHECK_STACK_SPACE 350 +#define _CHECK_STACK_SPACE_OPERAND 351 +#define _CHECK_VALIDITY 352 +#define _COMPARE_OP 353 +#define _COMPARE_OP_FLOAT 354 +#define _COMPARE_OP_INT 355 +#define _COMPARE_OP_STR 356 +#define _CONTAINS_OP 357 +#define _CONTAINS_OP_DICT 358 +#define _CONTAINS_OP_SET 359 #define _CONVERT_VALUE CONVERT_VALUE #define _COPY COPY #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 359 +#define _CREATE_INIT_FRAME 360 #define _DELETE_ATTR DELETE_ATTR #define _DELETE_DEREF DELETE_DEREF #define _DELETE_FAST DELETE_FAST #define _DELETE_GLOBAL DELETE_GLOBAL #define _DELETE_NAME DELETE_NAME #define _DELETE_SUBSCR DELETE_SUBSCR -#define _DEOPT 360 +#define _DEOPT 361 #define _DICT_MERGE DICT_MERGE #define _DICT_UPDATE DICT_UPDATE -#define _DO_CALL 361 -#define _DO_CALL_FUNCTION_EX 362 -#define _DO_CALL_KW 363 +#define _DO_CALL 362 +#define _DO_CALL_FUNCTION_EX 363 +#define _DO_CALL_KW 364 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 364 +#define _ERROR_POP_N 365 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 365 -#define _EXPAND_METHOD_KW 366 -#define _FATAL_ERROR 367 +#define _EXPAND_METHOD 366 +#define _EXPAND_METHOD_KW 367 +#define _FATAL_ERROR 368 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 368 -#define _FOR_ITER_GEN_FRAME 369 -#define _FOR_ITER_TIER_TWO 370 +#define _FOR_ITER 369 +#define _FOR_ITER_GEN_FRAME 370 +#define _FOR_ITER_TIER_TWO 371 #define _GET_AITER GET_AITER #define _GET_ANEXT GET_ANEXT #define _GET_AWAITABLE GET_AWAITABLE #define _GET_ITER GET_ITER #define _GET_LEN GET_LEN #define _GET_YIELD_FROM_ITER GET_YIELD_FROM_ITER -#define _GUARD_BINARY_OP_EXTEND 371 -#define _GUARD_CALLABLE_STR_1 372 -#define _GUARD_CALLABLE_TUPLE_1 373 -#define _GUARD_CALLABLE_TYPE_1 374 -#define _GUARD_DORV_NO_DICT 375 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 376 -#define _GUARD_GLOBALS_VERSION 377 -#define _GUARD_IS_FALSE_POP 378 -#define _GUARD_IS_NONE_POP 379 -#define _GUARD_IS_NOT_NONE_POP 380 -#define _GUARD_IS_TRUE_POP 381 -#define _GUARD_KEYS_VERSION 382 -#define _GUARD_NOS_DICT 383 -#define _GUARD_NOS_FLOAT 384 -#define _GUARD_NOS_INT 385 -#define _GUARD_NOS_LIST 386 -#define _GUARD_NOS_NULL 387 -#define _GUARD_NOS_TUPLE 388 -#define _GUARD_NOS_UNICODE 389 -#define _GUARD_NOT_EXHAUSTED_LIST 390 -#define _GUARD_NOT_EXHAUSTED_RANGE 391 -#define _GUARD_NOT_EXHAUSTED_TUPLE 392 -#define _GUARD_TOS_ANY_SET 393 -#define _GUARD_TOS_DICT 394 -#define _GUARD_TOS_FLOAT 395 -#define _GUARD_TOS_INT 396 -#define _GUARD_TOS_LIST 397 -#define _GUARD_TOS_TUPLE 398 -#define _GUARD_TOS_UNICODE 399 -#define _GUARD_TYPE_VERSION 400 -#define _GUARD_TYPE_VERSION_AND_LOCK 401 +#define _GUARD_BINARY_OP_EXTEND 372 +#define _GUARD_CALLABLE_STR_1 373 +#define _GUARD_CALLABLE_TUPLE_1 374 +#define _GUARD_CALLABLE_TYPE_1 375 +#define _GUARD_DORV_NO_DICT 376 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 377 +#define _GUARD_GLOBALS_VERSION 378 +#define _GUARD_IS_FALSE_POP 379 +#define _GUARD_IS_NONE_POP 380 +#define _GUARD_IS_NOT_NONE_POP 381 +#define _GUARD_IS_TRUE_POP 382 +#define _GUARD_KEYS_VERSION 383 +#define _GUARD_NOS_DICT 384 +#define _GUARD_NOS_FLOAT 385 +#define _GUARD_NOS_INT 386 +#define _GUARD_NOS_LIST 387 +#define _GUARD_NOS_NULL 388 +#define _GUARD_NOS_TUPLE 389 +#define _GUARD_NOS_UNICODE 390 +#define _GUARD_NOT_EXHAUSTED_LIST 391 +#define _GUARD_NOT_EXHAUSTED_RANGE 392 +#define _GUARD_NOT_EXHAUSTED_TUPLE 393 +#define _GUARD_TOS_ANY_SET 394 +#define _GUARD_TOS_DICT 395 +#define _GUARD_TOS_FLOAT 396 +#define _GUARD_TOS_INT 397 +#define _GUARD_TOS_LIST 398 +#define _GUARD_TOS_SLICE 399 +#define _GUARD_TOS_TUPLE 400 +#define _GUARD_TOS_UNICODE 401 +#define _GUARD_TYPE_VERSION 402 +#define _GUARD_TYPE_VERSION_AND_LOCK 403 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 402 -#define _INIT_CALL_PY_EXACT_ARGS 403 -#define _INIT_CALL_PY_EXACT_ARGS_0 404 -#define _INIT_CALL_PY_EXACT_ARGS_1 405 -#define _INIT_CALL_PY_EXACT_ARGS_2 406 -#define _INIT_CALL_PY_EXACT_ARGS_3 407 -#define _INIT_CALL_PY_EXACT_ARGS_4 408 -#define _INSERT_NULL 409 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 404 +#define _INIT_CALL_PY_EXACT_ARGS 405 +#define _INIT_CALL_PY_EXACT_ARGS_0 406 +#define _INIT_CALL_PY_EXACT_ARGS_1 407 +#define _INIT_CALL_PY_EXACT_ARGS_2 408 +#define _INIT_CALL_PY_EXACT_ARGS_3 409 +#define _INIT_CALL_PY_EXACT_ARGS_4 410 +#define _INSERT_NULL 411 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -167,163 +169,163 @@ extern "C" { #define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE #define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE #define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE -#define _IS_NONE 410 +#define _IS_NONE 412 #define _IS_OP IS_OP -#define _ITER_CHECK_LIST 411 -#define _ITER_CHECK_RANGE 412 -#define _ITER_CHECK_TUPLE 413 -#define _ITER_JUMP_LIST 414 -#define _ITER_JUMP_RANGE 415 -#define _ITER_JUMP_TUPLE 416 -#define _ITER_NEXT_LIST 417 -#define _ITER_NEXT_LIST_TIER_TWO 418 -#define _ITER_NEXT_RANGE 419 -#define _ITER_NEXT_TUPLE 420 -#define _JUMP_TO_TOP 421 +#define _ITER_CHECK_LIST 413 +#define _ITER_CHECK_RANGE 414 +#define _ITER_CHECK_TUPLE 415 +#define _ITER_JUMP_LIST 416 +#define _ITER_JUMP_RANGE 417 +#define _ITER_JUMP_TUPLE 418 +#define _ITER_NEXT_LIST 419 +#define _ITER_NEXT_LIST_TIER_TWO 420 +#define _ITER_NEXT_RANGE 421 +#define _ITER_NEXT_TUPLE 422 +#define _JUMP_TO_TOP 423 #define _LIST_APPEND LIST_APPEND #define _LIST_EXTEND LIST_EXTEND -#define _LOAD_ATTR 422 -#define _LOAD_ATTR_CLASS 423 +#define _LOAD_ATTR 424 +#define _LOAD_ATTR_CLASS 425 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 424 -#define _LOAD_ATTR_METHOD_LAZY_DICT 425 -#define _LOAD_ATTR_METHOD_NO_DICT 426 -#define _LOAD_ATTR_METHOD_WITH_VALUES 427 -#define _LOAD_ATTR_MODULE 428 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 429 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 430 -#define _LOAD_ATTR_PROPERTY_FRAME 431 -#define _LOAD_ATTR_SLOT 432 -#define _LOAD_ATTR_WITH_HINT 433 +#define _LOAD_ATTR_INSTANCE_VALUE 426 +#define _LOAD_ATTR_METHOD_LAZY_DICT 427 +#define _LOAD_ATTR_METHOD_NO_DICT 428 +#define _LOAD_ATTR_METHOD_WITH_VALUES 429 +#define _LOAD_ATTR_MODULE 430 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 431 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 432 +#define _LOAD_ATTR_PROPERTY_FRAME 433 +#define _LOAD_ATTR_SLOT 434 +#define _LOAD_ATTR_WITH_HINT 435 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 434 +#define _LOAD_BYTECODE 436 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST #define _LOAD_CONST_IMMORTAL LOAD_CONST_IMMORTAL -#define _LOAD_CONST_INLINE 435 -#define _LOAD_CONST_INLINE_BORROW 436 +#define _LOAD_CONST_INLINE 437 +#define _LOAD_CONST_INLINE_BORROW 438 #define _LOAD_CONST_MORTAL LOAD_CONST_MORTAL #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 437 -#define _LOAD_FAST_0 438 -#define _LOAD_FAST_1 439 -#define _LOAD_FAST_2 440 -#define _LOAD_FAST_3 441 -#define _LOAD_FAST_4 442 -#define _LOAD_FAST_5 443 -#define _LOAD_FAST_6 444 -#define _LOAD_FAST_7 445 +#define _LOAD_FAST 439 +#define _LOAD_FAST_0 440 +#define _LOAD_FAST_1 441 +#define _LOAD_FAST_2 442 +#define _LOAD_FAST_3 443 +#define _LOAD_FAST_4 444 +#define _LOAD_FAST_5 445 +#define _LOAD_FAST_6 446 +#define _LOAD_FAST_7 447 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 446 -#define _LOAD_FAST_BORROW_0 447 -#define _LOAD_FAST_BORROW_1 448 -#define _LOAD_FAST_BORROW_2 449 -#define _LOAD_FAST_BORROW_3 450 -#define _LOAD_FAST_BORROW_4 451 -#define _LOAD_FAST_BORROW_5 452 -#define _LOAD_FAST_BORROW_6 453 -#define _LOAD_FAST_BORROW_7 454 +#define _LOAD_FAST_BORROW 448 +#define _LOAD_FAST_BORROW_0 449 +#define _LOAD_FAST_BORROW_1 450 +#define _LOAD_FAST_BORROW_2 451 +#define _LOAD_FAST_BORROW_3 452 +#define _LOAD_FAST_BORROW_4 453 +#define _LOAD_FAST_BORROW_5 454 +#define _LOAD_FAST_BORROW_6 455 +#define _LOAD_FAST_BORROW_7 456 #define _LOAD_FAST_BORROW_LOAD_FAST_BORROW LOAD_FAST_BORROW_LOAD_FAST_BORROW #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #define _LOAD_FAST_LOAD_FAST LOAD_FAST_LOAD_FAST #define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF #define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS -#define _LOAD_GLOBAL 455 -#define _LOAD_GLOBAL_BUILTINS 456 -#define _LOAD_GLOBAL_MODULE 457 +#define _LOAD_GLOBAL 457 +#define _LOAD_GLOBAL_BUILTINS 458 +#define _LOAD_GLOBAL_MODULE 459 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 458 -#define _LOAD_SMALL_INT_0 459 -#define _LOAD_SMALL_INT_1 460 -#define _LOAD_SMALL_INT_2 461 -#define _LOAD_SMALL_INT_3 462 -#define _LOAD_SPECIAL 463 +#define _LOAD_SMALL_INT 460 +#define _LOAD_SMALL_INT_0 461 +#define _LOAD_SMALL_INT_1 462 +#define _LOAD_SMALL_INT_2 463 +#define _LOAD_SMALL_INT_3 464 +#define _LOAD_SPECIAL 465 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _MAKE_CALLARGS_A_TUPLE 464 +#define _MAKE_CALLARGS_A_TUPLE 466 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_WARM 465 +#define _MAKE_WARM 467 #define _MAP_ADD MAP_ADD #define _MATCH_CLASS MATCH_CLASS #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 466 -#define _MAYBE_EXPAND_METHOD_KW 467 -#define _MONITOR_CALL 468 -#define _MONITOR_CALL_KW 469 -#define _MONITOR_JUMP_BACKWARD 470 -#define _MONITOR_RESUME 471 +#define _MAYBE_EXPAND_METHOD 468 +#define _MAYBE_EXPAND_METHOD_KW 469 +#define _MONITOR_CALL 470 +#define _MONITOR_CALL_KW 471 +#define _MONITOR_JUMP_BACKWARD 472 +#define _MONITOR_RESUME 473 #define _NOP NOP #define _POP_EXCEPT POP_EXCEPT -#define _POP_JUMP_IF_FALSE 472 -#define _POP_JUMP_IF_TRUE 473 +#define _POP_JUMP_IF_FALSE 474 +#define _POP_JUMP_IF_TRUE 475 #define _POP_TOP POP_TOP -#define _POP_TOP_LOAD_CONST_INLINE 474 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 475 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 476 +#define _POP_TOP_LOAD_CONST_INLINE 476 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 477 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 478 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 477 +#define _PUSH_FRAME 479 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 478 -#define _PY_FRAME_GENERAL 479 -#define _PY_FRAME_KW 480 -#define _QUICKEN_RESUME 481 -#define _REPLACE_WITH_TRUE 482 +#define _PUSH_NULL_CONDITIONAL 480 +#define _PY_FRAME_GENERAL 481 +#define _PY_FRAME_KW 482 +#define _QUICKEN_RESUME 483 +#define _REPLACE_WITH_TRUE 484 #define _RESUME_CHECK RESUME_CHECK #define _RETURN_GENERATOR RETURN_GENERATOR #define _RETURN_VALUE RETURN_VALUE -#define _SAVE_RETURN_OFFSET 483 -#define _SEND 484 -#define _SEND_GEN_FRAME 485 +#define _SAVE_RETURN_OFFSET 485 +#define _SEND 486 +#define _SEND_GEN_FRAME 487 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE #define _SET_UPDATE SET_UPDATE -#define _START_EXECUTOR 486 -#define _STORE_ATTR 487 -#define _STORE_ATTR_INSTANCE_VALUE 488 -#define _STORE_ATTR_SLOT 489 -#define _STORE_ATTR_WITH_HINT 490 +#define _START_EXECUTOR 488 +#define _STORE_ATTR 489 +#define _STORE_ATTR_INSTANCE_VALUE 490 +#define _STORE_ATTR_SLOT 491 +#define _STORE_ATTR_WITH_HINT 492 #define _STORE_DEREF STORE_DEREF -#define _STORE_FAST 491 -#define _STORE_FAST_0 492 -#define _STORE_FAST_1 493 -#define _STORE_FAST_2 494 -#define _STORE_FAST_3 495 -#define _STORE_FAST_4 496 -#define _STORE_FAST_5 497 -#define _STORE_FAST_6 498 -#define _STORE_FAST_7 499 +#define _STORE_FAST 493 +#define _STORE_FAST_0 494 +#define _STORE_FAST_1 495 +#define _STORE_FAST_2 496 +#define _STORE_FAST_3 497 +#define _STORE_FAST_4 498 +#define _STORE_FAST_5 499 +#define _STORE_FAST_6 500 +#define _STORE_FAST_7 501 #define _STORE_FAST_LOAD_FAST STORE_FAST_LOAD_FAST #define _STORE_FAST_STORE_FAST STORE_FAST_STORE_FAST #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 500 -#define _STORE_SUBSCR 501 -#define _STORE_SUBSCR_DICT 502 -#define _STORE_SUBSCR_LIST_INT 503 +#define _STORE_SLICE 502 +#define _STORE_SUBSCR 503 +#define _STORE_SUBSCR_DICT 504 +#define _STORE_SUBSCR_LIST_INT 505 #define _SWAP SWAP -#define _TIER2_RESUME_CHECK 504 -#define _TO_BOOL 505 +#define _TIER2_RESUME_CHECK 506 +#define _TO_BOOL 507 #define _TO_BOOL_BOOL TO_BOOL_BOOL #define _TO_BOOL_INT TO_BOOL_INT -#define _TO_BOOL_LIST 506 +#define _TO_BOOL_LIST 508 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 507 +#define _TO_BOOL_STR 509 #define _UNARY_INVERT UNARY_INVERT #define _UNARY_NEGATIVE UNARY_NEGATIVE #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 508 -#define _UNPACK_SEQUENCE_LIST 509 -#define _UNPACK_SEQUENCE_TUPLE 510 -#define _UNPACK_SEQUENCE_TWO_TUPLE 511 +#define _UNPACK_SEQUENCE 510 +#define _UNPACK_SEQUENCE_LIST 511 +#define _UNPACK_SEQUENCE_TUPLE 512 +#define _UNPACK_SEQUENCE_TWO_TUPLE 513 #define _WITH_EXCEPT_START WITH_EXCEPT_START #define _YIELD_VALUE YIELD_VALUE -#define MAX_UOP_ID 511 +#define MAX_UOP_ID 513 #ifdef __cplusplus } diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index 71378e8782b..03113cd4c96 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -74,6 +74,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_TO_BOOL_INT] = HAS_EXIT_FLAG | HAS_ESCAPES_FLAG, [_GUARD_NOS_LIST] = HAS_EXIT_FLAG, [_GUARD_TOS_LIST] = HAS_EXIT_FLAG, + [_GUARD_TOS_SLICE] = HAS_EXIT_FLAG, [_TO_BOOL_LIST] = 0, [_TO_BOOL_NONE] = HAS_EXIT_FLAG, [_GUARD_NOS_UNICODE] = HAS_EXIT_FLAG, @@ -98,6 +99,7 @@ const uint16_t _PyUop_Flags[MAX_UOP_ID+1] = { [_BINARY_SLICE] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_STORE_SLICE] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_BINARY_OP_SUBSCR_LIST_INT] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG, + [_BINARY_OP_SUBSCR_LIST_SLICE] = HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_BINARY_OP_SUBSCR_STR_INT] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG, [_GUARD_NOS_TUPLE] = HAS_EXIT_FLAG, [_GUARD_TOS_TUPLE] = HAS_EXIT_FLAG, @@ -327,6 +329,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = { [_BINARY_OP_SUBSCR_DICT] = "_BINARY_OP_SUBSCR_DICT", [_BINARY_OP_SUBSCR_INIT_CALL] = "_BINARY_OP_SUBSCR_INIT_CALL", [_BINARY_OP_SUBSCR_LIST_INT] = "_BINARY_OP_SUBSCR_LIST_INT", + [_BINARY_OP_SUBSCR_LIST_SLICE] = "_BINARY_OP_SUBSCR_LIST_SLICE", [_BINARY_OP_SUBSCR_STR_INT] = "_BINARY_OP_SUBSCR_STR_INT", [_BINARY_OP_SUBSCR_TUPLE_INT] = "_BINARY_OP_SUBSCR_TUPLE_INT", [_BINARY_OP_SUBTRACT_FLOAT] = "_BINARY_OP_SUBTRACT_FLOAT", @@ -445,6 +448,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_ID+1] = { [_GUARD_TOS_FLOAT] = "_GUARD_TOS_FLOAT", [_GUARD_TOS_INT] = "_GUARD_TOS_INT", [_GUARD_TOS_LIST] = "_GUARD_TOS_LIST", + [_GUARD_TOS_SLICE] = "_GUARD_TOS_SLICE", [_GUARD_TOS_TUPLE] = "_GUARD_TOS_TUPLE", [_GUARD_TOS_UNICODE] = "_GUARD_TOS_UNICODE", [_GUARD_TYPE_VERSION] = "_GUARD_TYPE_VERSION", @@ -714,6 +718,8 @@ int _PyUop_num_popped(int opcode, int oparg) return 0; case _GUARD_TOS_LIST: return 0; + case _GUARD_TOS_SLICE: + return 0; case _TO_BOOL_LIST: return 1; case _TO_BOOL_NONE: @@ -762,6 +768,8 @@ int _PyUop_num_popped(int opcode, int oparg) return 4; case _BINARY_OP_SUBSCR_LIST_INT: return 2; + case _BINARY_OP_SUBSCR_LIST_SLICE: + return 2; case _BINARY_OP_SUBSCR_STR_INT: return 2; case _GUARD_NOS_TUPLE: diff --git a/Include/opcode_ids.h b/Include/opcode_ids.h index d9d92b7d2c1..209103c83b3 100644 --- a/Include/opcode_ids.h +++ b/Include/opcode_ids.h @@ -141,79 +141,80 @@ extern "C" { #define BINARY_OP_SUBSCR_DICT 135 #define BINARY_OP_SUBSCR_GETITEM 136 #define BINARY_OP_SUBSCR_LIST_INT 137 -#define BINARY_OP_SUBSCR_STR_INT 138 -#define BINARY_OP_SUBSCR_TUPLE_INT 139 -#define BINARY_OP_SUBTRACT_FLOAT 140 -#define BINARY_OP_SUBTRACT_INT 141 -#define CALL_ALLOC_AND_ENTER_INIT 142 -#define CALL_BOUND_METHOD_EXACT_ARGS 143 -#define CALL_BOUND_METHOD_GENERAL 144 -#define CALL_BUILTIN_CLASS 145 -#define CALL_BUILTIN_FAST 146 -#define CALL_BUILTIN_FAST_WITH_KEYWORDS 147 -#define CALL_BUILTIN_O 148 -#define CALL_ISINSTANCE 149 -#define CALL_KW_BOUND_METHOD 150 -#define CALL_KW_NON_PY 151 -#define CALL_KW_PY 152 -#define CALL_LEN 153 -#define CALL_LIST_APPEND 154 -#define CALL_METHOD_DESCRIPTOR_FAST 155 -#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 156 -#define CALL_METHOD_DESCRIPTOR_NOARGS 157 -#define CALL_METHOD_DESCRIPTOR_O 158 -#define CALL_NON_PY_GENERAL 159 -#define CALL_PY_EXACT_ARGS 160 -#define CALL_PY_GENERAL 161 -#define CALL_STR_1 162 -#define CALL_TUPLE_1 163 -#define CALL_TYPE_1 164 -#define COMPARE_OP_FLOAT 165 -#define COMPARE_OP_INT 166 -#define COMPARE_OP_STR 167 -#define CONTAINS_OP_DICT 168 -#define CONTAINS_OP_SET 169 -#define FOR_ITER_GEN 170 -#define FOR_ITER_LIST 171 -#define FOR_ITER_RANGE 172 -#define FOR_ITER_TUPLE 173 -#define JUMP_BACKWARD_JIT 174 -#define JUMP_BACKWARD_NO_JIT 175 -#define LOAD_ATTR_CLASS 176 -#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 177 -#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 178 -#define LOAD_ATTR_INSTANCE_VALUE 179 -#define LOAD_ATTR_METHOD_LAZY_DICT 180 -#define LOAD_ATTR_METHOD_NO_DICT 181 -#define LOAD_ATTR_METHOD_WITH_VALUES 182 -#define LOAD_ATTR_MODULE 183 -#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 184 -#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 185 -#define LOAD_ATTR_PROPERTY 186 -#define LOAD_ATTR_SLOT 187 -#define LOAD_ATTR_WITH_HINT 188 -#define LOAD_CONST_IMMORTAL 189 -#define LOAD_CONST_MORTAL 190 -#define LOAD_GLOBAL_BUILTIN 191 -#define LOAD_GLOBAL_MODULE 192 -#define LOAD_SUPER_ATTR_ATTR 193 -#define LOAD_SUPER_ATTR_METHOD 194 -#define RESUME_CHECK 195 -#define SEND_GEN 196 -#define STORE_ATTR_INSTANCE_VALUE 197 -#define STORE_ATTR_SLOT 198 -#define STORE_ATTR_WITH_HINT 199 -#define STORE_SUBSCR_DICT 200 -#define STORE_SUBSCR_LIST_INT 201 -#define TO_BOOL_ALWAYS_TRUE 202 -#define TO_BOOL_BOOL 203 -#define TO_BOOL_INT 204 -#define TO_BOOL_LIST 205 -#define TO_BOOL_NONE 206 -#define TO_BOOL_STR 207 -#define UNPACK_SEQUENCE_LIST 208 -#define UNPACK_SEQUENCE_TUPLE 209 -#define UNPACK_SEQUENCE_TWO_TUPLE 210 +#define BINARY_OP_SUBSCR_LIST_SLICE 138 +#define BINARY_OP_SUBSCR_STR_INT 139 +#define BINARY_OP_SUBSCR_TUPLE_INT 140 +#define BINARY_OP_SUBTRACT_FLOAT 141 +#define BINARY_OP_SUBTRACT_INT 142 +#define CALL_ALLOC_AND_ENTER_INIT 143 +#define CALL_BOUND_METHOD_EXACT_ARGS 144 +#define CALL_BOUND_METHOD_GENERAL 145 +#define CALL_BUILTIN_CLASS 146 +#define CALL_BUILTIN_FAST 147 +#define CALL_BUILTIN_FAST_WITH_KEYWORDS 148 +#define CALL_BUILTIN_O 149 +#define CALL_ISINSTANCE 150 +#define CALL_KW_BOUND_METHOD 151 +#define CALL_KW_NON_PY 152 +#define CALL_KW_PY 153 +#define CALL_LEN 154 +#define CALL_LIST_APPEND 155 +#define CALL_METHOD_DESCRIPTOR_FAST 156 +#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 157 +#define CALL_METHOD_DESCRIPTOR_NOARGS 158 +#define CALL_METHOD_DESCRIPTOR_O 159 +#define CALL_NON_PY_GENERAL 160 +#define CALL_PY_EXACT_ARGS 161 +#define CALL_PY_GENERAL 162 +#define CALL_STR_1 163 +#define CALL_TUPLE_1 164 +#define CALL_TYPE_1 165 +#define COMPARE_OP_FLOAT 166 +#define COMPARE_OP_INT 167 +#define COMPARE_OP_STR 168 +#define CONTAINS_OP_DICT 169 +#define CONTAINS_OP_SET 170 +#define FOR_ITER_GEN 171 +#define FOR_ITER_LIST 172 +#define FOR_ITER_RANGE 173 +#define FOR_ITER_TUPLE 174 +#define JUMP_BACKWARD_JIT 175 +#define JUMP_BACKWARD_NO_JIT 176 +#define LOAD_ATTR_CLASS 177 +#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 178 +#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 179 +#define LOAD_ATTR_INSTANCE_VALUE 180 +#define LOAD_ATTR_METHOD_LAZY_DICT 181 +#define LOAD_ATTR_METHOD_NO_DICT 182 +#define LOAD_ATTR_METHOD_WITH_VALUES 183 +#define LOAD_ATTR_MODULE 184 +#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 185 +#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 186 +#define LOAD_ATTR_PROPERTY 187 +#define LOAD_ATTR_SLOT 188 +#define LOAD_ATTR_WITH_HINT 189 +#define LOAD_CONST_IMMORTAL 190 +#define LOAD_CONST_MORTAL 191 +#define LOAD_GLOBAL_BUILTIN 192 +#define LOAD_GLOBAL_MODULE 193 +#define LOAD_SUPER_ATTR_ATTR 194 +#define LOAD_SUPER_ATTR_METHOD 195 +#define RESUME_CHECK 196 +#define SEND_GEN 197 +#define STORE_ATTR_INSTANCE_VALUE 198 +#define STORE_ATTR_SLOT 199 +#define STORE_ATTR_WITH_HINT 200 +#define STORE_SUBSCR_DICT 201 +#define STORE_SUBSCR_LIST_INT 202 +#define TO_BOOL_ALWAYS_TRUE 203 +#define TO_BOOL_BOOL 204 +#define TO_BOOL_INT 205 +#define TO_BOOL_LIST 206 +#define TO_BOOL_NONE 207 +#define TO_BOOL_STR 208 +#define UNPACK_SEQUENCE_LIST 209 +#define UNPACK_SEQUENCE_TUPLE 210 +#define UNPACK_SEQUENCE_TWO_TUPLE 211 #define INSTRUMENTED_END_FOR 234 #define INSTRUMENTED_POP_ITER 235 #define INSTRUMENTED_END_SEND 236 diff --git a/Include/pyport.h b/Include/pyport.h index ebce31f1d14..3eac119bf8e 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -685,4 +685,19 @@ extern "C" { #endif +// _Py_NONSTRING: The nonstring variable attribute specifies that an object or +// member declaration with type array of char, signed char, or unsigned char, +// or pointer to such a type is intended to store character arrays that do not +// necessarily contain a terminating NUL. +// +// Usage: +// +// char name [8] _Py_NONSTRING; +#if _Py__has_attribute(nonstring) +# define _Py_NONSTRING __attribute__((nonstring)) +#else +# define _Py_NONSTRING +#endif + + #endif /* Py_PYPORT_H */ |