summaryrefslogtreecommitdiff
path: root/opnames.h
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2022-12-10 15:45:10 +0000
committerPaul Evans <leonerd@leonerd.org.uk>2022-12-19 17:27:55 +0000
commitabf1aa2b099b9613c2e6901d3f61eb8da735d934 (patch)
treebf21b4d273643874ea55af93ce951dd6d46f84bb /opnames.h
parente53949d80e5b3c49f5b33071e988970b50cf8f66 (diff)
downloadperl-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 'opnames.h')
-rw-r--r--opnames.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/opnames.h b/opnames.h
index b0ad0d5a37..80b6d46eff 100644
--- a/opnames.h
+++ b/opnames.h
@@ -432,10 +432,11 @@ typedef enum opcode {
OP_CEIL = 415,
OP_FLOOR = 416,
OP_IS_TAINTED = 417,
+ OP_HELEMEXISTSOR = 418,
OP_max
} opcode;
-#define MAXO 418
+#define MAXO 419
#define OP_FREED MAXO
/* the OP_IS_* macros are optimized to a simple range check because