diff options
author | Nicholas Clark <nick@ccl4.org> | 2011-04-24 16:37:17 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2011-06-12 11:25:48 +0200 |
commit | 93bad3fd55489cbd2d3157da1fcb3b524e960dd2 (patch) | |
tree | 295d059c38869a4b8ca10c2b9b6a8479748e1ffd /opnames.h | |
parent | 464a08e7ffded0873dfb1539fceae173c22a1090 (diff) | |
download | perl-93bad3fd55489cbd2d3157da1fcb3b524e960dd2.tar.gz |
Split OP_AELEMFAST_LEX out from OP_AELEMFAST.
6a077020aea1c5f0 extended the OP_AELEMFAST optimisation to lexical arrays.
Previously OP_AELEMFAST was only used as an optimisation for OP_GV, which is a
PADOP/SVOP.
However, by reusing the same opcode, and signalling (pad) lexical vs package,
it introduced a myriad of special cases, because OP_PADAV is a BASEOP (not a
PADOP), whilst OP_AELEMFAST is a PADOP/SVOP (which is larger).
Using two OP numbers allows each variant to have the correct OP flags in
PL_opargs. Both can continue to share the same C code.
Diffstat (limited to 'opnames.h')
-rw-r--r-- | opnames.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -384,10 +384,11 @@ typedef enum opcode { OP_RKEYS = 367, OP_RVALUES = 368, OP_TRANSR = 369, + OP_AELEMFAST_LEX = 370, OP_max } opcode; -#define MAXO 370 +#define MAXO 371 /* the OP_IS_(SOCKET|FILETEST) macros are optimized to a simple range check because all the member OPs are contiguous in opcode.pl |