summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-10-23 19:33:50 -0700
committerFather Chrysostomos <sprout@cpan.org>2013-10-23 19:33:50 -0700
commit4c3ed7418bcf4eae5235fb7bcae842820725bea8 (patch)
tree3edb2ddaa777c11e2051622e23ae2f1af124553e
parent4695d03e5e2b9bb1edfe4c43b8cc20d634c8e372 (diff)
downloadperl-4c3ed7418bcf4eae5235fb7bcae842820725bea8.tar.gz
Add OPpLVALUE flag
This flag will be used by the next commit.
-rw-r--r--dump.c7
-rw-r--r--ext/B/B/Concise.pm1
-rw-r--r--op.h3
3 files changed, 10 insertions, 1 deletions
diff --git a/dump.c b/dump.c
index 02025222ad..78e9aa93ab 100644
--- a/dump.c
+++ b/dump.c
@@ -774,6 +774,11 @@ const struct flag_to_name op_sassign_names[] = {
{OPpASSIGN_CV_TO_GV, ",CV2GV"}
};
+const struct flag_to_name op_leave_names[] = {
+ {OPpREFCOUNTED, ",REFCOUNTED"},
+ {OPpLVALUE, ",LVALUE"}
+};
+
#define OP_PRIVATE_ONCE(op, flag, name) \
const struct flag_to_name CAT2(op, _names)[] = { \
{(flag), (name)} \
@@ -799,7 +804,7 @@ struct op_private_by_op {
const struct op_private_by_op op_private_names[] = {
{OP_LEAVESUB, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
- {OP_LEAVE, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
+ {OP_LEAVE, C_ARRAY_LENGTH(op_leave_names), op_leave_names },
{OP_LEAVESUBLV, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
{OP_LEAVEWRITE, C_ARRAY_LENGTH(op_leavesub_names), op_leavesub_names },
{OP_DIE, C_ARRAY_LENGTH(op_die_names), op_die_names },
diff --git a/ext/B/B/Concise.pm b/ext/B/B/Concise.pm
index dedae5abf9..6bb983de6e 100644
--- a/ext/B/B/Concise.pm
+++ b/ext/B/B/Concise.pm
@@ -598,6 +598,7 @@ $priv{$_}{128} = "LVINTRO"
aelem helem aslice hslice padsv padav padhv enteriter entersub
padrange pushmark);
$priv{$_}{64} = "REFC" for qw(leave leavesub leavesublv leavewrite);
+$priv{leave}{128} = "LV";
@{$priv{aassign}}{32,64} = qw(STATE COMMON);
@{$priv{sassign}}{32,64,128} = qw(STATE BKWARD CV2GV);
$priv{$_}{64} = "RTIME" for qw(match subst substcont qr);
diff --git a/op.h b/op.h
index 5d291992c1..3670cafa92 100644
--- a/op.h
+++ b/op.h
@@ -172,6 +172,9 @@ Deprecated. Use C<GIMME_V> instead.
/* Private for OP_LEAVE, OP_LEAVESUB, OP_LEAVESUBLV and OP_LEAVEWRITE */
#define OPpREFCOUNTED 64 /* op_targ carries a refcount */
+/* Private for OP_LEAVE only */
+#define OPpLVALUE 128 /* Do not copy return value */
+
/* Private for OP_AASSIGN */
#define OPpASSIGN_COMMON 64 /* Left & right have syms in common. */