summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2014-11-08 13:03:45 -0800
committerFather Chrysostomos <sprout@cpan.org>2014-11-08 16:06:44 -0800
commitfc5ae97dc1cda30f5602828e5ee550c298f86a3f (patch)
treee8fa1ebe882cd5b5e8c28a25b2f85f0bef02b857
parente518ea42e3594500d5b65ec487d88325c27f4f87 (diff)
downloadperl-fc5ae97dc1cda30f5602828e5ee550c298f86a3f.tar.gz
enterwrite is not OA_DANGEROUS
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. ‘write’ only ever returns a read-only true or false, so temp copies are not necessary 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 561ada1d03..2f0061beb4 100644
--- a/opcode.h
+++ b/opcode.h
@@ -1963,7 +1963,7 @@ EXTCONST U32 PL_opargs[] = {
0x0000e40c, /* select */
0x0000eb0c, /* getc */
0x0917640d, /* read */
- 0x0000eb44, /* enterwrite */
+ 0x0000eb04, /* enterwrite */
0x00000100, /* leavewrite */
0x0002e405, /* prtf */
0x0002e405, /* print */
diff --git a/regen/opcodes b/regen/opcodes
index 24a4aa8af7..c541d277c3 100644
--- a/regen/opcodes
+++ b/regen/opcodes
@@ -337,7 +337,7 @@ select select ck_select st@ F?
getc getc ck_eof st% F?
read read ck_fun imst@ F R S S?
-enterwrite write ck_fun dis% F?
+enterwrite write ck_fun is% F?
leavewrite write exit ck_null 1
prtf printf ck_listiob ims@ F? L