See the thread starting at
<
83877DD1-4624-4497-B784-
0F8DA25DB4A8@cpan.org>.
I still don’t know why this does not apply to list context.
As with most lvalue sub fixes, this involves deleting code.
than 65535 characters use roughly half the memory than previously, strings
shorter than 255 characters use roughly one quarter of the memory.
+=item *
+
+Recursive calls to lvalue subroutines in lvalue scalar context use less
+memory.
+
=back
=head1 Modules and Pragmata
SvREADONLY(TOPs) ? (TOPs == &PL_sv_undef) ? "undef"
: "a readonly value" : "a temporary");
}
- else { /* Can be a localized value
- EXTEND_MORTAL(1); * subject to deletion. */
- PL_tmps_stack[++PL_tmps_ix] = *SP;
- SvREFCNT_inc_void(*SP);
- *++newsp = *SP;
- }
}
else {
/* sub:lvalue{} will take us here. */
);
}
}
- else if (MARK < SP) {
+ if (MARK < SP) {
if (cx->blk_sub.cv && CvDEPTH(cx->blk_sub.cv) > 1) {
*++newsp = SvREFCNT_inc(*SP);
FREETMPS;