SV**
Perl_stack_grow(pTHX_ SV **sp, SV **p, int n)
{
-#if defined(DEBUGGING) && !defined(USE_THREADS)
+#if defined(DEBUGGING) && !defined(USE_5005THREADS)
static int growing = 0;
if (growing++)
abort();
#else
av_extend(PL_curstack, (p - PL_stack_base) + (n) + 1);
#endif
-#if defined(DEBUGGING) && !defined(USE_THREADS)
+#if defined(DEBUGGING) && !defined(USE_5005THREADS)
growing--;
#endif
return PL_stack_sp;
MAGIC* mg;
bool oldtainted = PL_tainted;
mg_get(osv); /* note, can croak! */
- if (PL_tainting && PL_tainted && (mg = mg_find(osv, 't'))) {
+ if (PL_tainting && PL_tainted &&
+ (mg = mg_find(osv, PERL_MAGIC_taint))) {
SAVESPTR(mg->mg_obj);
mg->mg_obj = osv;
}
SvFLAGS(osv) |= (SvFLAGS(osv) &
- (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+ (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
PL_tainted = oldtainted;
}
SvMAGIC(sv) = SvMAGIC(osv);
SV **
Perl_save_threadsv(pTHX_ PADOFFSET i)
{
-#ifdef USE_THREADS
+#ifdef USE_5005THREADS
SV **svp = &THREADSV(i); /* XXX Change to save by offset */
DEBUG_S(PerlIO_printf(Perl_debug_log, "save_threadsv %"UVuf": %p %p:%s\n",
(UV)i, svp, *svp, SvPEEK(*svp)));
#else
Perl_croak(aTHX_ "panic: save_threadsv called in non-threaded perl");
return 0;
-#endif /* USE_THREADS */
+#endif /* USE_5005THREADS */
}
void
}
void
+Perl_save_mortalizesv(pTHX_ SV *sv)
+{
+ SSCHECK(2);
+ SSPUSHPTR(sv);
+ SSPUSHINT(SAVEt_MORTALIZESV);
+}
+
+void
Perl_save_freeop(pTHX_ OP *o)
{
SSCHECK(2);
SvTYPE(value) != SVt_PVGV)
{
SvFLAGS(value) |= (SvFLAGS(value) &
- (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+ (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
SvMAGICAL_off(value);
/* XXX this is a leak when we get here because the
* mg_get() in save_scalar_at() croaked */
ptr = SSPOPPTR;
SvREFCNT_dec((SV*)ptr);
break;
+ case SAVEt_MORTALIZESV:
+ ptr = SSPOPPTR;
+ sv_2mortal((SV*)ptr);
+ break;
case SAVEt_FREEOP:
ptr = SSPOPPTR;
if (PL_comppad)
break;
case SAVEt_DESTRUCTOR_X:
ptr = SSPOPPTR;
- (*SSPOPDXPTR)(aTHXo_ ptr);
+ (*SSPOPDXPTR)(aTHX_ ptr);
break;
case SAVEt_REGCONTEXT:
case SAVEt_ALLOC:
if (ptr) {
sv = *(SV**)ptr;
if (sv && sv != &PL_sv_undef) {
- if (SvTIED_mg((SV*)av, 'P'))
+ if (SvTIED_mg((SV*)av, PERL_MAGIC_tied))
(void)SvREFCNT_inc(sv);
SvREFCNT_dec(av);
goto restore_sv;
SV *oval = HeVAL((HE*)ptr);
if (oval && oval != &PL_sv_undef) {
ptr = &HeVAL((HE*)ptr);
- if (SvTIED_mg((SV*)hv, 'P'))
+ if (SvTIED_mg((SV*)hv, PERL_MAGIC_tied))
(void)SvREFCNT_inc(*(SV**)ptr);
SvREFCNT_dec(hv);
SvREFCNT_dec(sv);