This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Eliminate opASSIGN macro usage from core
authorDavid Mitchell <davem@iabyn.com>
Mon, 4 Feb 2019 13:48:13 +0000 (13:48 +0000)
committerDavid Mitchell <davem@iabyn.com>
Tue, 5 Feb 2019 14:03:05 +0000 (14:03 +0000)
commit72876cce4ecc7d8756e00d284e32df0b943d0da9
treeeb2fbf4d5389c41ab464221a1089a9eb00429389
parent35c1827fadfaf0a26b8d1373f06ee242ee79c111
Eliminate opASSIGN macro usage from core

This macro is defined as

    (PL_op->op_flags & OPf_STACKED)

and indicates, for ops which support it, that the mutator-variant of the
op is present (e.g. $x += 1).

This macro was mainly used as an arg for the old-style overloading
macros (tryAMAGICbin()) which were eliminated several years ago.

This commit removes its vestigial usage, and instead tests OPf_STACKED
directly at each location, along with adding a comment about the
significance of the flag.

This removes one item of obfuscation from the overloading code.

There is one potentially functional change in this commit:
Perl_try_amagic_bin() was sometimes testing for OPf_STACKED without
first checking that it had been called with the AMGf_assign flag (which
indicates that this op supports a mutator variant). With this commit, it
now checks first, so this is theoretically a bug fix. In practice that
section of code was never reached without AMGf_assign always being set
anyway.
gv.c
op.h
pod/perlhacktips.pod
pod/perlinterp.pod
pp.h