Skip to content

Commit

Permalink
pythongh-118414: Fix assertion in YIELD_VALUE when tracing lines or i…
Browse files Browse the repository at this point in the history
…nstrs (python#118683)
  • Loading branch information
gaogaotiantian authored May 7, 2024
1 parent b2cd54a commit 0d91488
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 3 deletions.
11 changes: 11 additions & 0 deletions Lib/test/test_monitoring.py
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,17 @@ def func2():

self.check_lines(func2, [1,2,3,4,5,6])

def test_generator_with_line(self):

def f():
def a():
yield
def b():
yield from a()
next(b())

self.check_lines(f, [1,3,5,4,2,4])

class TestDisable(MonitoringTestBase, unittest.TestCase):

def gen(self, cond):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add instrumented opcodes to YIELD_VALUE assertion for tracing cases.
4 changes: 3 additions & 1 deletion Python/bytecodes.c
Original file line number Diff line number Diff line change
Expand Up @@ -1121,7 +1121,9 @@ dummy_func(
/* We don't know which of these is relevant here, so keep them equal */
assert(INLINE_CACHE_ENTRIES_SEND == INLINE_CACHE_ENTRIES_FOR_ITER);
#if TIER_ONE
assert(_PyOpcode_Deopt[frame->instr_ptr->op.code] == SEND ||
assert(frame->instr_ptr->op.code == INSTRUMENTED_LINE ||
frame->instr_ptr->op.code == INSTRUMENTED_INSTRUCTION ||
_PyOpcode_Deopt[frame->instr_ptr->op.code] == SEND ||
_PyOpcode_Deopt[frame->instr_ptr->op.code] == FOR_ITER ||
_PyOpcode_Deopt[frame->instr_ptr->op.code] == INTERPRETER_EXIT ||
_PyOpcode_Deopt[frame->instr_ptr->op.code] == ENTER_EXECUTOR);
Expand Down
4 changes: 3 additions & 1 deletion Python/executor_cases.c.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Python/generated_cases.c.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 0d91488

Please sign in to comment.