Further SET_LINENO reomval fixes. See comments in patch #587933.
Use a slightly different strategy to determine when not to call the line
trace function. This removes the need for the RETURN_NONE opcode, so
that's gone again. Update docs and comments to match.
Thanks to Neal and Armin!
Also add a test suite. This should have come with the original patch...
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index 567c0ee..7bdd239 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -27,7 +27,8 @@
3 LOAD_FAST 0 (alist)
6 CALL_FUNCTION 1
9 RETURN_VALUE
- 10 RETURN_NONE
+ 10 LOAD_CONST 0 (None)
+ 13 RETURN_VALUE
\end{verbatim}
(The ``2'' is a line number).
@@ -401,14 +402,6 @@
Returns with TOS to the caller of the function.
\end{opcodedesc}
-\begin{opcodedesc}{RETURN_NONE}{}
-Returns \constant{None} to the caller of the function. This opcode is
-generated as the last opcode of every function and only then, for
-reasons to do with tracing support. See the comments in the function
-\cfunction{maybe_call_line_trace} in \file{Python/ceval.c} for the
-gory details. \versionadded{2.3}.
-\end{opcodedesc}
-
\begin{opcodedesc}{YIELD_VALUE}{}
Pops \code{TOS} and yields it from a generator.
\end{opcodedesc}
diff --git a/Doc/whatsnew/whatsnew23.tex b/Doc/whatsnew/whatsnew23.tex
index a971791..ff16de1 100644
--- a/Doc/whatsnew/whatsnew23.tex
+++ b/Doc/whatsnew/whatsnew23.tex
@@ -1225,11 +1225,6 @@
This will have the added effect of making the code work as desired
under ``python -O'' in earlier versions of Python.
-To make tracing work as expected, it was found necessary to add a new
-opcode, \cdata{RETURN_NONE}, to the VM. If you want to know why, read
-the comments in the function \cfunction{maybe_call_line_trace} in
-\file{Python/ceval.c}.
-
\end{itemize}