--- Faster/Faster.pm 2006/03/10 01:51:14 1.8 +++ Faster/Faster.pm 2006/03/10 01:55:12 1.9 @@ -144,9 +144,8 @@ : "Perl_pp_$op_name (aTHX)" } -sub out_next { +sub out_gotonext { if (${$op->next}) { - $source .= " nextop = (OP *)${$op->next}L;\n"; $source .= " assert ((\"$op_name\", nextop == (OP *)${$op->next}));\n"; $source .= " goto op_${$op->next};\n"; } else { @@ -154,6 +153,12 @@ } } +sub out_next { + $source .= " nextop = (OP *)${$op->next}L;\n"; + + out_gotonext; +} + sub out_linear { $source .= " assert ((\"$op_name\", nextop == (OP *)$$op));\n";#d# $source .= " PL_op = nextop; nextop = " . (callop $op) . ";\n"; @@ -167,7 +172,7 @@ EOF } - out_next; + out_gotonext; } sub op_nextstate { @@ -416,7 +421,7 @@ $can->($op); } elsif (exists $flag{unsafe}{$op_name}) { $source .= " assert ((\"$op_name\", nextop == (OP *)$$op));\n"; - $source .= " PL_op = nextop; return " . (callop $op) . ";\n"; + $source .= " return nextop;\n"; } elsif ("LOGOP" eq B::class $op or exists $flag{otherop}{$op_name}) { $source .= " assert ((\"$op_name\", nextop == (OP *)$$op));\n"; $source .= " PL_op = nextop; nextop = " . (callop $op) . ";\n";