diff options
author | Gerard Goossen <gerard@ggoossen.net> | 2011-01-17 22:12:53 +0100 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-07-11 13:13:55 -0700 |
commit | bbd913065e380df5bdf59cf693e631193415ca9b (patch) | |
tree | 164acb5a19fd84ed043bae823417f081e0cc642c | |
parent | b852bf25024c0d639055357ed278f488e26294e4 (diff) | |
download | perl-bbd913065e380df5bdf59cf693e631193415ca9b.tar.gz |
use a flag to signal a stacking filetests instead of peeking at the next op.
Preparation for the codegeneration changes where the next op isn't accessible.
-rw-r--r-- | op.c | 4 | ||||
-rw-r--r-- | op.h | 3 | ||||
-rw-r--r-- | pp_sys.c | 6 |
3 files changed, 6 insertions, 7 deletions
@@ -7342,8 +7342,10 @@ Perl_ck_ftst(pTHX_ OP *o) if ((PL_hints & HINT_FILETEST_ACCESS) && OP_IS_FILETEST_ACCESS(o->op_type)) o->op_private |= OPpFT_ACCESS; if (PL_check[kidtype] == Perl_ck_ftst - && kidtype != OP_STAT && kidtype != OP_LSTAT) + && kidtype != OP_STAT && kidtype != OP_LSTAT) { o->op_private |= OPpFT_STACKED; + kid->op_private |= OPpFT_STACKING; + } } else { #ifdef PERL_MAD @@ -284,7 +284,8 @@ Deprecated. Use C<GIMME_V> instead. /* Private for OP_FTXXX */ #define OPpFT_ACCESS 2 /* use filetest 'access' */ -#define OPpFT_STACKED 4 /* stacked filetest, as in "-f -x $f" */ +#define OPpFT_STACKED 4 /* stacked filetest, as "-f" in "-f -x $f" */ +#define OPpFT_STACKING 8 /* stacking filetest, as "-x" in "-f -x $f" */ /* Private for OP_(MAP|GREP)(WHILE|START) */ #define OPpGREP_LEX 2 /* iterate over lexical $_ */ @@ -2914,11 +2914,7 @@ S_try_amagic_ftest(pTHX_ char chr) { SPAGAIN; - next = PL_op->op_next; - if (next->op_type >= OP_FTRREAD && - next->op_type <= OP_FTBINARY && - next->op_private & OPpFT_STACKED - ) { + if (PL_op->op_private & OPpFT_STACKING) { if (SvTRUE(tmpsv)) /* leave the object alone */ return TRUE; |