This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add do_ncmp fn and make pp_ncmp, pp_eq etc use it
authorDavid Mitchell <davem@iabyn.com>
Wed, 22 Jun 2011 09:59:18 +0000 (10:59 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sat, 25 Jun 2011 08:28:17 +0000 (09:28 +0100)
commit33efebe6a5ab2b2152593885ee155259a5bfd3f1
tree6d1f68c083281adbc896385bd35d8dcebb4945bd
parent06c6da524f9e0eae167367edc8fe0150d69893fa
add do_ncmp fn and make pp_ncmp, pp_eq etc use it

Extract most of the body of pp_ncmp() (numeric compare) into a separate
function, do_ncmp(), then make the following ops use it:
    pp_ncmp
    pp_lt
    pp_le
    pp_eq
    pp_ne
    pp_ge
    pp_gt

This removes a lot of similar or duplicated code, most of which is
dedicated to handling the various combinations of IV verses UV verses NV
verses NaN.

The various ops first check for, and directly process, the simple and common
case of both args being SvIOK_notUV(), and pass the processing on to
do_ncmp() otherwise. Benchmarking seems to indicate (but with a lot of
noise) that the SvIOK_notUV case is slightly faster than before, and the
do_ncmp() branch slightly slower.
embed.fnc
embed.h
pp.c
pp_hot.c
proto.h