pp_mapstart & pp_grepstart return val (CC.pm)
Vishal Bhatia [Mon, 18 Jan 1999 01:32:31 +0000 (17:32 -0800)]
To: perl5-porters@perl.org
Message-ID: <19990118093231.18443.qmail@hotmail.com>

p4raw-id: //depot/cfgperl@2657

ext/B/B/CC.pm

index d9cf119..d8cc090 100644 (file)
@@ -1020,7 +1020,14 @@ sub pp_mapstart {
        $need_freetmps = 0;
     }
     write_back_stack();
-    doop($op);
+    # pp_mapstart can return either op_next->op_next or op_next->op_other and
+    # we need to be able to distinguish the two at runtime. 
+    my $sym= doop($op);
+    my $next=$op->next;
+    $next->save;
+    my $nexttonext=$next->next;
+    $nexttonext->save;
+    runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", label($nexttonext)));
     return $op->next->other;
 }