This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
S_padhv_rv2hv_common(): reorganise code
authorDavid Mitchell <davem@iabyn.com>
Wed, 19 Jul 2017 16:48:03 +0000 (17:48 +0100)
committerDavid Mitchell <davem@iabyn.com>
Thu, 27 Jul 2017 10:30:24 +0000 (11:30 +0100)
commite80717e766f2b07e86266e546391d45f27bd6fb3
tree9a16688c67b80b8aa318de48162d87a6727b71a5
parente1ad5d4c666831a6890bdfd5b332e1bf64677f89
S_padhv_rv2hv_common(): reorganise code

There are three main booleans in play here:

    * whether the hash is tied;
    * whether we're in boolean context;
    * whether we're implementing 'keys %h'

Reorganise the if-tree logic for these up to 8 permutations to make the
code simpler. In particular, make it so that all these are done in only
one place:

    * call HvUSEDKEYS();
    * call magic_scalarpack();
    * push an integer return value, either as TARG or mortal

The functionality should be unchanged, except that now 'scalar(%h)',
where %h isn't tied, will return an integer value using the targ if
available rather than always creating a new mortal.
pp_hot.c