summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2022-07-05 11:39:36 +0100
committerPaul Evans <leonerd@leonerd.org.uk>2022-07-05 13:57:12 +0100
commit792bf4bab089d68ffc6344f65e675d4117390c15 (patch)
treec57c2dd382b32bf141933caac333d36e35e66a14
parentcc6fbaaa94dda35975cfd69338f19db9603392e2 (diff)
downloadperl-792bf4bab089d68ffc6344f65e675d4117390c15.tar.gz
Neaten the PADNAME flag constants
Rename the `PADNAMEt_*` constants to `PADNAMEf_*`, as they're supposed to represent bitflags, not a type enumeration. Also updated the `B` and `B::Deparse` modules to make use of the new modern names (and avoid the old `SVpad_*` flags). Also added `PADNAMEt_*` back-compat defines, guarded by `#ifndef PERL_CORE` so as not to permit their use accidentally within perl core.
-rw-r--r--ext/B/B.pm2
-rw-r--r--ext/B/B.xs2
-rw-r--r--ext/B/Makefile.PL2
-rw-r--r--lib/B/Deparse.pm26
-rw-r--r--op.c2
-rw-r--r--pad.c6
-rw-r--r--pad.h37
7 files changed, 42 insertions, 35 deletions
diff --git a/ext/B/B.pm b/ext/B/B.pm
index 6f18681292..1c0f304bf0 100644
--- a/ext/B/B.pm
+++ b/ext/B/B.pm
@@ -20,7 +20,7 @@ sub import {
# walkoptree comes from B.xs
BEGIN {
- $B::VERSION = '1.84';
+ $B::VERSION = '1.85';
@B::EXPORT_OK = ();
# Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.
diff --git a/ext/B/B.xs b/ext/B/B.xs
index 90424213a8..c317ed43f2 100644
--- a/ext/B/B.xs
+++ b/ext/B/B.xs
@@ -2351,7 +2351,7 @@ PadnameFLAGS(pn)
RETVAL = PadnameFLAGS(pn);
/* backward-compatibility hack, which should be removed if the
flags field becomes large enough to hold SVf_FAKE (and
- PADNAMEt_OUTER should be renumbered to match SVf_FAKE) */
+ PADNAMEf_OUTER should be renumbered to match SVf_FAKE) */
STATIC_ASSERT_STMT(SVf_FAKE >= 1<<(sizeof(PadnameFLAGS((B__PADNAME)NULL)) * 8));
if (PadnameOUTER(pn))
RETVAL |= SVf_FAKE;
diff --git a/ext/B/Makefile.PL b/ext/B/Makefile.PL
index 1b30ffd08f..0ff4f4e2e6 100644
--- a/ext/B/Makefile.PL
+++ b/ext/B/Makefile.PL
@@ -30,7 +30,7 @@ foreach my $tuple (['cop.h'],
['op.h'],
['opcode.h', 'OPp'],
['op_reg_common.h','(?:(?:RXf_)?PMf_)'],
- ['pad.h','PADNAMEt_'],
+ ['pad.h','PADNAMEf_'],
['regexp.h','RXf_'],
['sv.h', 'SV(?:[fps]|pad)_'],
) {
diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm
index fbd12e73b7..bb1affe81e 100644
--- a/lib/B/Deparse.pm
+++ b/lib/B/Deparse.pm
@@ -23,12 +23,12 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
OPpCONCAT_NESTED
OPpMULTICONCAT_APPEND OPpMULTICONCAT_STRINGIFY OPpMULTICONCAT_FAKE
OPpTRUEBOOL OPpINDEX_BOOLNEG OPpDEFER_FINALLY
- SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG
- SVs_PADTMP SVpad_TYPED
+ SVf_IOK SVf_NOK SVf_ROK SVf_POK SVf_FAKE SVs_RMG SVs_SMG
+ SVs_PADTMP
CVf_METHOD CVf_LVALUE
PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE
PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED PMf_EXTENDED_MORE
- PADNAMEt_OUTER
+ PADNAMEf_OUTER PADNAMEf_OUR PADNAMEf_TYPED
MDEREF_reload
MDEREF_AV_pop_rv2av_aelem
MDEREF_AV_gvsv_vivify_rv2av_aelem
@@ -449,7 +449,7 @@ sub next_todo {
my $flags = $name->FLAGS;
my $category =
!$cv || $seq <= $name->COP_SEQ_RANGE_LOW
- ? $self->keyword($flags & SVpad_OUR
+ ? $self->keyword($flags & PADNAMEf_OUR
? "our"
: $flags & SVpad_STATE
? "state"
@@ -1120,8 +1120,8 @@ sub pad_subs {
if (defined $name && $name =~ /^&./) {
my $low = $_->COP_SEQ_RANGE_LOW;
my $flags = $_->FLAGS;
- my $outer = $flags & PADNAMEt_OUTER;
- if ($flags & SVpad_OUR) {
+ my $outer = $flags & PADNAMEf_OUTER;
+ if ($flags & PADNAMEf_OUR) {
push @todo, [$low, undef, 0, $_]
# [seq, no cv, not format, padname]
unless $outer;
@@ -1134,7 +1134,7 @@ sub pad_subs {
my $flags = $flags;
my $cv = $cv;
my $name = $_;
- while ($flags & PADNAMEt_OUTER && class ($protocv) ne 'CV')
+ while ($flags & PADNAMEf_OUTER && class ($protocv) ne 'CV')
{
$cv = $cv->OUTSIDE;
next PADENTRY if class($cv) eq 'SPECIAL'; # XXX freed?
@@ -1151,7 +1151,7 @@ sub pad_subs {
my $other = $protocv->PADLIST;
$$other && $other->outid == $padlist->id;
};
- if ($flags & PADNAMEt_OUTER) {
+ if ($flags & PADNAMEf_OUTER) {
next unless $defined_in_this_sub;
push @todo, [$protocv->OUTSIDE_SEQ, $protocv, 0, $_];
next;
@@ -1560,7 +1560,7 @@ sub find_our_type {
my $seq = $self->{'curcop'} ? $self->{'curcop'}->cop_seq : 0;
for my $a (@{$self->{'curcvlex'}{"o$name"}}) {
my ($st, undef, $padname) = @$a;
- if ($st >= $seq && $padname->FLAGS & SVpad_TYPED) {
+ if ($st >= $seq && $padname->FLAGS & PADNAMEf_TYPED) {
return $padname->SvSTASH->NAME;
}
}
@@ -1646,7 +1646,7 @@ sub maybe_my {
# because enteriter ops do not carry the flag.
my $my =
$self->keyword($padname->FLAGS & SVpad_STATE ? "state" : "my");
- if ($padname->FLAGS & SVpad_TYPED) {
+ if ($padname->FLAGS & PADNAMEf_TYPED) {
$my .= ' ' . $padname->SvSTASH->NAME;
}
if ($need_parens) {
@@ -1986,7 +1986,7 @@ sub populate_curcvlex {
: ($ns[$i]->COP_SEQ_RANGE_LOW, $ns[$i]->COP_SEQ_RANGE_HIGH);
push @{$self->{'curcvlex'}{
- ($ns[$i]->FLAGS & SVpad_OUR ? 'o' : 'm') . $name
+ ($ns[$i]->FLAGS & PADNAMEf_OUR ? 'o' : 'm') . $name
}}, [$seq_st, $seq_en, $ns[$i]];
}
}
@@ -3693,7 +3693,7 @@ sub maybe_var_attr {
return unless $loppriv & OPpLVAL_INTRO;
my $padname = $self->padname_sv($lop->targ);
- my $thisclass = ($padname->FLAGS & SVpad_TYPED)
+ my $thisclass = ($padname->FLAGS & PADNAMEf_TYPED)
? $padname->SvSTASH->NAME : 'main';
# all pad vars must be in the same class
@@ -3812,7 +3812,7 @@ sub pp_list {
$local = "my";
}
my $padname = $self->padname_sv($lop->targ);
- if ($padname->FLAGS & SVpad_TYPED) {
+ if ($padname->FLAGS & PADNAMEf_TYPED) {
$newtype = $padname->SvSTASH->NAME;
}
} elsif ($lopname =~ /^(?:gv|rv2)([ash])v$/
diff --git a/op.c b/op.c
index 7db303050a..01d455a6aa 100644
--- a/op.c
+++ b/op.c
@@ -9683,7 +9683,7 @@ S_op_const_sv(pTHX_ const OP *o, CV *cv, bool allow_lex)
SAVEFREESV(sv);
}
else if (allow_lex && type == OP_PADSV) {
- if (PAD_COMPNAME_FLAGS(o->op_targ) & PADNAMEt_OUTER)
+ if (PAD_COMPNAME_FLAGS(o->op_targ) & PADNAMEf_OUTER)
{
sv = &PL_sv_undef; /* an arbitrary non-null value */
padsv = TRUE;
diff --git a/pad.c b/pad.c
index da107fe847..bc967ec1f2 100644
--- a/pad.c
+++ b/pad.c
@@ -2753,9 +2753,9 @@ Perl_newPADNAMEpvn(const char *s, STRLEN len)
Constructs and returns a new pad name. Only use this function for names
that refer to outer lexicals. (See also L</newPADNAMEpvn>.) C<outer> is
the outer pad name that this one mirrors. The returned pad name has the
-C<PADNAMEt_OUTER> flag already set.
+C<PADNAMEf_OUTER> flag already set.
-=for apidoc Amnh||PADNAMEt_OUTER
+=for apidoc Amnh||PADNAMEf_OUTER
=cut
*/
@@ -2771,7 +2771,7 @@ Perl_newPADNAMEouter(PADNAME *outer)
/* Not PadnameREFCNT(outer), because ‘outer’ may itself close over
another entry. The original pad name owns the buffer. */
PadnameREFCNT(PADNAME_FROM_PV(PadnamePV(outer)))++;
- PadnameFLAGS(pn) = PADNAMEt_OUTER;
+ PadnameFLAGS(pn) = PADNAMEf_OUTER;
PadnameLEN(pn) = PadnameLEN(outer);
return pn;
}
diff --git a/pad.h b/pad.h
index ab7ad5706f..709d0a8dfd 100644
--- a/pad.h
+++ b/pad.h
@@ -323,31 +323,38 @@ Restore the old pad saved into the local variable C<opad> by C<PAD_SAVE_LOCAL()>
#define PadnameREFCNT_dec(pn) Perl_padname_free(aTHX_ pn)
#define PadnameOURSTASH_set(pn,s) (PadnameOURSTASH(pn) = (s))
#define PadnameTYPE_set(pn,s) (PadnameTYPE(pn) = (s))
-#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEt_OUTER)
-#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEt_STATE)
-#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEt_LVALUE)
+#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEf_OUTER)
+#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEf_STATE)
+#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEf_LVALUE)
-#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_LVALUE)
-#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_STATE)
+#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE)
+#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE)
-#define PADNAMEt_OUTER 1 /* outer lexical var */
-#define PADNAMEt_STATE 2 /* state var */
-#define PADNAMEt_LVALUE 4 /* used as lvalue */
-#define PADNAMEt_TYPED 8 /* for B; unused by core */
-#define PADNAMEt_OUR 16 /* for B; unused by core */
+#define PADNAMEf_OUTER 0x01 /* outer lexical var */
+#define PADNAMEf_STATE 0x02 /* state var */
+#define PADNAMEf_LVALUE 0x04 /* used as lvalue */
+#define PADNAMEf_TYPED 0x08 /* for B; unused by core */
+#define PADNAMEf_OUR 0x10 /* for B; unused by core */
/* backward compatibility */
#define SvPAD_STATE PadnameIsSTATE
#define SvPAD_TYPED(pn) cBOOL(PadnameTYPE(pn))
#define SvPAD_OUR(pn) cBOOL(PadnameOURSTASH(pn))
#define SvPAD_STATE_on PadnameIsSTATE_on
-#define SvPAD_TYPED_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_TYPED)
-#define SvPAD_OUR_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_OUR)
+#define SvPAD_TYPED_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_TYPED)
+#define SvPAD_OUR_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_OUR)
#define SvOURSTASH PadnameOURSTASH
#define SvOURSTASH_set PadnameOURSTASH_set
-#define SVpad_STATE PADNAMEt_STATE
-#define SVpad_TYPED PADNAMEt_TYPED
-#define SVpad_OUR PADNAMEt_OUR
+#define SVpad_STATE PADNAMEf_STATE
+#define SVpad_TYPED PADNAMEf_TYPED
+#define SVpad_OUR PADNAMEf_OUR
+#ifndef PERL_CORE
+# define PADNAMEt_OUTER PADNAMEf_OUTER
+# define PADNAMEt_STATE PADNAMEf_STATE
+# define PADNAMEt_LVALUE PADNAMEf_LVALUE
+# define PADNAMEt_TYPED PADNAMEf_TYPED
+# define PADNAMEt_OUR PADNAMEf_OUR
+#endif
#ifdef DEBUGGING
# define PAD_SV(po) pad_sv(po)