diff options
author | Richard Leach <richardleach@users.noreply.github.com> | 2022-08-06 21:55:28 +0000 |
---|---|---|
committer | Richard Leach <richardleach@users.noreply.github.com> | 2022-09-07 20:27:27 +0100 |
commit | aafefcb90183e1d6ef62d9e1ccc1fae7fcdf9c8e (patch) | |
tree | b870aefc05d58e8daabe190802e82f35047d32c7 /pp_proto.h | |
parent | ec18fac0008c98267fc560f7023d1d11703ed66d (diff) | |
download | perl-aafefcb90183e1d6ef62d9e1ccc1fae7fcdf9c8e.tar.gz |
OP_AELEMFASTLEX_STORE - combined sassign/aelemfast_lex
This commit introduces a new OP to replace simple cases of OP_SASSIGN
and OP_AELEMFAST_LEX. (Similar concept to GH #19943)
For example, `my @ary; $ary[0] = "boo"` is currently implemented as:
7 <2> sassign vKS/2 ->8
5 <$> const[PV "boo"] s ->6
- <1> ex-aelem sKRM*/2 ->7
6 <0> aelemfast_lex[@ary:1,2] sRM ->7
- <0> ex-const s ->-
But now will be turned into:
6 <1> aelemfastlex_store[@ary:1,2] vKS ->7
5 <$> const(PV "boo") s ->6
- <1> ex-aelem sKRM*/2 ->6
- <0> ex-aelemfast_lex sRM ->6
- <0> ex-const s ->-
This is intended to be a transparent performance optimization.
It should be applicable for RHS optrees of varying complexity.
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 c89828a56b..759545152a 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -12,6 +12,7 @@ PERL_CALLCONV OP *Perl_pp_add(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_aeach(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_aelem(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_aelemfast(pTHX) __attribute__visibility__("hidden"); +PERL_CALLCONV OP *Perl_pp_aelemfastlex_store(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_akeys(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_alarm(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_and(pTHX) __attribute__visibility__("hidden"); |