Author: fperrad
Date: Fri Aug 8 01:11:41 2008
New Revision: 30126
Modified:
trunk/languages/lua/src/yapp/Lua/build.pm
Log:
[Lua] Perl/yapp compiler
- fix fornum (see r30004-30005)
Modified: trunk/languages/lua/src/yapp/Lua/build.pm
==============================================================================
--- trunk/languages/lua/src/yapp/Lua/build.pm (original)
+++ trunk/languages/lua/src/yapp/Lua/build.pm Fri Aug 8 01:11:41 2008
@@ -896,8 +896,10 @@
push @opcodes, @{ $e_start->[1] };
push @opcodes, @{ $e_limit->[1] };
push @opcodes, @{ $e_step->[1] };
- my $_var = $var->[0];
+ my $_loc_v = $var->[0];
push @opcodes, @{ $var->[1] };
+ my $_var = new_tmp( $parser, 'pmc', 'number' );
+ push @opcodes, new LocalDir( $parser, 'result' => $_var, );
my $_limit = new_tmp( $parser, 'pmc', 'number' );
push @opcodes, new LocalDir( $parser, 'result' => $_limit, );
my $_step = new_tmp( $parser, 'pmc', 'number' );
@@ -940,7 +942,11 @@
'result' => $lbl_end,
);
push @opcodes, new LabelOp( $parser, 'arg1' => $lbl_blk, );
-
+ push @opcodes, new CloneOp(
+ $parser,
+ 'arg1' => $_var,
+ 'result' => $_loc_v,
+ );
foreach my $op ( @{$block} ) {
if ( $op and $op->isa('BranchOp') ) {
if ( $op->{result} eq 'break' ) {