This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In pp_send, assign to io earlier, and use op_type instead of PL_op->op_type.
authorNicholas Clark <nick@ccl4.org>
Sat, 8 Jan 2011 15:38:16 +0000 (15:38 +0000)
committerNicholas Clark <nick@ccl4.org>
Sat, 8 Jan 2011 19:54:18 +0000 (19:54 +0000)
On this platform, this doesn't change the size of the object code, suggesting
that there are all transformations that the optimiser had already spotted.
However, the code is now clearer for humans.

pp_sys.c

index f8370f7..d8b3176 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1824,7 +1824,6 @@ PP(pp_sysread)
 PP(pp_send)
 {
     dVAR; dSP; dMARK; dORIGMARK; dTARGET;
-    IO *io;
     SV *bufsv;
     const char *buffer;
     SSize_t retval;
@@ -1833,10 +1832,10 @@ PP(pp_send)
     const int op_type = PL_op->op_type;
     bool doing_utf8;
     U8 *tmpbuf = NULL;
-    
     GV *const gv = MUTABLE_GV(*++MARK);
-    if (PL_op->op_type == OP_SYSWRITE
-       && gv && (io = GvIO(gv))) {
+    IO *const io = GvIO(gv);
+
+    if (op_type == OP_SYSWRITE && io) {
        const MAGIC * const mg = SvTIED_mg((const SV *)io, PERL_MAGIC_tiedscalar);
        if (mg) {
            if (MARK == SP - 1) {
@@ -1856,7 +1855,6 @@ PP(pp_send)
     bufsv = *++MARK;
 
     SETERRNO(0,0);
-    io = GvIO(gv);
     if (!io || !IoIFP(io) || IoTYPE(io) == IoTYPE_RDONLY) {
        retval = -1;
        if (io && IoIFP(io))