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;
}
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);
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: