develooper Front page | perl.perl5.changes | Postings from September 2019

[perl.git] branch blead updated. v5.31.3-204-g20ef288c53

From:
Max Maischein
Date:
September 20, 2019 21:41
Subject:
[perl.git] branch blead updated. v5.31.3-204-g20ef288c53
Message ID:
E1iBQeQ-0002KJ-3C@git.dc.perl.space
In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/20ef288c535a81f9e6186650f180b3c1dccba151?hp=e52e9867e0bd6d98a671cdfbdd7332fe3a22db61>

- Log -----------------------------------------------------------------
commit 20ef288c535a81f9e6186650f180b3c1dccba151
Author: Max Maischein <corion@corion.net>
Date:   Fri Sep 20 23:00:04 2019 +0200

    Revert "[MERGE] add+use PL_curstackinfo->si_cxsubix field"
    
    This reverts commit d2cd363728088adada85312725ac9d96c29659be, reversing
    changes made to 068b48acd4bdf9e7c69b87f4ba838bdff035053c.
    
    This change breaks installing Test::Deep:
    
    ...
    not ok 37 - Test 'isa eq' completed
    ok 38 - Test 'isa eq' no premature diagnostication
    ...

commit 7f6fc9b2e02ce976065f2006e85f5ed2ff76bd12
Author: Max Maischein <corion@corion.net>
Date:   Fri Sep 20 19:18:03 2019 +0200

    add new release to perlhist

commit 2af5490787e780ba8f7eb71a046b0ec24548a53a
Author: Max Maischein <corion@corion.net>
Date:   Fri Sep 20 19:08:57 2019 +0200

    Update perldelta for 5.31.4

commit 218f5fa9e51e49fe27bedd252e00b4f0e821adb2
Author: Max Maischein <corion@corion.net>
Date:   Fri Sep 20 19:03:25 2019 +0200

    Update INSTALL file

commit 150243c25c828e07f99068a17cc7d8364ed8c849
Author: Max Maischein <corion@corion.net>
Date:   Fri Sep 20 18:43:20 2019 +0200

    Update Module::CoreList for 5.31.4

-----------------------------------------------------------------------

Summary of changes:
 INSTALL                                           |   4 +-
 cop.h                                             |   5 -
 dist/Module-CoreList/Changes                      |   3 +
 dist/Module-CoreList/lib/Module/CoreList.pm       | 108 +++++++-
 dist/Module-CoreList/lib/Module/CoreList/Utils.pm |   2 +-
 embed.fnc                                         |   1 -
 embed.h                                           |   1 -
 ext/B/t/optree_concise.t                          |  12 +-
 ext/B/t/optree_constants.t                        |   8 +-
 ext/B/t/optree_misc.t                             |   4 +-
 ext/B/t/optree_samples.t                          |   8 +-
 ext/B/t/optree_sort.t                             |  16 +-
 ext/B/t/optree_varinit.t                          |  40 +--
 ext/Devel-Peek/t/Peek.t                           |   2 +-
 inline.h                                          |  26 --
 op.c                                              |   3 +-
 op.h                                              |   2 +-
 pod/perldelta.pod                                 | 318 ++++------------------
 pod/perlhist.pod                                  |   1 +
 pp_ctl.c                                          |  19 +-
 proto.h                                           |   4 -
 scope.c                                           |   1 -
 sv.c                                              |   1 -
 t/perf/benchmarks                                 |   6 -
 24 files changed, 215 insertions(+), 380 deletions(-)

diff --git a/INSTALL b/INSTALL
index e9599a6223..4d1d6ff2f1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -764,7 +764,7 @@ run-time methods: $PERLLIB, $PERL5LIB, -I, use lib, etc.
 =item default_inc_excludes_dot
 
 Since version 5.26.0, default perl builds no longer includes C<'.'> as the
-last element of @INC. The old behaviour can restored using 
+last element of @INC. The old behaviour can restored using
 
 	sh Configure -Udefault_inc_excludes_dot
 
@@ -2440,7 +2440,7 @@ Perl 5.31.4 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
-(e.g.  5.X.Y) to another similar minor version (e.g. 5.X.(Y+1))) without
+(e.g.  5.31.3) to another similar minor version (e.g. 5.31.4))) without
 re-compiling all of your extensions.  You can also safely leave the old
 version around in case the new version causes you problems for some
 reason.
diff --git a/cop.h b/cop.h
index f9bf85222d..00396f04a4 100644
--- a/cop.h
+++ b/cop.h
@@ -585,7 +585,6 @@ C<*len>.  Upon return, C<*flags> will be set to either C<SVf_UTF8> or 0.
 /* subroutine context */
 struct block_sub {
     OP *	retop;	/* op to execute on exit from sub */
-    I32         old_cxsubix;  /* previous value of si_cxsubix */
     /* Above here is the same for sub, format and eval.  */
     PAD		*prevcomppad; /* the caller's PL_comppad */
     CV *	cv;
@@ -598,7 +597,6 @@ struct block_sub {
 /* format context */
 struct block_format {
     OP *	retop;	/* op to execute on exit from sub */
-    I32         old_cxsubix;  /* previous value of si_cxsubix */
     /* Above here is the same for sub, format and eval.  */
     PAD		*prevcomppad; /* the caller's PL_comppad */
     CV *	cv;
@@ -665,7 +663,6 @@ struct block_format {
 /* eval context */
 struct block_eval {
     OP *	retop;	/* op to execute on exit from eval */
-    I32         old_cxsubix;  /* previous value of si_cxsubix */
     /* Above here is the same for sub, format and eval.  */
     SV *	old_namesv;
     OP *	old_eval_root;
@@ -1029,7 +1026,6 @@ struct stackinfo {
     struct stackinfo *	si_next;
     I32			si_cxix;	/* current context index */
     I32			si_cxmax;	/* maximum allocated index */
-    I32			si_cxsubix;	/* topmost sub/eval/format */
     I32			si_type;	/* type of runlevel */
     I32			si_markoff;	/* offset where markstack begins for us.
 					 * currently used only with DEBUGGING,
@@ -1076,7 +1072,6 @@ typedef struct stackinfo PERL_SI;
 	}								\
 	next->si_type = type;						\
 	next->si_cxix = -1;						\
-	next->si_cxsubix = -1;						\
         PUSHSTACK_INIT_HWM(next);                                       \
 	AvFILLp(next->si_stack) = 0;					\
 	SWITCHSTACK(PL_curstack,next->si_stack);			\
diff --git a/dist/Module-CoreList/Changes b/dist/Module-CoreList/Changes
index 5bafffa764..afda1a551e 100644
--- a/dist/Module-CoreList/Changes
+++ b/dist/Module-CoreList/Changes
@@ -1,3 +1,6 @@
+5.20190920
+  - Updated for v5.31.4
+
 5.20190820
   - Updated for v5.31.3
 
diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm
index 38fb589923..eace194993 100644
--- a/dist/Module-CoreList/lib/Module/CoreList.pm
+++ b/dist/Module-CoreList/lib/Module/CoreList.pm
@@ -4,7 +4,7 @@ use strict;
 our ( %released, %version, %families, %upstream, %bug_tracker, %deprecated, %delta );
 
 use version;
-our $VERSION = '5.20190820';
+our $VERSION = '5.20190920';
 
 sub PKG_PATTERN () { q#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z# }
 sub _looks_like_invocant ($) { local $@; !!eval { $_[0]->isa(__PACKAGE__) } }
@@ -16713,6 +16713,112 @@ for my $version ( sort { $a <=> $b } keys %released ) {
         changed => {
             'B::Op_private'         => '5.031004',
             'Config'                => '5.031004',
+            'ExtUtils::Command'     => '7.38',
+            'ExtUtils::Command::MM' => '7.38',
+            'ExtUtils::Liblist'     => '7.38',
+            'ExtUtils::Liblist::Kid'=> '7.38',
+            'ExtUtils::MM'          => '7.38',
+            'ExtUtils::MM_AIX'      => '7.38',
+            'ExtUtils::MM_Any'      => '7.38',
+            'ExtUtils::MM_BeOS'     => '7.38',
+            'ExtUtils::MM_Cygwin'   => '7.38',
+            'ExtUtils::MM_DOS'      => '7.38',
+            'ExtUtils::MM_Darwin'   => '7.38',
+            'ExtUtils::MM_MacOS'    => '7.38',
+            'ExtUtils::MM_NW5'      => '7.38',
+            'ExtUtils::MM_OS2'      => '7.38',
+            'ExtUtils::MM_QNX'      => '7.38',
+            'ExtUtils::MM_UWIN'     => '7.38',
+            'ExtUtils::MM_Unix'     => '7.38',
+            'ExtUtils::MM_VMS'      => '7.38',
+            'ExtUtils::MM_VOS'      => '7.38',
+            'ExtUtils::MM_Win32'    => '7.38',
+            'ExtUtils::MM_Win95'    => '7.38',
+            'ExtUtils::MY'          => '7.38',
+            'ExtUtils::MakeMaker'   => '7.38',
+            'ExtUtils::MakeMaker::Config'=> '7.38',
+            'ExtUtils::MakeMaker::Locale'=> '7.38',
+            'ExtUtils::MakeMaker::version'=> '7.38',
+            'ExtUtils::MakeMaker::version::regex'=> '7.38',
+            'ExtUtils::Mkbootstrap' => '7.38',
+            'ExtUtils::Mksymlists'  => '7.38',
+            'ExtUtils::testlib'     => '7.38',
+            'I18N::Langinfo'        => '0.19',
+            'List::Util'            => '1.52',
+            'List::Util::XS'        => '1.52',
+            'Module::CoreList'      => '5.20190920',
+            'Module::CoreList::Utils'=> '5.20190920',
+            'Module::Metadata'      => '1.000037',
+            'Scalar::Util'          => '1.52',
+            'Sub::Util'             => '1.52',
+            'Test2'                 => '1.302168',
+            'Test2::API'            => '1.302168',
+            'Test2::API::Breakage'  => '1.302168',
+            'Test2::API::Context'   => '1.302168',
+            'Test2::API::Instance'  => '1.302168',
+            'Test2::API::Stack'     => '1.302168',
+            'Test2::Event'          => '1.302168',
+            'Test2::Event::Bail'    => '1.302168',
+            'Test2::Event::Diag'    => '1.302168',
+            'Test2::Event::Encoding'=> '1.302168',
+            'Test2::Event::Exception'=> '1.302168',
+            'Test2::Event::Fail'    => '1.302168',
+            'Test2::Event::Generic' => '1.302168',
+            'Test2::Event::Note'    => '1.302168',
+            'Test2::Event::Ok'      => '1.302168',
+            'Test2::Event::Pass'    => '1.302168',
+            'Test2::Event::Plan'    => '1.302168',
+            'Test2::Event::Skip'    => '1.302168',
+            'Test2::Event::Subtest' => '1.302168',
+            'Test2::Event::TAP::Version'=> '1.302168',
+            'Test2::Event::V2'      => '1.302168',
+            'Test2::Event::Waiting' => '1.302168',
+            'Test2::EventFacet'     => '1.302168',
+            'Test2::EventFacet::About'=> '1.302168',
+            'Test2::EventFacet::Amnesty'=> '1.302168',
+            'Test2::EventFacet::Assert'=> '1.302168',
+            'Test2::EventFacet::Control'=> '1.302168',
+            'Test2::EventFacet::Error'=> '1.302168',
+            'Test2::EventFacet::Hub'=> '1.302168',
+            'Test2::EventFacet::Info'=> '1.302168',
+            'Test2::EventFacet::Info::Table'=> '1.302168',
+            'Test2::EventFacet::Meta'=> '1.302168',
+            'Test2::EventFacet::Parent'=> '1.302168',
+            'Test2::EventFacet::Plan'=> '1.302168',
+            'Test2::EventFacet::Render'=> '1.302168',
+            'Test2::EventFacet::Trace'=> '1.302168',
+            'Test2::Formatter'      => '1.302168',
+            'Test2::Formatter::TAP' => '1.302168',
+            'Test2::Hub'            => '1.302168',
+            'Test2::Hub::Interceptor'=> '1.302168',
+            'Test2::Hub::Interceptor::Terminator'=> '1.302168',
+            'Test2::Hub::Subtest'   => '1.302168',
+            'Test2::IPC'            => '1.302168',
+            'Test2::IPC::Driver'    => '1.302168',
+            'Test2::IPC::Driver::Files'=> '1.302168',
+            'Test2::Tools::Tiny'    => '1.302168',
+            'Test2::Util'           => '1.302168',
+            'Test2::Util::ExternalMeta'=> '1.302168',
+            'Test2::Util::Facets2Legacy'=> '1.302168',
+            'Test2::Util::HashBase' => '1.302168',
+            'Test2::Util::Trace'    => '1.302168',
+            'Test::Builder'         => '1.302168',
+            'Test::Builder::Formatter'=> '1.302168',
+            'Test::Builder::Module' => '1.302168',
+            'Test::Builder::Tester' => '1.302168',
+            'Test::Builder::Tester::Color'=> '1.302168',
+            'Test::Builder::TodoDiag'=> '1.302168',
+            'Test::More'            => '1.302168',
+            'Test::Simple'          => '1.302168',
+            'Test::Tester'          => '1.302168',
+            'Test::Tester::Capture' => '1.302168',
+            'Test::Tester::CaptureRunner'=> '1.302168',
+            'Test::Tester::Delegate'=> '1.302168',
+            'Test::use::ok'         => '1.302168',
+            'Time::HiRes'           => '1.9763',
+            'XS::APItest'           => '1.03',
+            'ok'                    => '1.302168',
+            're'                    => '0.38',
         },
         removed => {
         }
diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
index 82ca3fee2f..7a4d252a3d 100644
--- a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
+++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use Module::CoreList;
 
-our $VERSION = '5.20190820';
+our $VERSION = '5.20190920';
 our %utilities;
 
 sub utilities {
diff --git a/embed.fnc b/embed.fnc
index 8c346c5eab..a3e5fb2596 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -3517,7 +3517,6 @@ Apx	|void	|leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
                 |U8 gimme|int filter
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
-Aixp	|U8	|gimme_V         |
 Aixp	|PERL_CONTEXT *	|cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
 Aixp	|void	|cx_popblock|NN PERL_CONTEXT *cx
 Aixp	|void	|cx_topblock|NN PERL_CONTEXT *cx
diff --git a/embed.h b/embed.h
index 53dd870983..f1c3f57aa2 100644
--- a/embed.h
+++ b/embed.h
@@ -979,7 +979,6 @@
 #define cx_pushsub(a,b,c,d)	Perl_cx_pushsub(aTHX_ a,b,c,d)
 #define cx_pushwhen(a)		Perl_cx_pushwhen(aTHX_ a)
 #define cx_topblock(a)		Perl_cx_topblock(aTHX_ a)
-#define gimme_V()		Perl_gimme_V(aTHX)
 #endif
 #if defined(DEBUGGING)
 #define pad_setsv(a,b)		Perl_pad_setsv(aTHX_ a,b)
diff --git a/ext/B/t/optree_concise.t b/ext/B/t/optree_concise.t
index 86280ac488..1e2594703f 100644
--- a/ext/B/t/optree_concise.t
+++ b/ext/B/t/optree_concise.t
@@ -217,7 +217,7 @@ checkOptree ( name => 'cmdline invoke -basic works',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 # 7  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 6     <@> sort vK ->7
 # 3        <0> pushmark s ->4
@@ -225,7 +225,7 @@ checkOptree ( name => 'cmdline invoke -basic works',
 # 4           <#> gv[*a] s ->5
 EOT_EOT
 # 7  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 6     <@> sort vK ->7
 # 3        <0> pushmark s ->4
@@ -241,7 +241,7 @@ checkOptree ( name => 'cmdline invoke -exec works',
 	      bcopts => '-exec',
 	      strip_open_hints => 1,
 	      expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> pushmark s
 4  <#> gv[*a] s
@@ -249,7 +249,7 @@ checkOptree ( name => 'cmdline invoke -exec works',
 6  <@> sort vK
 7  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> gv(*a) s
@@ -290,7 +290,7 @@ checkOptree
       errs	=> ['Useless use of sort in void context at -e line 1.'],
       strip_open_hints => 1,
       expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 2 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <#> gv[*a] s
@@ -298,7 +298,7 @@ checkOptree
 # 6  <@> sort vK
 # 7  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 2 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> gv(*a) s
diff --git a/ext/B/t/optree_constants.t b/ext/B/t/optree_constants.t
index 43afacc570..a8073164db 100644
--- a/ext/B/t/optree_constants.t
+++ b/ext/B/t/optree_constants.t
@@ -152,14 +152,14 @@ checkOptree ( name	=> 'myyes() as coderef',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
 # 5     <@> print vK ->6
 # 3        <0> pushmark s ->4
 # 4        <$> const[SPECIAL sv_yes] s*/FOLD ->5
 EOT_EOT
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
 # 5     <@> print vK ->6
 # 3        <0> pushmark s ->4
@@ -176,14 +176,14 @@ checkOptree ( name	=> 'myno() as coderef',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
 # 5     <@> print vK ->6
 # 3        <0> pushmark s ->4
 # 4        <$> const[SPECIAL sv_no] s*/FOLD ->5
 EOT_EOT
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 2 -e:1) v:>,<,%,{ ->3
 # 5     <@> print vK ->6
 # 3        <0> pushmark s ->4
diff --git a/ext/B/t/optree_misc.t b/ext/B/t/optree_misc.t
index 490abb33d4..f8ff3ce968 100644
--- a/ext/B/t/optree_misc.t
+++ b/ext/B/t/optree_misc.t
@@ -89,7 +89,7 @@ EONT_EONT
 
 my $t = <<'EOT_EOT';
 # 8  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 7     <2> sassign vKS/2 ->8
 # 5        <@> index[t2] sK/2 ->6
@@ -101,7 +101,7 @@ my $t = <<'EOT_EOT';
 EOT_EOT
 my $nt = <<'EONT_EONT';
 # 8  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 7     <2> sassign vKS/2 ->8
 # 5        <@> index[t1] sK/2 ->6
diff --git a/ext/B/t/optree_samples.t b/ext/B/t/optree_samples.t
index 0a498a9e52..15b5799ce0 100644
--- a/ext/B/t/optree_samples.t
+++ b/ext/B/t/optree_samples.t
@@ -331,7 +331,7 @@ checkOptree ( name	=> '-exec -e foreach (1..10) {print qq{foo $_}}',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 2 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> const[IV 1] s
@@ -350,7 +350,7 @@ checkOptree ( name	=> '-exec -e foreach (1..10) {print qq{foo $_}}',
 # g  <2> leaveloop vK/2
 # h  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 2 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> const(IV 1) s
@@ -602,14 +602,14 @@ checkOptree ( name	=> '-e use constant j => qq{junk}; print j',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 71 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> const[PV "junk"] s*/FOLD
 # 5  <@> print vK
 # 6  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 71 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> const(PV "junk") s*/FOLD
diff --git a/ext/B/t/optree_sort.t b/ext/B/t/optree_sort.t
index 2c661f6765..0b5897d575 100644
--- a/ext/B/t/optree_sort.t
+++ b/ext/B/t/optree_sort.t
@@ -46,7 +46,7 @@ checkOptree ( name => 'sort @a',
 	      bcopts => '-exec',
 	      strip_open_hints => 1,
 	      expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> pushmark s
 4  <#> gv[*a] s
@@ -54,7 +54,7 @@ checkOptree ( name => 'sort @a',
 6  <@> sort vK
 7  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <$> gv(*a) s
@@ -98,7 +98,7 @@ checkOptree ( name	=> '@a = sort @a',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> pushmark s
 4  <0> pushmark s
@@ -107,7 +107,7 @@ checkOptree ( name	=> '@a = sort @a',
 7  <@> sort lK/INPLACE
 8  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <0> pushmark s
@@ -155,7 +155,7 @@ checkOptree ( name	=> '@a = sort @a; reverse @a',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> pushmark s
 4  <0> pushmark s
@@ -169,7 +169,7 @@ b  <1> rv2av[t7] lK/1
 c  <@> reverse[t8] vK/1
 d  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <0> pushmark s
@@ -219,7 +219,7 @@ checkOptree ( name	=> 'my @a; @a = sort @a',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> padav[@a:1,2] vM/LVINTRO
 4  <;> nextstate(main 2 -e:1) v:>,<,%,{
@@ -229,7 +229,7 @@ checkOptree ( name	=> 'my @a; @a = sort @a',
 8  <@> sort lK/INPLACE
 9  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> padav[@a:1,2] vM/LVINTRO
 # 4  <;> nextstate(main 2 -e:1) v:>,<,%,{
diff --git a/ext/B/t/optree_varinit.t b/ext/B/t/optree_varinit.t
index 8312df029d..5938048f3a 100644
--- a/ext/B/t/optree_varinit.t
+++ b/ext/B/t/optree_varinit.t
@@ -80,12 +80,12 @@ checkOptree ( name	=> 'my $a',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 # 4  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 3     <0> padsv[$a:1,2] vM/LVINTRO ->4
 EOT_EOT
 # 4  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 3     <0> padsv[$a:1,2] vM/LVINTRO ->4
 EONT_EONT
@@ -96,13 +96,13 @@ checkOptree ( name	=> 'our $a',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 3  <@> leave[1 ref] vKP/REFC ->(end)
-1     <0> enter v ->2
+1     <0> enter ->2
 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 -     <1> rv2sv vK/OURINTR,1 ->3
 -        <#> gv[*a] s ->-
 EOT_EOT
 # 3  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # -     <1> rv2sv vK/OURINTR,1 ->3
 # -        <$> gv(*a) s ->-
@@ -115,13 +115,13 @@ checkOptree ( name	=> 'local $c',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 4  <@> leave[1 ref] vKP/REFC ->(end)
-1     <0> enter v ->2
+1     <0> enter ->2
 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 -     <1> ex-rv2sv vKM/LVINTRO,1 ->4
 3        <#> gvsv[*c] s/LVINTRO ->4
 EOT_EOT
 # 4  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # -     <1> ex-rv2sv vKM/LVINTRO,1 ->4
 # 3        <$> gvsv(*c) s/LVINTRO ->4
@@ -201,14 +201,14 @@ checkOptree ( name	=> 'my $a=undef',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 6  <@> leave[1 ref] vKP/REFC ->(end)
-1     <0> enter v ->2
+1     <0> enter ->2
 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 5     <2> sassign vKS/2 ->6
 3        <0> undef s ->4
 4        <0> padsv[$a:1,2] sRM*/LVINTRO ->5
 EOT_EOT
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 5     <2> sassign vKS/2 ->6
 # 3        <0> undef s ->4
@@ -222,7 +222,7 @@ checkOptree ( name	=> 'our $a=undef',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 6  <@> leave[1 ref] vKP/REFC ->(end)
-1     <0> enter v ->2
+1     <0> enter ->2
 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 5     <2> sassign vKS/2 ->6
 3        <0> undef s ->4
@@ -230,7 +230,7 @@ checkOptree ( name	=> 'our $a=undef',
 4           <#> gvsv[*a] s/OURINTR ->5
 EOT_EOT
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 5     <2> sassign vKS/2 ->6
 # 3        <0> undef s ->4
@@ -246,7 +246,7 @@ checkOptree ( name	=> 'local $c=undef',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 6  <@> leave[1 ref] vKP/REFC ->(end)
-1     <0> enter v ->2
+1     <0> enter ->2
 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 5     <2> sassign vKS/2 ->6
 3        <0> undef s ->4
@@ -254,7 +254,7 @@ checkOptree ( name	=> 'local $c=undef',
 4           <#> gvsv[*c] s/LVINTRO ->5
 EOT_EOT
 # 6  <@> leave[1 ref] vKP/REFC ->(end)
-# 1     <0> enter v ->2
+# 1     <0> enter ->2
 # 2     <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
 # 5     <2> sassign vKS/2 ->6
 # 3        <0> undef s ->4
@@ -323,14 +323,14 @@ checkOptree ( name	=> 'my $a=()',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> stub sP
 4  <0> padsv[$a:1,2] sRM*/LVINTRO
 5  <2> sassign vKS/2
 6  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> stub sP
 # 4  <0> padsv[$a:1,2] sRM*/LVINTRO
@@ -344,14 +344,14 @@ checkOptree ( name	=> 'our $a=()',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> stub sP
 4  <#> gvsv[*a] s/OURINTR
 5  <2> sassign vKS/2
 6  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> stub sP
 # 4  <$> gvsv(*a) s/OURINTR
@@ -366,14 +366,14 @@ checkOptree ( name	=> 'local $c=()',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-1  <0> enter v
+1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 3  <0> stub sP
 4  <#> gvsv[*c] s/LVINTRO
 5  <2> sassign vKS/2
 6  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> stub sP
 # 4  <$> gvsv(*c) s/LVINTRO
@@ -387,14 +387,14 @@ checkOptree ( name	=> 'my ($a,$b)=()',
 	      bcopts	=> '-exec',
 	      strip_open_hints => 1,
 	      expect	=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <0> padrange[$a:1,2; $b:1,2] RM/LVINTRO,range=2
 # 5  <2> aassign[t3] vKS
 # 6  <@> leave[1 ref] vKP/REFC
 EOT_EOT
-# 1  <0> enter v
+# 1  <0> enter 
 # 2  <;> nextstate(main 1 -e:1) v:>,<,%,{
 # 3  <0> pushmark s
 # 4  <0> padrange[$a:1,2; $b:1,2] RM/LVINTRO,range=2
diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t
index fbcda76433..f3f781ac6b 100644
--- a/ext/Devel-Peek/t/Peek.t
+++ b/ext/Devel-Peek/t/Peek.t
@@ -1465,7 +1465,7 @@ dumpindent is 4 at -e line 1.
      REFCNT = 1
      |   
 2    +--enter OP(0xNNN) ===> 3 [nextstate 0xNNN]
-     |   FLAGS = (VOID,SLABBED,MORESIB)
+     |   FLAGS = (UNKNOWN,SLABBED,MORESIB)
      |   
 3    +--nextstate COP(0xNNN) ===> 4 [pushmark 0xNNN]
      |   FLAGS = (VOID,SLABBED,MORESIB)
diff --git a/inline.h b/inline.h
index f52d4e5620..aa4e7b8fdf 100644
--- a/inline.h
+++ b/inline.h
@@ -2056,23 +2056,6 @@ Perl_sv_only_taint_gmagic(SV *sv)
 
 /* ------------------ cop.h ------------------------------------------- */
 
-/* implement GIMME_V() macro */
-
-PERL_STATIC_INLINE U8
-Perl_gimme_V(pTHX)
-{
-    I32 cxix;
-    U8  gimme = (PL_op->op_flags & OPf_WANT);
-
-    if (gimme)
-        return gimme;
-    cxix = PL_curstackinfo->si_cxsubix;
-    if (cxix < 0)
-        return G_VOID;
-    assert(cxstack[cxix].blk_gimme & G_WANT);
-    return (cxstack[cxix].blk_gimme & G_WANT);
-}
-
 
 /* Enter a block. Push a new base context and return its address. */
 
@@ -2151,8 +2134,6 @@ Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs)
     PERL_ARGS_ASSERT_CX_PUSHSUB;
 
     PERL_DTRACE_PROBE_ENTRY(cv);
-    cx->blk_sub.old_cxsubix     = PL_curstackinfo->si_cxsubix;
-    PL_curstackinfo->si_cxsubix = cx - PL_curstackinfo->si_cxstack;
     cx->blk_sub.cv = cv;
     cx->blk_sub.olddepth = CvDEPTH(cv);
     cx->blk_sub.prevcomppad = PL_comppad;
@@ -2179,7 +2160,6 @@ Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx)
     CvDEPTH(cv) = cx->blk_sub.olddepth;
     cx->blk_sub.cv = NULL;
     SvREFCNT_dec(cv);
-    PL_curstackinfo->si_cxsubix = cx->blk_sub.old_cxsubix;
 }
 
 
@@ -2226,8 +2206,6 @@ Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv)
 {
     PERL_ARGS_ASSERT_CX_PUSHFORMAT;
 
-    cx->blk_format.old_cxsubix = PL_curstackinfo->si_cxsubix;
-    PL_curstackinfo->si_cxsubix= cx - PL_curstackinfo->si_cxstack;
     cx->blk_format.cv          = cv;
     cx->blk_format.retop       = retop;
     cx->blk_format.gv          = gv;
@@ -2261,7 +2239,6 @@ Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx)
     cx->blk_format.cv = NULL;
     --CvDEPTH(cv);
     SvREFCNT_dec_NN(cv);
-    PL_curstackinfo->si_cxsubix = cx->blk_format.old_cxsubix;
 }
 
 
@@ -2270,8 +2247,6 @@ Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv)
 {
     PERL_ARGS_ASSERT_CX_PUSHEVAL;
 
-    cx->blk_eval.old_cxsubix   = PL_curstackinfo->si_cxsubix;
-    PL_curstackinfo->si_cxsubix= cx - PL_curstackinfo->si_cxstack;
     cx->blk_eval.retop         = retop;
     cx->blk_eval.old_namesv    = namesv;
     cx->blk_eval.old_eval_root = PL_eval_root;
@@ -2307,7 +2282,6 @@ Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx)
         cx->blk_eval.old_namesv = NULL;
         SvREFCNT_dec_NN(sv);
     }
-    PL_curstackinfo->si_cxsubix = cx->blk_eval.old_cxsubix;
 }
 
 
diff --git a/op.c b/op.c
index 29486a566c..944c57a406 100644
--- a/op.c
+++ b/op.c
@@ -5455,8 +5455,7 @@ Perl_op_scope(pTHX_ OP *o)
     dVAR;
     if (o) {
 	if (o->op_flags & OPf_PARENS || PERLDB_NOOPT || TAINTING_get) {
-	    o = op_prepend_elem(OP_LINESEQ,
-                    newOP(OP_ENTER, (o->op_flags & OPf_WANT)), o);
+	    o = op_prepend_elem(OP_LINESEQ, newOP(OP_ENTER, 0), o);
             OpTYPE_set(o, OP_LEAVE);
 	}
 	else if (o->op_type == OP_LINESEQ) {
diff --git a/op.h b/op.h
index 89440a2f41..c494386ed1 100644
--- a/op.h
+++ b/op.h
@@ -85,7 +85,7 @@ Deprecated.  Use C<GIMME_V> instead.
 =cut
 */
 
-#define GIMME_V		Perl_gimme_V(aTHX)
+#define GIMME_V		OP_GIMME(PL_op, block_gimme())
 
 /* Public flags */
 
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 45c20df9d6..0b04894f03 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -2,9 +2,6 @@
 
 =head1 NAME
 
-[ this is a template for a new perldelta file.  Any text flagged as XXX needs
-to be processed before release. ]
-
 perldelta - what is new for perl v5.31.4
 
 =head1 DESCRIPTION
@@ -17,16 +14,10 @@ L<perl5313delta>, which describes differences between 5.31.2 and 5.31.3.
 
 =head1 Notice
 
-XXX Any important notices here
+I<None>
 
 =head1 Core Enhancements
 
-XXX New core language features go here.  Summarize user-visible core language
-enhancements.  Particularly prominent performance optimisations could go
-here, but most should go in the L</Performance Enhancements> section.
-
-[ List each enhancement as a =head2 entry ]
-
 =head2 Now can dump compiled patterns before optimization
 
 This is primarily useful for tracking down bugs in the regular
@@ -36,101 +27,55 @@ compiled within the scope of S<C<use re qw(Debug DUMP_PRE_OPTIMIZE)>> or
 S<C<use re qw(Debug COMPILE EXTRA)>>.  (All but the 2nd case display
 other information as well.)
 
-=head1 Security
-
-XXX Any security-related notices go here.  In particular, any security
-vulnerabilities closed should be noted here rather than in the
-L</Selected Bug Fixes> section.
-
-[ List each security issue as a =head2 entry ]
-
 =head1 Incompatible Changes
 
-XXX For a release on a stable branch, this section aspires to be:
-
-    There are no changes intentionally incompatible with 5.XXX.XXX
+    There are no changes intentionally incompatible with 5.31.3
     If any exist, they are bugs, and we request that you submit a
     report.  See L</Reporting Bugs> below.
 
-[ List each incompatible change as a =head2 entry ]
-
 =head1 Deprecations
 
-XXX Any deprecated features, syntax, modules etc. should be listed here.
-
 =head2 Module removals
 
-XXX Remove this section if not applicable.
-
-The following modules will be removed from the core distribution in a
-future release, and will at that time need to be installed from CPAN.
-Distributions on CPAN which require these modules will need to list them as
-prerequisites.
+I<None>
 
-The core versions of these modules will now issue C<"deprecated">-category
-warnings to alert you to this fact.  To silence these deprecation warnings,
-install the modules in question from CPAN.
-
-Note that these are (with rare exceptions) fine modules that you are encouraged
-to continue to use.  Their disinclusion from core primarily hinges on their
-necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
-not usually on concerns over their design.
-
-=over
-
-=item XXX
+=head1 Performance Enhancements
 
-XXX Note that deprecated modules should be listed here even if they are listed
-as an updated module in the L</Modules and Pragmata> section.
+I<None>
 
-=back
-
-[ List each other deprecation as a =head2 entry ]
+=head1 Modules and Pragmata
 
-=head1 Performance Enhancements
+=head2 New Modules and Pragmata
 
-XXX Changes which enhance performance without changing behaviour go here.
-There may well be none in a stable release.
+I<None>
 
-[ List each enhancement as an =item entry ]
+=head2 Updated Modules and Pragmata
 
 =over 4
 
 =item *
 
-XXX
+L<ExtUtils::MakeMaker> has been upgraded from version 7.36 to 7.38.
 
-=back
-
-=head1 Modules and Pragmata
+=item *
 
-XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
-go here.  If Module::CoreList is updated, generate an initial draft of the
-following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
-for important changes should then be added by hand.  In an ideal world,
-dual-life modules would have a F<Changes> file that could be cribbed.
+L<I18N::Langinfo> has been upgraded from version 0.18 to 0.19.
 
-The list of new and updated modules is modified automatically as part of
-preparing a Perl release, so the only reason to manually add entries here is if
-you're summarising the important changes in the module update. (Also, if the
-manually-added details don't match the automatically-generated ones, the
-release manager will have to investigate the situation carefully.)
+=item *
 
-[ Within each section, list entries as an =item entry ]
+L<Module::CoreList> has been upgraded from version 5.20190820 to 5.20190920.
 
-=head2 New Modules and Pragmata
+=item *
 
-=over 4
+L<Module::Metadata> has been upgraded from version 1.000036 to 1.000037.
 
 =item *
 
-XXX Remove this section if not applicable.
+L<re> has been upgraded from version 0.37 to 0.38.
 
-=back
+=item *
 
-=head2 Updated Modules and Pragmata
-
-=over 4
+L<Scalar::Util> has been upgraded from version 1.50 to 1.52.
 
 =item *
 
@@ -138,34 +83,17 @@ L<Test::Simple> has been upgraded from version 1.302166 to 1.302168.
 
 =item *
 
-L<XXX> has been upgraded from version A.xx to B.yy.
-
-If there was something important to note about this change, include that here.
-
-=back
-
-=head2 Removed Modules and Pragmata
-
-=over 4
+L<Time::HiRes> has been upgraded from version 1.9762 to 1.9763.
 
 =item *
 
-XXX
+L<XS::APItest> has been upgraded from version 1.02 to 1.03.
 
 =back
 
-=head1 Documentation
-
-XXX Changes to files in F<pod/> go here.  Consider grouping entries by
-file and be sure to link to the appropriate page, e.g. L<perlfunc>.
-
-=head2 New Documentation
-
-XXX Changes which create B<new> files in F<pod/> go here.
-
-=head3 L<XXX>
+=head2 Removed Modules and Pragmata
 
-XXX Description of the purpose of the new file here
+I<None>
 
 =head2 Changes to Existing Documentation
 
@@ -173,10 +101,6 @@ We have attempted to update the documentation to reflect the changes
 listed in this document.  If you find any we have missed, send email
 to L<perlbug@perl.org|mailto:perlbug@perl.org>.
 
-XXX Changes which significantly change existing files in F<pod/> go here.
-However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
-section.
-
 Additionally, the following selected changes have been made:
 
 =head3 L<perlapi>, L<perlintern>
@@ -196,74 +120,12 @@ The following additions or changes have been made to diagnostic output,
 including warnings and fatal error messages.  For the complete list of
 diagnostic messages, see L<perldiag>.
 
-XXX New or changed warnings emitted by the core's C<C> code go here.  Also
-include any changes in L<perldiag> that reconcile it to the C<C> code.
-
 =head2 New Diagnostics
 
-XXX Newly added diagnostic messages go under here, separated into New Errors
-and New Warnings
-
-=head3 New Errors
-
-=over 4
-
-=item *
-
-XXX L<message|perldiag/"message">
-
-=back
-
-=head3 New Warnings
-
-=over 4
-
-=item *
-
-XXX L<message|perldiag/"message">
-
-=back
-
-=head2 Changes to Existing Diagnostics
-
-XXX Changes (i.e. rewording) of diagnostic messages go here
-
-=over 4
-
-=item *
-
-XXX Describe change here
-
-=back
-
-=head1 Utility Changes
-
-XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
-Most of these are built within the directory F<utils>.
-
-[ List utility changes as a =head2 entry for each utility and =item
-entries for each change
-Use L<XXX> with program names to get proper documentation linking. ]
-
-=head2 L<XXX>
-
-=over 4
-
-=item *
-
-XXX
-
-=back
+I<None>
 
 =head1 Configuration and Compilation
 
-XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
-go here.  Any other changes to the Perl build process should be listed here.
-However, any platform-specific changes should be listed in the
-L</Platform Support> section, instead.
-
-[ List changes as an =item entry ].
-
 =over 4
 
 =item *
@@ -271,82 +133,17 @@ L</Platform Support> section, instead.
 Improvements in F<Configure> to detection in C++ and clang++.  Work ongoing by
 Andy Dougherty. [perl #134171]
 
-=item *
-
-XXX
-
 =back
 
 =head1 Testing
 
-XXX Any significant changes to the testing of a freshly built perl should be
-listed here.  Changes which create B<new> files in F<t/> go here as do any
-large changes to the testing harness (e.g. when parallel testing was added).
-Changes to existing files in F<t/> aren't worth summarizing, although the bugs
-that they represent may be covered elsewhere.
-
-XXX If there were no significant test changes, say this:
-
 Tests were added and changed to reflect the other additions and changes
 in this release.
 
-XXX If instead there were significant changes, say this:
-
-Tests were added and changed to reflect the other additions and
-changes in this release.  Furthermore, these significant changes were
-made:
-
-[ List each test improvement as an =item entry ]
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
 =head1 Platform Support
 
-XXX Any changes to platform support should be listed in the sections below.
-
-[ Within the sections, list each platform as an =item entry with specific
-changes as paragraphs below it. ]
-
-=head2 New Platforms
-
-XXX List any platforms that this version of perl compiles on, that previous
-versions did not.  These will either be enabled by new files in the F<hints/>
-directories, or new subdirectories and F<README> files at the top level of the
-source tree.
-
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
-
-=head2 Discontinued Platforms
-
-XXX List any platforms that this version of perl no longer compiles on.
-
-=over 4
-
-=item XXX-some-platform
-
-XXX
-
-=back
-
 =head2 Platform-Specific Notes
 
-XXX List any changes for specific platforms.  This could include configuration
-and compilation changes or changes in portability/compatibility.  However,
-changes within modules for platforms should generally be listed in the
-L</Modules and Pragmata> section.
-
 =over 4
 
 =item Win32
@@ -362,31 +159,16 @@ decode it as UTF-8.  [perl #133981]
 
 =head1 Internal Changes
 
-XXX Changes which affect the interface available to C<XS> code go here.  Other
-significant internal changes for future core maintainers should be noted as
-well.
-
-[ List each change as an =item entry ]
-
 =over 4
 
 =item *
 
-Added the C<<PL_curstackinfo->si_cxsubix>> field. This records the stack
-index of the most recently pushed sub/format/eval context.  It is set and
-restored automatically by C<cx_pushsub()>, C<cx_popsub()> etc., but would
-need to be manually managed if you do any unusual manipulation of the
-context stack.
+XXX
 
 =back
 
 =head1 Selected Bug Fixes
 
-XXX Important bug fixes in the core language are summarized here.  Bug fixes in
-files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
-
-[ List each fix as an =item entry ]
-
 =over 4
 
 =item *
@@ -413,41 +195,37 @@ C<0b> prefix.  [perl #125557]
 
 =head1 Known Problems
 
-XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
-tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
-platform specific bugs also go here.
-
-[ List each fix as an =item entry ]
-
-=over 4
-
-=item *
-
-XXX
-
-=back
-
-=head1 Errata From Previous Releases
-
-=over 4
+I<None>
 
-=item *
+=head1 Acknowledgements
 
-XXX Add anything here that we forgot to add, or were mistaken about, in
-the perldelta of a previous release.
+Perl 5.31.4 represents approximately 4 weeks of development since Perl
+5.31.3 and contains approximately 6,700 lines of changes across 260 files
+from 18 authors.
 
-=back
+Excluding auto-generated files, documentation and release tools, there were
+approximately 3,900 lines of changes to 180 .pm, .t, .c and .h files.
 
-=head1 Obituary
+Perl continues to flourish into its fourth decade thanks to a vibrant
+community of users and developers. The following people are known to have
+contributed the improvements that became Perl 5.31.4:
 
-XXX If any significant core contributor or member of the CPAN community has
-died, add a short obituary here.
+Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dan Book, David
+Mitchell, Florian Weimer, Hauke D, H.Merijn Brand, James E Keenan, Kang-min
+Liu, Karl Williamson, Max Maischein, Pali, Sisyphus, Tomasz Konojacki, Tom
+Hukins, Tony Cook, VanL.
 
-=head1 Acknowledgements
+The list above is almost certainly incomplete as it is automatically
+generated from version control history. In particular, it does not include
+the names of the (very much appreciated) contributors who reported issues to
+the Perl bug tracker.
 
-XXX Generate this with:
+Many of the changes included in this version originated in the CPAN modules
+included in Perl's core. We're grateful to the entire CPAN community for
+helping Perl to flourish.
 
-  perl Porting/acknowledgements.pl v5.31.3..HEAD
+For a more complete list of all of Perl's historical contributors, please
+see the F<AUTHORS> file in the Perl source distribution.
 
 =head1 Reporting Bugs
 
diff --git a/pod/perlhist.pod b/pod/perlhist.pod
index 035e554c7b..d5f6c6895d 100644
--- a/pod/perlhist.pod
+++ b/pod/perlhist.pod
@@ -674,6 +674,7 @@ the strings?).
  Ether     5.31.1       2019-Jun-20
  Steve     5.31.2       2019-Jul-20
  Tom H     5.31.3       2019-Aug-20
+ Max M     5.31.4       2019-Sep-20
 
 =head2 SELECTED RELEASE SIZES
 
diff --git a/pp_ctl.c b/pp_ctl.c
index af95a9e50b..064bdc002a 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -37,11 +37,6 @@
 #define RUN_PP_CATCHABLY(thispp) \
     STMT_START { if (CATCH_GET) return docatch(thispp); } STMT_END
 
-#define dopopto_cursub() \
-    (PL_curstackinfo->si_cxsubix >= 0        \
-        ? PL_curstackinfo->si_cxsubix        \
-        : dopoptosub_at(cxstack, cxstack_ix))
-
 #define dopoptosub(plop)	dopoptosub_at(cxstack, (plop))
 
 PP(pp_wantarray)
@@ -55,7 +50,7 @@ PP(pp_wantarray)
 	if (!(cx = caller_cx(1,NULL))) RETPUSHUNDEF;
     }
     else {
-      cxix = dopopto_cursub();
+      cxix = dopoptosub(cxstack_ix);
       if (cxix < 0)
 	RETPUSHUNDEF;
       cx = &cxstack[cxix];
@@ -1389,12 +1384,10 @@ Perl_dowantarray(pTHX)
     return (gimme == G_VOID) ? G_SCALAR : gimme;
 }
 
-/* note that this function has mostly been superseded by Perl_gimme_V */
-
 U8
 Perl_block_gimme(pTHX)
 {
-    const I32 cxix = dopopto_cursub();
+    const I32 cxix = dopoptosub(cxstack_ix);
     U8 gimme;
     if (cxix < 0)
 	return G_VOID;
@@ -1409,7 +1402,7 @@ Perl_block_gimme(pTHX)
 I32
 Perl_is_lvalue_sub(pTHX)
 {
-    const I32 cxix = dopopto_cursub();
+    const I32 cxix = dopoptosub(cxstack_ix);
     assert(cxix >= 0);  /* We should only be called from inside subs */
 
     if (CxLVAL(cxstack + cxix) && CvLVALUE(cxstack[cxix].blk_sub.cv))
@@ -1867,7 +1860,7 @@ frame for the sub call itself.
 const PERL_CONTEXT *
 Perl_caller_cx(pTHX_ I32 count, const PERL_CONTEXT **dbcxp)
 {
-    I32 cxix = dopopto_cursub();
+    I32 cxix = dopoptosub(cxstack_ix);
     const PERL_CONTEXT *cx;
     const PERL_CONTEXT *ccstack = cxstack;
     const PERL_SI *top_si = PL_curstackinfo;
@@ -2469,7 +2462,7 @@ PP(pp_return)
 {
     dSP; dMARK;
     PERL_CONTEXT *cx;
-    const I32 cxix = dopopto_cursub();
+    const I32 cxix = dopoptosub(cxstack_ix);
 
     assert(cxstack_ix >= 0);
     if (cxix < cxstack_ix) {
@@ -2840,7 +2833,7 @@ PP(pp_goto)
 		DIE(aTHX_ "Goto undefined subroutine");
 	    }
 
-	    cxix = dopopto_cursub();
+	    cxix = dopoptosub(cxstack_ix);
             if (cxix < 0) {
                 DIE(aTHX_ "Can't goto subroutine outside a subroutine");
             }
diff --git a/proto.h b/proto.h
index f351644567..fe9b9a0367 100644
--- a/proto.h
+++ b/proto.h
@@ -4868,10 +4868,6 @@ PERL_STATIC_INLINE void	Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx);
 #define PERL_ARGS_ASSERT_CX_TOPBLOCK	\
 	assert(cx)
 #endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8	Perl_gimme_V(pTHX);
-#define PERL_ARGS_ASSERT_GIMME_V
-#endif
 #endif
 #if !defined(PERL_NO_UTF16_FILTER)
 #  if defined(PERL_IN_TOKE_C)
diff --git a/scope.c b/scope.c
index c6616440f6..9b1393c69d 100644
--- a/scope.c
+++ b/scope.c
@@ -82,7 +82,6 @@ Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
     si->si_next = 0;
     si->si_cxmax = cxitems - 1;
     si->si_cxix = -1;
-    si->si_cxsubix = -1;
     si->si_type = PERLSI_UNDEF;
     Newx(si->si_cxstack, cxitems, PERL_CONTEXT);
     /* Without any kind of initialising CX_PUSHSUBST()
diff --git a/sv.c b/sv.c
index 0b878a4630..e088e5c419 100644
--- a/sv.c
+++ b/sv.c
@@ -14690,7 +14690,6 @@ Perl_si_dup(pTHX_ PERL_SI *si, CLONE_PARAMS* param)
 
     nsi->si_stack	= av_dup_inc(si->si_stack, param);
     nsi->si_cxix	= si->si_cxix;
-    nsi->si_cxsubix	= si->si_cxsubix;
     nsi->si_cxmax	= si->si_cxmax;
     nsi->si_cxstack	= cx_dup(si->si_cxstack, si->si_cxix, si->si_cxmax, param);
     nsi->si_type	= si->si_type;
diff --git a/t/perf/benchmarks b/t/perf/benchmarks
index 63eb62cfc3..7795079c78 100644
--- a/t/perf/benchmarks
+++ b/t/perf/benchmarks
@@ -158,12 +158,6 @@
         code    => '$x = f(1)',
     },
 
-    'call::sub::scalar' => {
-        desc    => 'sub called in scalar context',
-        setup   => 'my $x; my @a = 1..4; sub f { @a }',
-        code    => '$x = f()',
-    },
-
     'call::goto::empty' => {
         desc    => 'goto &funtion with no args or body',
         setup   => 'sub f { goto &g } sub g {}',

-- 
Perl5 Master Repository



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About