summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-11-08 12:45:13 -0800
committerFather Chrysostomos <sprout@cpan.org>2014-11-08 16:06:43 -0800
commit26812b4a900f5f8ec634ef9bb566822cb2b43975 (patch)
treeb14cb5a9c04b3a6cd2ae2334b85f8d9c5a71babe
parentb31e13ff8bcc3b886cde8ce66380fc1032eaf4f9 (diff)
downloadperl-26812b4a900f5f8ec634ef9bb566822cb2b43975.tar.gz
Remove OA_DANGEROUS from exit
OA_DANGEROUS indicates that temporary copies may need to be made in list assignment, to handle things like: ($a, $b) = ($b, $a); In other words, an op type is flagged with OA_DANGEROUS if its return values could occur elsewhere on the stack. exit usually doesn’t return. When it fails, it returns a read-only undef, so we don’t need temp copies for its sake.
-rw-r--r--opcode.h2
-rw-r--r--regen/opcodes2
2 files changed, 2 insertions, 2 deletions
diff --git a/opcode.h b/opcode.h
index c038d66200..a3af56c712 100644
--- a/opcode.h
+++ b/opcode.h
@@ -1940,7 +1940,7 @@ EXTCONST U32 PL_opargs[] = {
0x00000d04, /* redo */
0x00000d44, /* dump */
0x00000d04, /* goto */
- 0x00009b44, /* exit */
+ 0x00009b04, /* exit */
0x00000e40, /* method_named */
0x00000340, /* entergiven */
0x00000100, /* leavegiven */
diff --git a/regen/opcodes b/regen/opcodes
index 7c02e925c2..7105c7f6eb 100644
--- a/regen/opcodes
+++ b/regen/opcodes
@@ -306,7 +306,7 @@ next next ck_null s}
redo redo ck_null s}
dump dump ck_null ds}
goto goto ck_null s}
-exit exit ck_fun ds% S?
+exit exit ck_fun s% S?
method_named method with known name ck_null d.
entergiven given() ck_null d|