{
dVAR;
SV ** const sptr = &GvSVn(gv);
-#ifdef PERL_MAD
- if (PL_formfeed && *sptr == PL_formfeed)
- abort();
-#endif
PL_localizing = 1;
SvGETMAGIC(*sptr);
PL_localizing = 0;
Perl_save_generic_svref(pTHX_ SV **sptr)
{
dVAR;
-#ifdef PERL_MAD
- if (PL_formfeed && *sptr == PL_formfeed)
- abort();
-#endif
SSCHECK(3);
SSPUSHPTR(sptr);
SSPUSHPTR(SvREFCNT_inc(*sptr));
GP *gp = Perl_newGP(aTHX_ gv);
if (GvCVu(gv))
- PL_sub_generation++; /* taking a method out of circulation */
+ mro_method_changed_in(GvSTASH(gv)); /* taking a method out of circulation ("local")*/
if (GvIOp(gv) && (IoFLAGS(GvIOp(gv)) & IOf_ARGV)) {
gp->gp_io = newIO();
IoFLAGS(gp->gp_io) |= IOf_ARGV|IOf_START;
dVAR;
register SV * const sv = newSVsv(item);
-#ifdef PERL_MAD
- if (PL_formfeed && item == PL_formfeed)
- abort();
-#endif
-
SSCHECK(3);
SSPUSHPTR(item); /* remember the pointer */
SSPUSHPTR(sv); /* remember the value */
}
void
+Perl_save_I16(pTHX_ I16 *intp)
+{
+ dVAR;
+ SSCHECK(3);
+ SSPUSHINT(*intp);
+ SSPUSHPTR(intp);
+ SSPUSHINT(SAVEt_I16);
+}
+
+void
Perl_save_I32(pTHX_ I32 *intp)
{
dVAR;
SvGETMAGIC(*sptr);
SSCHECK(4);
SSPUSHPTR(SvREFCNT_inc_simple(hv));
- SSPUSHPTR(SvREFCNT_inc_simple(key));
+ SSPUSHPTR(newSVsv(key));
SSPUSHPTR(SvREFCNT_inc(*sptr));
SSPUSHINT(SAVEt_HELEM);
save_scalar_at(sptr);
Perl_save_svref(pTHX_ SV **sptr)
{
dVAR;
-#ifdef PERL_MAD
- if (PL_formfeed && *sptr == PL_formfeed)
- abort();
-#endif
SvGETMAGIC(*sptr);
SSCHECK(3);
SSPUSHPTR(sptr);
break;
case SAVEt_I32: /* I32 reference */
ptr = SSPOPPTR;
+#ifdef PERL_DEBUG_READONLY_OPS
+ {
+ const I32 val = SSPOPINT;
+ if (*(I32*)ptr != val)
+ *(I32*)ptr = val;
+ }
+#else
*(I32*)ptr = (I32)SSPOPINT;
+#endif
break;
case SAVEt_SPTR: /* SV* reference */
ptr = SSPOPPTR;
gv = (GV*)SSPOPPTR;
gp_free(gv);
GvGP(gv) = (GP*)ptr;
- if (GvCVu(gv))
- PL_sub_generation++; /* putting a method back into circulation */
+ /* putting a method back into circulation ("local")*/
+ if (GvCVu(gv) && (hv=GvSTASH(gv)) && HvNAME_get(hv))
+ mro_method_changed_in(hv);
SvREFCNT_dec(gv);
break;
case SAVEt_FREESV: