This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
harmonise die_unwind, doeval_compile, leaveeval
There is some similar code in each of these functions. Reorganise each of
those blocks to make them more similar. In particular, move some of the
EVAL context field preserving to earlier; i.e. change
CX_LEAVE_SCOPE(cx);
cx_popeval(cx);
cx_popblock(cx);
saved_foo = cx->blk_eval.foo;
to
saved_foo = cx->blk_eval.foo;
CX_LEAVE_SCOPE(cx);
cx_popeval(cx);
cx_popblock(cx);
and always examine the context entry to determine whether the EVAL is a
require, rather than using any other method (but assert they're the same);
and for leaveeval, move the CvDEPTH(evalcv)=0 setting earlier.