Unroll 27425 - keeping Larry's order in op.c means that exactly the
Nicholas Clark [Thu, 9 Mar 2006 12:01:36 +0000 (12:01 +0000)]
same sequence of pad usage is generated with and without MAD.

p4raw-id: //depot/perl@27433

ext/B/t/f_map.t
op.c

index 243058c..8e614a6 100644 (file)
@@ -57,32 +57,32 @@ checkOptree(note   => q{},
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <#> gv[*nums] s
-# 5  <1> rv2av[t6] lKM/1
+# 5  <1> rv2av[t7] lKM/1
 # 6  <@> mapstart lK
-# 7  <|> mapwhile(other->8)[t7] lK
+# 7  <|> mapwhile(other->8)[t8] lK
 # 8      <#> gvsv[*_] s
 # 9      <1> chr[t5] sK/1
 #            goto 7
 # a  <0> pushmark s
 # b  <#> gv[*chars] s
 # c  <1> rv2av[t2] lKRM*/1
-# d  <2> aassign[t8] KS/COMMON
+# d  <2> aassign[t9] KS/COMMON
 # e  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
 # 1  <;> nextstate(main 559 (eval 15):1) v
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <$> gv(*nums) s
-# 5  <1> rv2av[t2] lKM/1
+# 5  <1> rv2av[t4] lKM/1
 # 6  <@> mapstart lK
-# 7  <|> mapwhile(other->8)[t4] lK
+# 7  <|> mapwhile(other->8)[t5] lK
 # 8      <$> gvsv(*_) s
 # 9      <1> chr[t3] sK/1
 #            goto 7
 # a  <0> pushmark s
 # b  <$> gv(*chars) s
 # c  <1> rv2av[t1] lKRM*/1
-# d  <2> aassign[t5] KS/COMMON
+# d  <2> aassign[t6] KS/COMMON
 # e  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT
 
diff --git a/op.c b/op.c
index a2f4bf9..92dc88a 100644 (file)
--- a/op.c
+++ b/op.c
@@ -6365,13 +6365,15 @@ Perl_ck_fun(pTHX_ OP *o)
        listkids(o);
     }
     else if (PL_opargs[type] & OA_DEFGV) {
-       OP *newop = newUNOP(type, 0, newDEFSVOP());
 #ifdef PERL_MAD
+       OP *newop = newUNOP(type, 0, newDEFSVOP());
        op_getmad(o,newop,'O');
+       return newop;
 #else
+       /* Ordering of these two is important to keep f_map.t passing.  */
        op_free(o);
+       return newUNOP(type, 0, newDEFSVOP());
 #endif
-       return newop;
     }
 
     if (oa) {