summaryrefslogtreecommitdiff
path: root/pp_proto.h
diff options
context:
space:
mode:
authorRichard Leach <richardleach@users.noreply.github.com>2022-08-06 21:55:28 +0000
committerRichard Leach <richardleach@users.noreply.github.com>2022-09-07 20:27:27 +0100
commitaafefcb90183e1d6ef62d9e1ccc1fae7fcdf9c8e (patch)
treeb870aefc05d58e8daabe190802e82f35047d32c7 /pp_proto.h
parentec18fac0008c98267fc560f7023d1d11703ed66d (diff)
downloadperl-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.h1
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");