cvs commit: ponie/perl scope.c
[email protected] (Nicholas Clark) 16 Oct 2004 13:17:34 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/10/16 06:17:34
Modified: perl scope.c
Log:
scope.c now uses PMCs macros instead of LVALUE access to SvFLAGS()
Revision Changes Path
1.8 +21 -16 ponie/perl/scope.c
Index: scope.c
===================================================================
RCS file: /cvs/public/ponie/perl/scope.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -w -r1.7 -r1.8
--- scope.c 16 Oct 2004 10:27:59 -0000 1.7
+++ scope.c 16 Oct 2004 13:17:34 -0000 1.8
@@ -222,8 +222,7 @@
SAVESPTR(mg->mg_obj);
mg->mg_obj = osv;
}
- SvFLAGS(osv) |= (SvFLAGS(osv) &
- (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+ SV_PRIVSHIFT(osv);
PL_tainted = oldtainted;
}
SvMAGIC(sv) = SvMAGIC(osv);
@@ -233,11 +232,12 @@
if (mg->mg_type == '\0'
|| !(mg->mg_virtual && mg->mg_virtual->svt_set))
{
- SvFLAGS(sv) |= SvREADONLY(osv);
+ if (SvREADONLY(osv))
+ SvREADONLY_on(sv);
break;
}
}
- SvFLAGS(sv) |= SvMAGICAL(osv);
+ SvMAGICAL_set(sv,SvMAGICAL(osv));
/* XXX SvMAGIC() is *shared* between osv and sv. This can
* lead to coredumps when both SVs are destroyed without one
* of their SvMAGIC() slots being NULLed. */
@@ -379,7 +379,7 @@
av = GvAVn(gv);
if (SvMAGIC(oav)) {
SvMAGIC(av) = SvMAGIC(oav);
- SvFLAGS((SV*)av) |= SvMAGICAL(oav);
+ SvMAGICAL_set((SV*)av,SvMAGICAL(oav));
SvMAGICAL_off(oav);
SvMAGIC(oav) = 0;
PL_localizing = 1;
@@ -403,7 +403,7 @@
hv = GvHVn(gv);
if (SvMAGIC(ohv)) {
SvMAGIC(hv) = SvMAGIC(ohv);
- SvFLAGS((SV*)hv) |= SvMAGICAL(ohv);
+ SvMAGICAL_set((SV*)hv,SvMAGICAL(ohv));
SvMAGICAL_off(ohv);
SvMAGIC(ohv) = 0;
PL_localizing = 1;
@@ -786,7 +786,7 @@
{
(void)SvUPGRADE(value, SvTYPE(sv));
SvMAGIC(value) = SvMAGIC(sv);
- SvFLAGS(value) |= SvMAGICAL(sv);
+ SvMAGICAL_set(value,SvMAGICAL(sv));
SvMAGICAL_off(sv);
SvMAGIC(sv) = 0;
}
@@ -798,8 +798,7 @@
else if (SvTYPE(value) >= SVt_PVMG && SvMAGIC(value) &&
SvTYPE(value) != SVt_PVGV)
{
- SvFLAGS(value) |= (SvFLAGS(value) &
- (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+ SV_PRIVSHIFT(value);
SvMAGICAL_off(value);
/* XXX this is a leak when we get here because the
* mg_get() in save_scalar_at() croaked */
@@ -820,7 +819,7 @@
if (GvAV(gv)) {
AV *goner = GvAV(gv);
SvMAGIC(av) = SvMAGIC(goner);
- SvFLAGS((SV*)av) |= SvMAGICAL(goner);
+ SvMAGICAL_set((SV*)av, SvMAGICAL(goner));
SvMAGICAL_off(goner);
SvMAGIC(goner) = 0;
SvREFCNT_dec(goner);
@@ -838,7 +837,7 @@
if (GvHV(gv)) {
HV *goner = GvHV(gv);
SvMAGIC(hv) = SvMAGIC(goner);
- SvFLAGS(hv) |= SvMAGICAL(goner);
+ SvMAGICAL_set(hv, SvMAGICAL(goner));
SvMAGICAL_off(goner);
SvMAGIC(goner) = 0;
SvREFCNT_dec(goner);
@@ -981,7 +980,8 @@
SvPADSTALE_on(sv); /* mark as no longer live */
}
else { /* Someone has a claim on this, so abandon it. */
- U32 padflags = SvFLAGS(sv) & (SVs_PADMY|SVs_PADTMP);
+ U32 pad_my = SvPADMY(sv);
+ U32 pad_tmp = SvPADTMP(sv);
switch (SvTYPE(sv)) { /* Console ourselves with a new value */
case SVt_PVAV: *(SV**)ptr = (SV*)newAV(); break;
case SVt_PVHV: *(SV**)ptr = (SV*)newHV(); break;
@@ -990,7 +990,11 @@
SvREFCNT_dec(sv); /* Cast current value to the winds. */
/* preserve pad nature, but also mark as not live
* for any closure capturing */
- SvFLAGS(*(SV**)ptr) |= padflags | SVs_PADSTALE;
+ if (pad_my)
+ SvPADMY_on(*(SV**)ptr);
+ if (pad_tmp)
+ SvPADTMP_on(*(SV**)ptr);
+ SvPADSTALE_on(*(SV**)ptr);
}
break;
case SAVEt_DELETE:
@@ -1087,13 +1091,14 @@
{
U32 val = (U32)SSPOPINT;
U32 mask = (U32)SSPOPINT;
+ sv = (SV*)SSPOPPTR;
+
Perl_croak(aTHX_
"panic: restore saved svflags val=%08X mask=%08X",
val, mask);
- sv = (SV*)SSPOPPTR;
- SvFLAGS(sv) &= ~mask;
- SvFLAGS(sv) |= val;
+ /*SvFLAGS(sv) &= ~mask;
+ SvFLAGS(sv) |= val;*/
}
case SAVEt_SET_PADSTALE:
{