Skip to content

Commit 0dfa2fd

Browse files
generatedunixname1734921407115435meta-codesync[bot]
authored andcommitted
Import upstream Github python/cpython ref 'main'
Summary: Imported python/cpython `3.15.0a5+` from upstream rev [`a2495ff`](https://www.github.com/python/cpython/commit/a2495ff1e7b370c26128aa41298edb9ff06b5666) (committed 2026-02-07 03:11:58+00:00). # Commit Info Base: (`3.15.0a5+`) - [`957f9fe`](https://www.github.com/python/cpython/commit/957f9fe162398fceeaa9ddba8b40046b8a03176d) (commit date: 2026-02-05 20:37:05+00:00) Imported: (`3.15.0a5+`) - [`a2495ff`](https://www.github.com/python/cpython/commit/a2495ff1e7b370c26128aa41298edb9ff06b5666) (commit date: 2026-02-07 03:11:58+00:00) # Files added ``` Lib/test/test_free_threading/test_frame.py Misc/NEWS.d/next/Core_and_Builtins/2026-01-29-16-57-11.gh-issue-139103.icXIEQ.rst Misc/NEWS.d/next/Core_and_Builtins/2026-02-03-17-08-13.gh-issue-144446.db5619.rst Misc/NEWS.d/next/Core_and_Builtins/2026-02-05-13-30-00.gh-issue-144513.IjSTd7.rst Misc/NEWS.d/next/Core_and_Builtins/2026-02-06-17-59-47.gh-issue-144549.5BhPlY.rst Misc/NEWS.d/next/Library/2025-12-28-15-55-53.gh-issue-101178.26jYPs.rst Misc/NEWS.d/next/Library/2026-01-20-20-54-46.gh-issue-143658.v8i1jE.rst Misc/NEWS.d/next/Library/2026-02-05-17-15-31.gh-issue-144493.XuxwVu.rst ``` Differential Revision: D92599508 fbshipit-source-id: b703f05bc3e6e80f59fb752e2ffa0971162d4de7
1 parent 6677d06 commit 0dfa2fd

2 files changed

Lines changed: 9 additions & 26 deletions

File tree

cinderx/Interpreter/3.15/Includes/generated_cases.c.h

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9378,44 +9378,27 @@
93789378
self_or_null = &stack_pointer[0];
93799379
PyObject *name = GETITEM(FRAME_CO_NAMES, oparg >> 1);
93809380
if (oparg & 1) {
9381-
_PyCStackRef method;
93829381
_PyFrame_SetStackPointer(frame, stack_pointer);
9383-
_PyThreadState_PushCStackRef(tstate, &method);
9384-
int is_meth = _PyObject_GetMethodStackRef(tstate, PyStackRef_AsPyObjectBorrow(owner), name, &method.ref);
9382+
attr = _Py_LoadAttr_StackRefSteal(tstate, owner, name, self_or_null);
93859383
stack_pointer = _PyFrame_GetStackPointer(frame);
9386-
if (is_meth) {
9387-
assert(!PyStackRef_IsNull(method.ref));
9388-
self_or_null[0] = owner;
9389-
attr = _PyThreadState_PopCStackRefSteal(tstate, &method);
9390-
}
9391-
else {
9392-
stack_pointer += -1;
9393-
ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
9394-
_PyFrame_SetStackPointer(frame, stack_pointer);
9395-
PyStackRef_CLOSE(owner);
9396-
stack_pointer = _PyFrame_GetStackPointer(frame);
9397-
self_or_null[0] = PyStackRef_NULL;
9398-
attr = _PyThreadState_PopCStackRefSteal(tstate, &method);
9399-
if (PyStackRef_IsNull(attr)) {
9400-
JUMP_TO_LABEL(error);
9401-
}
9402-
stack_pointer += 1;
9384+
if (PyStackRef_IsNull(attr)) {
9385+
JUMP_TO_LABEL(pop_1_error);
94039386
}
94049387
}
94059388
else {
94069389
_PyFrame_SetStackPointer(frame, stack_pointer);
9407-
PyObject *attr_o = PyObject_GetAttr(PyStackRef_AsPyObjectBorrow(owner), name);
9390+
attr = _PyObject_GetAttrStackRef(PyStackRef_AsPyObjectBorrow(owner), name);
94089391
stack_pointer = _PyFrame_GetStackPointer(frame);
9409-
stack_pointer += -1;
9392+
stack_pointer[-1] = attr;
9393+
stack_pointer += (oparg&1);
94109394
ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
94119395
_PyFrame_SetStackPointer(frame, stack_pointer);
94129396
PyStackRef_CLOSE(owner);
94139397
stack_pointer = _PyFrame_GetStackPointer(frame);
9414-
if (attr_o == NULL) {
9398+
if (PyStackRef_IsNull(attr)) {
94159399
JUMP_TO_LABEL(error);
94169400
}
9417-
attr = PyStackRef_FromPyObjectSteal(attr_o);
9418-
stack_pointer += 1;
9401+
stack_pointer += -(oparg&1);
94199402
}
94209403
}
94219404
stack_pointer[-1] = attr;

cinderx/UpstreamBorrow/borrowed-3.15.gen_cached.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2645,7 +2645,7 @@ take_ownership(PyFrameObject *f, _PyInterpreterFrame *frame)
26452645
_PyFrame_Copy(frame, new_frame);
26462646
// _PyFrame_Copy takes the reference to the executable,
26472647
// so we need to restore it.
2648-
frame->f_executable = PyStackRef_DUP(new_frame->f_executable);
2648+
new_frame->f_executable = PyStackRef_DUP(new_frame->f_executable);
26492649
f->f_frame = new_frame;
26502650
new_frame->owner = FRAME_OWNED_BY_FRAME_OBJECT;
26512651
if (_PyFrame_IsIncomplete(new_frame)) {

0 commit comments

Comments
 (0)