8000 Post merge cleanup · python/cpython@f6a6457 · GitHub
[go: up one dir, main page]

Skip to content

Commit f6a6457

Browse files
committed
Post merge cleanup
1 parent 9446325 commit f6a6457

File tree

4 files changed

+6
-21
lines changed

4 files changed

+6
-21
lines changed

Objects/genobject.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -221,12 +221,7 @@ gen_send_ex2(PyGenObject *gen, PyObject *arg, PyObject **presult,
221221
result = _PyEval_EvalFrame(tstate, frame, exc);
222222
assert(tstate->exc_info == prev_exc_info);
223223
assert(gen->gi_exc_state.previous_item == NULL);
224-
if (gen->gi_frame_state == FRAME_EXECUTING) {
225-
gen->gi_frame_state = FRAME_COMPLETED;
226-
}
227-
/* Don't keep the reference to previous any longer than necessary. It
228-
* may keep a chain of frames alive or it could create a reference
229-
* cycle. */
224+
assert(gen->gi_frame_state != FRAME_EXECUTING);
230225
assert(frame->previous == NULL);
231226

232227
/* If the generator just returned (as opposed to yielding), signal

Python/bytecodes.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -764,11 +764,6 @@ dummy_func(
764764
TRACE_FUNCTION_EXIT();
765765
DTRACE_FUNCTION_EXIT();
766766
_Py_LeaveRecursiveCallPy(tstate);
767-
if (frame->owner == FRAME_OWNED_BY_GENERATOR) {
768-
PyGenObject *gen = _PyFrame_GetGenerator(frame);
769-
tstate->exc_info = gen->gi_exc_state.previous_item;
770-
gen->gi_exc_state.previous_item = NULL;
771-
}
772767
assert(frame != &entry_frame);
773768
frame = cframe.current_frame = pop_frame(tstate, frame);
774769
_PyFrame_StackPush(frame, retval);
@@ -981,7 +976,9 @@ dummy_func(
981976
tstate->exc_info = gen->gi_exc_state.previous_item;
982977
gen->gi_exc_state.previous_item = NULL;
983978
_Py_LeaveRecursiveCallPy(tstate);
979+
_PyInterpreterFrame *gen_frame = frame;
984980
frame = cframe.current_frame = frame->previous;
981+
gen_frame->previous = NULL;
985982
frame->prev_instr -= frame->yield_offset;
986983
_PyFrame_StackPush(frame, retval);
987984
goto resume_frame;

Python/ceval.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
10671067
_PyCode_CODE(tstate->interp->interpreter_trampoline);
10681068
entry_frame.stacktop = 0;
10691069
entry_frame.owner = FRAME_OWNED_BY_CSTACK;
1070+
entry_frame.yield_offset = 0;
10701071
/* Push frame */
10711072
entry_frame.previous = prev_cframe->current_frame;
10721073
frame->previous = &entry_frame;
@@ -1372,11 +1373,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
13721373
_Py_LeaveRecursiveCallPy(tstate);
13731374
assert(frame != &entry_frame);
13741375
frame = cframe.current_frame = pop_frame(tstate, frame);
1375-
if (frame->owner == FRAME_OWNED_BY_GENERATOR) {
1376-
PyGenObject *gen = _PyFrame_GetGenerator(frame);
1377-
tstate->exc_info = gen->gi_exc_state.previous_item;
1378-
gen->gi_exc_state.previous_item = NULL;
1379-
}
13801376
if (frame == &entry_frame) {
13811377
/* Restore previous cframe and exit */
13821378
tstate->cframe = cframe.previous;

Python/generated_cases.c.h

Lines changed: 2 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
0