Skip to content

Commit 75008cf

Browse files
author
Git for Windows Build Agent
committed
Update 1 package
mingw-w64-i686-python (3.14.4-3 -> 3.14.5-1) Signed-off-by: Git for Windows Build Agent <ci@git-for-windows.build>
1 parent 4f54cfd commit 75008cf

199 files changed

Lines changed: 2603 additions & 704 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

mingw32/bin/libpython3.14.dll

-5 KB
Binary file not shown.

mingw32/bin/libpython3.dll

0 Bytes
Binary file not shown.

mingw32/bin/python.exe

0 Bytes
Binary file not shown.

mingw32/bin/python3.14.exe

0 Bytes
Binary file not shown.

mingw32/bin/python3.14w.exe

0 Bytes
Binary file not shown.

mingw32/bin/python3.exe

0 Bytes
Binary file not shown.

mingw32/bin/python3w.exe

0 Bytes
Binary file not shown.

mingw32/bin/pythonw.exe

0 Bytes
Binary file not shown.

mingw32/include/python3.14/internal/pycore_dict.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ _PyDict_NotifyEvent(PyInterpreterState *interp,
286286
PyObject *value)
287287
{
288288
assert(Py_REFCNT((PyObject*)mp) > 0);
289-
int watcher_bits = mp->_ma_watcher_tag & DICT_WATCHER_MASK;
289+
int watcher_bits = FT_ATOMIC_LOAD_UINT64_ACQUIRE(mp->_ma_watcher_tag) & DICT_WATCHER_MASK;
290290
if (watcher_bits) {
291291
RARE_EVENT_STAT_INC(watched_dict_modification);
292292
_PyDict_SendEvent(watcher_bits, event, mp, key, value);
@@ -362,7 +362,7 @@ PyDictObject *_PyObject_MaterializeManagedDict_LockHeld(PyObject *);
362362
static inline Py_ssize_t
363363
_PyDict_UniqueId(PyDictObject *mp)
364364
{
365-
return (Py_ssize_t)(mp->_ma_watcher_tag >> DICT_UNIQUE_ID_SHIFT);
365+
return (Py_ssize_t)(FT_ATOMIC_LOAD_UINT64_RELAXED(mp->_ma_watcher_tag) >> DICT_UNIQUE_ID_SHIFT);
366366
}
367367

368368
static inline void

mingw32/include/python3.14/internal/pycore_gc.h

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,6 @@ static inline void _PyObject_GC_SET_SHARED(PyObject *op) {
118118
/* Bit 1 is set when the object is in generation which is GCed currently. */
119119
#define _PyGC_PREV_MASK_COLLECTING ((uintptr_t)2)
120120

121-
/* Bit 0 in _gc_next is the old space bit.
122-
* It is set as follows:
123-
* Young: gcstate->visited_space
124-
* old[0]: 0
125-
* old[1]: 1
126-
* permanent: 0
127-
*
128-
* During a collection all objects handled should have the bit set to
129-
* gcstate->visited_space, as objects are moved from the young gen
130-
* and the increment into old[gcstate->visited_space].
131-
* When object are moved from the pending space, old[gcstate->visited_space^1]
132-
* into the increment, the old space bit is flipped.
133-
*/
134-
#define _PyGC_NEXT_MASK_OLD_SPACE_1 1
135-
136121
#define _PyGC_PREV_SHIFT 2
137122
#define _PyGC_PREV_MASK (((uintptr_t) -1) << _PyGC_PREV_SHIFT)
138123

@@ -159,13 +144,11 @@ typedef enum {
159144
// Lowest bit of _gc_next is used for flags only in GC.
160145
// But it is always 0 for normal code.
161146
static inline PyGC_Head* _PyGCHead_NEXT(PyGC_Head *gc) {
162-
uintptr_t next = gc->_gc_next & _PyGC_PREV_MASK;
147+
uintptr_t next = gc->_gc_next;
163148
return (PyGC_Head*)next;
164149
}
165150
static inline void _PyGCHead_SET_NEXT(PyGC_Head *gc, PyGC_Head *next) {
166-
uintptr_t unext = (uintptr_t)next;
167-
assert((unext & ~_PyGC_PREV_MASK) == 0);
168-
gc->_gc_next = (gc->_gc_next & ~_PyGC_PREV_MASK) | unext;
151+
gc->_gc_next = (uintptr_t)next;
169152
}
170153

171154
// Lowest two bits of _gc_prev is used for _PyGC_PREV_MASK_* flags.
@@ -207,10 +190,6 @@ static inline void _PyGC_CLEAR_FINALIZED(PyObject *op) {
207190

208191
extern void _Py_ScheduleGC(PyThreadState *tstate);
209192

210-
#ifndef Py_GIL_DISABLED
211-
extern void _Py_TriggerGC(struct _gc_runtime_state *gcstate);
212-
#endif
213-
214193

215194
/* Tell the GC to track this object.
216195
*
@@ -220,7 +199,7 @@ extern void _Py_TriggerGC(struct _gc_runtime_state *gcstate);
220199
* ob_traverse method.
221200
*
222201
* Internal note: interp->gc.generation0->_gc_prev doesn't have any bit flags
223-
* because it's not object header. So we don't use _PyGCHead_PREV() and
202+
* because it's not an object header. So we don't use _PyGCHead_PREV() and
224203
* _PyGCHead_SET_PREV() for it to avoid unnecessary bitwise operations.
225204
*
226205
* See also the public PyObject_GC_Track() function.
@@ -245,18 +224,13 @@ static inline void _PyObject_GC_TRACK(
245224
filename, lineno, __func__);
246225

247226
struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
248-
PyGC_Head *generation0 = &gcstate->young.head;
227+
PyGC_Head *generation0 = gcstate->generation0;
249228
PyGC_Head *last = (PyGC_Head*)(generation0->_gc_prev);
250229
_PyGCHead_SET_NEXT(last, gc);
251230
_PyGCHead_SET_PREV(gc, last);
252-
uintptr_t not_visited = 1 ^ gcstate->visited_space;
253-
gc->_gc_next = ((uintptr_t)generation0) | not_visited;
231+
_PyGCHead_SET_NEXT(gc, generation0);
254232
generation0->_gc_prev = (uintptr_t)gc;
255-
gcstate->young.count++; /* number of tracked GC objects */
256233
gcstate->heap_size++;
257-
if (gcstate->young.count > gcstate->young.threshold) {
258-
_Py_TriggerGC(gcstate);
259-
}
260234
#endif
261235
}
262236

@@ -292,9 +266,6 @@ static inline void _PyObject_GC_UNTRACK(
292266
gc->_gc_next = 0;
293267
gc->_gc_prev &= _PyGC_PREV_MASK_FINALIZED;
294268
struct _gc_runtime_state *gcstate = &_PyInterpreterState_GET()->gc;
295-
if (gcstate->young.count > 0) {
296-
gcstate->young.count--;
297-
}
298269
gcstate->heap_size--;
299270
#endif
300271
}

0 commit comments

Comments
 (0)