diff options
author | Richard Leach <richardleach@users.noreply.github.com> | 2022-07-08 14:52:19 +0000 |
---|---|---|
committer | Richard Leach <richardleach@users.noreply.github.com> | 2022-08-17 11:19:10 +0100 |
commit | 9fdd7fc4796d89d16dceea42f2af91e4fde296ed (patch) | |
tree | 9f113c432769e4dd1e8628fe2500059a588cce52 /pp_proto.h | |
parent | 434ccf36bb90d7dfe527c3ecd775983821669b4a (diff) | |
download | perl-9fdd7fc4796d89d16dceea42f2af91e4fde296ed.tar.gz |
Implement OP_PADSV_STORE - combined sassign/padsv OP
This commit introduces a new OP to replace simple cases
of OP_SASSIGN and OP_PADSV.
For example, 'my $x = 1' is currently implemented as:
1 <;> nextstate(main 1 -e:1) v:{
2 <$> const(IV 1) s
3 <0> padsv[$x:1,2] sRM*/LVINTRO
4 <2> sassign vKS/2
But now will be turned into:
1 <;> nextstate(main 1 -e:1) v:{
2 <$> const(IV 1) s
3 <1> padsv_store[$x:1,2] vKMS/LVINTRO
This 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 83516cdf66..c89828a56b 100644 --- a/pp_proto.h +++ b/pp_proto.h @@ -199,6 +199,7 @@ PERL_CALLCONV OP *Perl_pp_padcv(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_padhv(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_padrange(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_padsv(pTHX) __attribute__visibility__("hidden"); +PERL_CALLCONV OP *Perl_pp_padsv_store(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_pipe_op(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_poptry(pTHX) __attribute__visibility__("hidden"); PERL_CALLCONV OP *Perl_pp_pos(pTHX) __attribute__visibility__("hidden"); |