--- Include/internal/pycore_atomic.h +++ Include/internal/pycore_atomic.h @@ -294 +294 @@ -inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { +__declspec(noinline) static intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { @@ -332 +332 @@ -inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) { +__declspec(noinline) static int _Py_atomic_load_32bit_impl(volatile int* value, int order) { @@ -430 +430 @@ -inline intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { +__declspec(noinline) static intptr_t _Py_atomic_load_64bit_impl(volatile uintptr_t* value, int order) { @@ -468 +468 @@ -inline int _Py_atomic_load_32bit_impl(volatile int* value, int order) { +__declspec(noinline) static int _Py_atomic_load_32bit_impl(volatile int* value, int order) { --- Include/object.h +++ Include/object.h @@ -138 +138 @@ -static inline int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { +__declspec(noinline) static int _Py_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { @@ -458 +458 @@ -static inline void _Py_DECREF( +__declspec(noinline) static void _Py_DECREF( @@ -545 +545 @@ -static inline void _Py_XDECREF(PyObject *op) +__declspec(noinline) static void _Py_XDECREF(PyObject *op) --- Python/ceval.c +++ Python/ceval.c @@ -1316,0 +1317,110 @@ + +static inline void _My_DECREF( +#if defined(Py_REF_DEBUG) && !(defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000) + const char *filename, int lineno, +#endif + PyObject *op) +{ +#if defined(Py_REF_DEBUG) && defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000 + // Stable ABI for Python 3.10 built in debug mode. + _Py_DecRef(op); +#else + // Non-limited C API and limited C API for Python 3.9 and older access + // directly PyObject.ob_refcnt. +#ifdef Py_REF_DEBUG + _Py_RefTotal--; +#endif + if (--op->ob_refcnt != 0) { +#ifdef Py_REF_DEBUG + if (op->ob_refcnt < 0) { + _Py_NegativeRefcount(filename, lineno, op); + } +#endif + } + else { + _Py_Dealloc(op); + } +#endif +} +#if defined(Py_REF_DEBUG) && !(defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000) +# define My_DECREF(op) _My_DECREF(__FILE__, __LINE__, _PyObject_CAST(op)) +#else +# define My_DECREF(op) _My_DECREF(_PyObject_CAST(op)) +#endif + +static inline void _My_XDECREF(PyObject *op) +{ + if (op != NULL) { + My_DECREF(op); + } +} +#define My_XDECREF(op) _My_XDECREF(_PyObject_CAST(op)) + +#define My_CLEAR(op) \ + do { \ + PyObject *_py_tmp = _PyObject_CAST(op); \ + if (_py_tmp != NULL) { \ + (op) = NULL; \ + My_DECREF(_py_tmp); \ + } \ + } while (0) + +#define My_SETREF(op, op2) \ + do { \ + PyObject *_py_tmp = _PyObject_CAST(op); \ + (op) = (op2); \ + My_DECREF(_py_tmp); \ + } while (0) + +static inline int _My_IS_TYPE(const PyObject *ob, const PyTypeObject *type) { + // bpo-44378: Don't use Py_TYPE() since Py_TYPE() requires a non-const + // object. + return ob->ob_type == type; +} +#define My_IS_TYPE(objp, type) _My_IS_TYPE(_PyObject_CAST_CONST(objp), type) +#define MyAsyncGen_CheckExact(objp) My_IS_TYPE(objp, &PyAsyncGen_Type) +#define MyCoro_CheckExact(objp) My_IS_TYPE(objp, &PyCoro_Type) +#define MyDict_CheckExact(objp) My_IS_TYPE(objp, &PyDict_Type) +#define MyFloat_CheckExact(objp) My_IS_TYPE(objp, &PyFloat_Type) +#define MyGen_CheckExact(objp) My_IS_TYPE(objp, &PyGen_Type) +#define MyList_CheckExact(objp) My_IS_TYPE(objp, &PyList_Type) +#define MyLong_CheckExact(objp) My_IS_TYPE(objp, &PyLong_Type) +#define MyModule_CheckExact(objp) My_IS_TYPE(objp, &PyModule_Type) +#define MyTuple_CheckExact(objp) My_IS_TYPE(objp, &PyTuple_Type) +#define MyUnicode_CheckExact(objp) My_IS_TYPE(objp, &PyUnicode_Type) + +#if !defined(_MSC_VER) +#define MY_ATOMIC_LOAD_RELAXED(ATOMIC_VAL) _Py_atomic_load_relaxed(ATOMIC_VAL) +#else +static inline int _My_atomic_load_32bit_impl(volatile int* value, int order) { + long old; + switch (order) { + case _Py_memory_order_acquire: + { + do { + old = *value; + } while(_InterlockedCompareExchange_HLEAcquire((volatile long*)value, old, old) != old); + break; + } + case _Py_memory_order_release: + { + do { + old = *value; + } while(_InterlockedCompareExchange_HLERelease((volatile long*)value, old, old) != old); + break; + } + case _Py_memory_order_relaxed: + old = *value; + break; + default: + { + do { + old = *value; + } while(_InterlockedCompareExchange((volatile long*)value, old, old) != old); + break; + } + } + return old; +} +#define MY_ATOMIC_LOAD_RELAXED(ATOMIC_VAL) _My_atomic_load_32bit_impl((volatile int*)&((ATOMIC_VAL)->_value), _Py_memory_order_relaxed) +#endif @@ -1318 +1428 @@ - if (_Py_atomic_load_relaxed(eval_breaker)) { \ + if (MY_ATOMIC_LOAD_RELAXED(eval_breaker)) { \ @@ -1449 +1560 @@ - Py_XDECREF(tmp); } while (0) + My_XDECREF(tmp); } while (0) @@ -1455 +1566 @@ - Py_XDECREF(v); \ + My_XDECREF(v); \ @@ -1465 +1576 @@ - Py_XDECREF(value); \ + My_XDECREF(value); \ @@ -1474,3 +1585,3 @@ - Py_XDECREF(type); \ - Py_XDECREF(value); \ - Py_XDECREF(traceback); \ + My_XDECREF(type); \ + My_XDECREF(value); \ + My_XDECREF(traceback); \ @@ -1755 +1866 @@ - if (_Py_atomic_load_relaxed(eval_breaker)) { + if (MY_ATOMIC_LOAD_RELAXED(eval_breaker)) { @@ -1880 +1991 @@ - Py_DECREF(value); + My_DECREF(value); @@ -1935 +2046 @@ - Py_DECREF(value); + My_DECREF(value); @@ -1945 +2056 @@ - Py_DECREF(value); + My_DECREF(value); @@ -1955 +2066 @@ - Py_DECREF(value); + My_DECREF(value); @@ -1973 +2084 @@ - Py_DECREF(value); + My_DECREF(value); @@ -1984,2 +2095,2 @@ - Py_DECREF(base); - Py_DECREF(exp); + My_DECREF(base); + My_DECREF(exp); @@ -1996,2 +2107,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2008,2 +2119,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2020,2 +2131,2 @@ - Py_DECREF(dividend); - Py_DECREF(divisor); + My_DECREF(dividend); + My_DECREF(divisor); @@ -2032,2 +2143,2 @@ - Py_DECREF(dividend); - Py_DECREF(divisor); + My_DECREF(dividend); + My_DECREF(divisor); @@ -2044,2 +2155,2 @@ - if (PyUnicode_CheckExact(dividend) && ( - !PyUnicode_Check(divisor) || PyUnicode_CheckExact(divisor))) { + if (MyUnicode_CheckExact(dividend) && ( + !PyUnicode_Check(divisor) || MyUnicode_CheckExact(divisor))) { @@ -2052,2 +2163,2 @@ - Py_DECREF(divisor); - Py_DECREF(dividend); + My_DECREF(divisor); + My_DECREF(dividend); @@ -2070,2 +2181,2 @@ - if (PyUnicode_CheckExact(left) && - PyUnicode_CheckExact(right)) { + if (MyUnicode_CheckExact(left) && + MyUnicode_CheckExact(right)) { @@ -2077 +2188 @@ - Py_DECREF(left); + My_DECREF(left); @@ -2079 +2190 @@ - Py_DECREF(right); + My_DECREF(right); @@ -2090,2 +2201,2 @@ - Py_DECREF(right); - Py_DECREF(left); + My_DECREF(right); + My_DECREF(left); @@ -2102,2 +2213,2 @@ - Py_DECREF(container); - Py_DECREF(sub); + My_DECREF(container); + My_DECREF(sub); @@ -2114,2 +2225,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2126,2 +2237,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2138,2 +2249,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2150,2 +2261,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2162,2 +2273,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2175 +2286 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2187 +2298 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2198,2 +2309,2 @@ - Py_DECREF(base); - Py_DECREF(exp); + My_DECREF(base); + My_DECREF(exp); @@ -2210,2 +2321,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2222,2 +2333,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2234,2 +2345,2 @@ - Py_DECREF(dividend); - Py_DECREF(divisor); + My_DECREF(dividend); + My_DECREF(divisor); @@ -2246,2 +2357,2 @@ - Py_DECREF(dividend); - Py_DECREF(divisor); + My_DECREF(dividend); + My_DECREF(divisor); @@ -2258,2 +2369,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2270 +2381 @@ - if (PyUnicode_CheckExact(left) && PyUnicode_CheckExact(right)) { + if (MyUnicode_CheckExact(left) && MyUnicode_CheckExact(right)) { @@ -2276 +2387 @@ - Py_DECREF(left); + My_DECREF(left); @@ -2278 +2389 @@ - Py_DECREF(right); + My_DECREF(right); @@ -2289,2 +2400,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2301,2 +2412,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2313,2 +2424,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2325,2 +2436,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2337,2 +2448,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2349,2 +2460,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -2365,3 +2476,3 @@ - Py_DECREF(v); - Py_DECREF(container); - Py_DECREF(sub); + My_DECREF(v); + My_DECREF(container); + My_DECREF(sub); @@ -2380,2 +2491,2 @@ - Py_DECREF(container); - Py_DECREF(sub); + My_DECREF(container); + My_DECREF(sub); @@ -2395 +2506 @@ - Py_DECREF(value); + My_DECREF(value); @@ -2399 +2510 @@ - Py_DECREF(value); + My_DECREF(value); @@ -2402 +2513 @@ - Py_DECREF(res); + My_DECREF(res); @@ -2449 +2560 @@ - Py_DECREF(obj); + My_DECREF(obj); @@ -2461 +2572 @@ - Py_DECREF(obj); + My_DECREF(obj); @@ -2473 +2584 @@ - Py_DECREF(iter); + My_DECREF(iter); @@ -2488 +2599 @@ - if (PyAsyncGen_CheckExact(aiter)) { + if (MyAsyncGen_CheckExact(aiter)) { @@ -2520 +2631 @@ - Py_DECREF(next_iter); + My_DECREF(next_iter); @@ -2523 +2634 @@ - Py_DECREF(next_iter); + My_DECREF(next_iter); @@ -2547 +2658 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -2549 +2660 @@ - if (iter != NULL && PyCoro_CheckExact(iter)) { + if (iter != NULL && MyCoro_CheckExact(iter)) { @@ -2555,2 +2666,2 @@ - Py_DECREF(yf); - Py_CLEAR(iter); + My_DECREF(yf); + My_CLEAR(iter); @@ -2602 +2713 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2610 +2721 @@ - Py_DECREF(receiver); + My_DECREF(receiver); @@ -2630 +2741 @@ - Py_DECREF(retval); + My_DECREF(retval); @@ -2644 +2755 @@ - Py_DECREF(none); + My_DECREF(none); @@ -2684,3 +2795,3 @@ - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); + My_XDECREF(type); + My_XDECREF(value); + My_XDECREF(traceback); @@ -2714 +2825 @@ - Py_DECREF(exc); + My_DECREF(exc); @@ -2716 +2827 @@ - Py_DECREF(POP()); + My_DECREF(POP()); @@ -2739 +2850 @@ - if (PyDict_CheckExact(f->f_builtins)) { + if (MyDict_CheckExact(f->f_builtins)) { @@ -2774 +2885 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2777 +2888 @@ - if (PyDict_CheckExact(ns)) + if (MyDict_CheckExact(ns)) @@ -2781 +2892 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2809 +2920 @@ - if (PyTuple_CheckExact(seq) && + if (MyTuple_CheckExact(seq) && @@ -2817 +2928 @@ - } else if (PyList_CheckExact(seq) && + } else if (MyList_CheckExact(seq) && @@ -2830 +2941 @@ - Py_DECREF(seq); + My_DECREF(seq); @@ -2833 +2944 @@ - Py_DECREF(seq); + My_DECREF(seq); @@ -2845 +2956 @@ - Py_DECREF(seq); + My_DECREF(seq); @@ -2848 +2959 @@ - Py_DECREF(seq); + My_DECREF(seq); @@ -2859,2 +2970,2 @@ - Py_DECREF(v); - Py_DECREF(owner); + My_DECREF(v); + My_DECREF(owner); @@ -2871 +2982 @@ - Py_DECREF(owner); + My_DECREF(owner); @@ -2882 +2993 @@ - Py_DECREF(v); + My_DECREF(v); @@ -2911 +3022 @@ - if (PyDict_CheckExact(locals)) { + if (MyDict_CheckExact(locals)) { @@ -2937 +3048 @@ - if (PyDict_CheckExact(f->f_builtins)) { + if (MyDict_CheckExact(f->f_builtins)) { @@ -2969,2 +3080,2 @@ - if (PyDict_CheckExact(f->f_globals) - && PyDict_CheckExact(f->f_builtins)) + if (MyDict_CheckExact(f->f_globals) + && MyDict_CheckExact(f->f_builtins)) @@ -3071 +3182 @@ - Py_DECREF(oldobj); + My_DECREF(oldobj); @@ -3093 +3204 @@ - if (PyDict_CheckExact(locals)) { + if (MyDict_CheckExact(locals)) { @@ -3141 +3252 @@ - Py_XDECREF(oldobj); + My_XDECREF(oldobj); @@ -3152 +3263 @@ - Py_DECREF(empty); + My_DECREF(empty); @@ -3157 +3268 @@ - Py_DECREF(item); + My_DECREF(item); @@ -3190 +3301 @@ - Py_DECREF(list); + My_DECREF(list); @@ -3211 +3322 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -3214,2 +3325,2 @@ - Py_DECREF(none_val); - Py_DECREF(iterable); + My_DECREF(none_val); + My_DECREF(iterable); @@ -3223 +3334 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -3240 +3351 @@ - Py_DECREF(item); + My_DECREF(item); @@ -3244 +3355 @@ - Py_DECREF(set); + My_DECREF(set); @@ -3262 +3373 @@ - Py_DECREF(map); + My_DECREF(map); @@ -3268,2 +3379,2 @@ - Py_DECREF(POP()); - Py_DECREF(POP()); + My_DECREF(POP()); + My_DECREF(POP()); @@ -3285 +3396 @@ - if (PyDict_CheckExact(f->f_locals)) { + if (MyDict_CheckExact(f->f_locals)) { @@ -3299 +3410 @@ - Py_DECREF(ann_dict); + My_DECREF(ann_dict); @@ -3322 +3433 @@ - Py_DECREF(ann_dict); + My_DECREF(ann_dict); @@ -3328 +3439 @@ - Py_DECREF(ann_dict); + My_DECREF(ann_dict); @@ -3338 +3449 @@ - if (!PyTuple_CheckExact(keys) || + if (!MyTuple_CheckExact(keys) || @@ -3354 +3465 @@ - Py_DECREF(map); + My_DECREF(map); @@ -3359 +3470 @@ - Py_DECREF(POP()); + My_DECREF(POP()); @@ -3361 +3472 @@ - Py_DECREF(POP()); + My_DECREF(POP()); @@ -3376 +3487 @@ - Py_DECREF(update); + My_DECREF(update); @@ -3379 +3490 @@ - Py_DECREF(update); + My_DECREF(update); @@ -3389 +3500 @@ - Py_DECREF(update); + My_DECREF(update); @@ -3392 +3503 @@ - Py_DECREF(update); + My_DECREF(update); @@ -3406,2 +3517,2 @@ - Py_DECREF(value); - Py_DECREF(key); + My_DECREF(value); + My_DECREF(key); @@ -3446 +3557 @@ - Py_DECREF(owner); + My_DECREF(owner); @@ -3458 +3569 @@ - if (dict != NULL && PyDict_CheckExact(dict)) { + if (dict != NULL && MyDict_CheckExact(dict)) { @@ -3477,2 +3588,2 @@ - Py_DECREF(owner); - Py_DECREF(dict); + My_DECREF(owner); + My_DECREF(dict); @@ -3486 +3597 @@ - Py_DECREF(dict); + My_DECREF(dict); @@ -3490 +3601 @@ - // There is no dict, or __dict__ doesn't satisfy PyDict_CheckExact. + // There is no dict, or __dict__ doesn't satisfy MyDict_CheckExact. @@ -3508 +3619 @@ - Py_DECREF(owner); + My_DECREF(owner); @@ -3540 +3651 @@ - Py_DECREF(owner); + My_DECREF(owner); @@ -3557 +3668 @@ - if (dict != NULL && PyDict_CheckExact(dict)) { + if (dict != NULL && MyDict_CheckExact(dict)) { @@ -3564,2 +3675,2 @@ - Py_DECREF(dict); - Py_DECREF(owner); + My_DECREF(dict); + My_DECREF(owner); @@ -3585 +3696 @@ - Py_DECREF(dict); + My_DECREF(dict); @@ -3587 +3698 @@ - // There is no dict, or __dict__ doesn't satisfy PyDict_CheckExact. + // There is no dict, or __dict__ doesn't satisfy MyDict_CheckExact. @@ -3601 +3712 @@ - Py_DECREF(owner); + My_DECREF(owner); @@ -3614,2 +3725,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3630,2 +3741,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3641,2 +3752,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3668,2 +3779,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3678,2 +3789,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3684,2 +3795,2 @@ - Py_DECREF(left); - Py_DECREF(right); + My_DECREF(left); + My_DECREF(right); @@ -3704,2 +3815,2 @@ - Py_DECREF(level); - Py_DECREF(fromlist); + My_DECREF(level); + My_DECREF(fromlist); @@ -3716 +3827 @@ - Py_DECREF(from); + My_DECREF(from); @@ -3724 +3835 @@ - Py_DECREF(from); + My_DECREF(from); @@ -3729 +3840 @@ - Py_DECREF(from); + My_DECREF(from); @@ -3756 +3867 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3760 +3871 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3765 +3876 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3780 +3891 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3784 +3895 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3789 +3900 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3805 +3916 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3815 +3926 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3829 +3940 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3842 +3953 @@ - Py_DECREF(cond); + My_DECREF(cond); @@ -3878 +3989 @@ - Py_DECREF(names); + My_DECREF(names); @@ -3882 +3993 @@ - Py_DECREF(subject); + My_DECREF(subject); @@ -3888 +3999 @@ - Py_DECREF(type); + My_DECREF(type); @@ -3997 +4108 @@ - Py_XDECREF(rest); + My_XDECREF(rest); @@ -4005 +4116 @@ - Py_DECREF(rest); + My_DECREF(rest); @@ -4009 +4120 @@ - Py_DECREF(keys); + My_DECREF(keys); @@ -4018 +4129 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -4031 +4142 @@ - if (PyCoro_CheckExact(iterable)) { + if (MyCoro_CheckExact(iterable)) { @@ -4036 +4147 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -4044 +4155 @@ - else if (!PyGen_CheckExact(iterable)) { + else if (!MyGen_CheckExact(iterable)) { @@ -4047 +4158 @@ - Py_DECREF(iterable); + My_DECREF(iterable); @@ -4078 +4189 @@ - Py_DECREF(iter); + My_DECREF(iter); @@ -4100 +4211 @@ - Py_DECREF(enter); + My_DECREF(enter); @@ -4104 +4215 @@ - Py_DECREF(mgr); + My_DECREF(mgr); @@ -4106 +4217 @@ - Py_DECREF(enter); + My_DECREF(enter); @@ -4135 +4246 @@ - Py_DECREF(enter); + My_DECREF(enter); @@ -4139 +4250 @@ - Py_DECREF(mgr); + My_DECREF(mgr); @@ -4141 +4252 @@ - Py_DECREF(enter); + My_DECREF(enter); @@ -4212 +4323 @@ - Py_DECREF(obj); + My_DECREF(obj); @@ -4293 +4404 @@ - Py_DECREF(names); + My_DECREF(names); @@ -4307 +4418 @@ - if (!PyDict_CheckExact(kwargs)) { + if (!MyDict_CheckExact(kwargs)) { @@ -4312 +4423 @@ - Py_DECREF(d); + My_DECREF(d); @@ -4314 +4425 @@ - Py_DECREF(kwargs); + My_DECREF(kwargs); @@ -4317 +4428 @@ - Py_DECREF(kwargs); + My_DECREF(kwargs); @@ -4324 +4435 @@ - if (!PyTuple_CheckExact(callargs)) { + if (!MyTuple_CheckExact(callargs)) { @@ -4326 +4437 @@ - Py_DECREF(callargs); + My_DECREF(callargs); @@ -4329 +4440 @@ - Py_SETREF(callargs, PySequence_Tuple(callargs)); + My_SETREF(callargs, PySequence_Tuple(callargs)); @@ -4337,3 +4448,3 @@ - Py_DECREF(func); - Py_DECREF(callargs); - Py_XDECREF(kwargs); + My_DECREF(func); + My_DECREF(callargs); + My_XDECREF(kwargs); @@ -4355,2 +4466,2 @@ - Py_DECREF(codeobj); - Py_DECREF(qualname); + My_DECREF(codeobj); + My_DECREF(qualname); @@ -4391,3 +4502,3 @@ - Py_DECREF(start); - Py_DECREF(stop); - Py_XDECREF(step); + My_DECREF(start); + My_DECREF(stop); + My_XDECREF(step); @@ -4430 +4541 @@ - Py_DECREF(value); + My_DECREF(value); @@ -4432 +4543 @@ - Py_XDECREF(fmt_spec); + My_XDECREF(fmt_spec); @@ -4443 +4554 @@ - if (PyUnicode_CheckExact(value) && fmt_spec == NULL) { + if (MyUnicode_CheckExact(value) && fmt_spec == NULL) { @@ -4449,2 +4560,2 @@ - Py_DECREF(value); - Py_XDECREF(fmt_spec); + My_DECREF(value); + My_XDECREF(fmt_spec); @@ -4574 +4685 @@ - Py_XDECREF(o); + My_XDECREF(o); @@ -4583 +4694 @@ - Py_CLEAR(retval); + My_CLEAR(retval); @@ -4589 +4700 @@ - Py_CLEAR(retval); + My_CLEAR(retval);