Currently pp_leavesublv has a check at the top:
if (CxMULTICALL(&cxstack[cxstack_ix]))
return 0;
Move this instead into S_return_lvalues(), which pp_leavesublv immediately
calls. This has no effect on the pp_leavesublv code path, and also
has no effect on the pp_return code path, because although pp_return
calls S_return_lvalues, it doesn't in the case of MULTICALL, which it has
already checked for earlier.
So it shouldn't change anything functionally.
This will allow us to eliminate S_return_lvalues in the next commit.
bool ref;
const char *what = NULL;
+ if (CxMULTICALL(&cxstack[cxstack_ix]))
+ return 0;
+
POPBLOCK(cx,newpm);
cxstack_ix++; /* preserve cx entry on stack for use by POPSUB */
TAINT_NOT;
* pp_return */
PP(pp_leavesublv)
{
- if (CxMULTICALL(&cxstack[cxstack_ix]))
- return 0;
return S_return_lvalues(aTHX);