summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorVishal Bhatia <vishal@deja.com>1999-01-17 17:32:31 -0800
committerJarkko Hietaniemi <jhi@iki.fi>1999-01-21 11:40:35 +0000
commite0c90f07381288b70a424e2e76ab453c6c64c0e1 (patch)
treeb21dbcb396b6f03c2f7e8cdd44a10d37148d2dd3 /ext
parent9d645a59ed905dd3060090ae212684db91655931 (diff)
downloadperl-e0c90f07381288b70a424e2e76ab453c6c64c0e1.tar.gz
pp_mapstart & pp_grepstart return val (CC.pm)
To: perl5-porters@perl.org Message-ID: <19990118093231.18443.qmail@hotmail.com> p4raw-id: //depot/cfgperl@2657
Diffstat (limited to 'ext')
-rw-r--r--ext/B/B/CC.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/B/B/CC.pm b/ext/B/B/CC.pm
index d9cf11966c..d8cc090479 100644
--- a/ext/B/B/CC.pm
+++ b/ext/B/B/CC.pm
@@ -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;
}