diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2022-12-10 15:45:10 +0000 |
---|---|---|
committer | Paul Evans <leonerd@leonerd.org.uk> | 2022-12-19 17:27:55 +0000 |
commit | abf1aa2b099b9613c2e6901d3f61eb8da735d934 (patch) | |
tree | bf21b4d273643874ea55af93ce951dd6d46f84bb /pp_proto.h | |
parent | e53949d80e5b3c49f5b33071e988970b50cf8f66 (diff) | |
download | perl-abf1aa2b099b9613c2e6901d3f61eb8da735d934.tar.gz |
Define OP_HELEMEXISTSOR, a handy LOGOP shortcut for HELEM existence tests
This op is constructed using an OP_HELEM as the op_first and any scalar
expression as the op_other.
It is roughly equivalent to the following perl code:
exists $hv{$key} ? $hv{$key} : OTHER
except that the HV and the KEY expression are evaluated only once, and
only one hv_* function is invoked to both test and obtain the value. It
is therefore smaller and more efficient.
Likewise, adding the OPpHELEMEXISTSOR_DELETE flag turns it into the
equivalent of
exists $hv{$key} ? delete $hv{$key} : OTHER
Diffstat (limited to 'pp_proto.h')
-rw-r--r-- | pp_proto.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/pp_proto.h b/pp_proto.h index 7963abb885..66f4a420c9 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -116,6 +116,7 @@ PERL_CALLCONV OP *Perl_pp_gt(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_gv(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_gvsv(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_helem(pTHX) __attribute__visibility__("hidden"); +PERL_CALLCONV OP *Perl_pp_helemexistsor(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_hintseval(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_hslice(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_i_add(pTHX) __attribute__visibility__("hidden"); |