diff options
author | Vishal Bhatia <vishal@deja.com> | 1999-01-17 17:32:31 -0800 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-01-21 11:40:35 +0000 |
commit | e0c90f07381288b70a424e2e76ab453c6c64c0e1 (patch) | |
tree | b21dbcb396b6f03c2f7e8cdd44a10d37148d2dd3 /ext | |
parent | 9d645a59ed905dd3060090ae212684db91655931 (diff) | |
download | perl-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.pm | 9 |
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; } |