ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Faster/Faster.pm
(Generate patch)

Comparing Faster/Faster.pm (file contents):
Revision 1.22 by root, Fri Mar 10 22:41:47 2006 UTC vs.
Revision 1.23 by root, Fri Mar 10 22:45:18 2006 UTC

442 442
443 while (@ops) { 443 while (@ops) {
444 $op = shift @ops; 444 $op = shift @ops;
445 $op_name = $op->name; 445 $op_name = $op->name;
446 446
447 my $class = B::class $op;
448
447 $source .= "op_$$op: /* $op_name */\n"; 449 $source .= "op_$$op: /* $op_name */\n";
448 #$source .= "fprintf (stderr, \"$$op in op $op_name\\n\");\n";#d# 450 #$source .= "fprintf (stderr, \"$$op in op $op_name\\n\");\n";#d#
449 #$source .= "{ dSP; sv_dump (TOPs); }\n";#d# 451 #$source .= "{ dSP; sv_dump (TOPs); }\n";#d#
450 452
451 $source .= " PERL_ASYNC_CHECK ();\n" 453 $source .= " PERL_ASYNC_CHECK ();\n"
458 } elsif (exists $f_unsafe{$op_name}) { 460 } elsif (exists $f_unsafe{$op_name}) {
459 # unsafe, return to interpreter 461 # unsafe, return to interpreter
460 assert "nextop == (OP *)$$op"; 462 assert "nextop == (OP *)$$op";
461 $source .= " return nextop;\n"; 463 $source .= " return nextop;\n";
462 464
463 } elsif ("LOGOP" eq B::class $op) { 465 } elsif ("LOGOP" eq $class) {
464 # logical operation with optionaรถ branch 466 # logical operation with optional branch
465 out_callop; 467 out_callop;
466 out_cond_jump $op->other; 468 out_cond_jump $op->other;
467 out_jump_next; 469 out_jump_next;
468 470
469 } elsif ("PMOP" eq B::class $op) { 471 } elsif ("PMOP" eq $class) {
470 # regex-thingy 472 # regex-thingy
471 out_callop; 473 out_callop;
472 out_cond_jump $op->pmreplroot if ${$op->pmreplroot}; 474 out_cond_jump $op->pmreplroot if $op_name ne "pushre" && ${$op->pmreplroot};
473 out_jump_next; 475 out_jump_next;
474 476
475 } else { 477 } else {
476 # normal operator, linear execution 478 # normal operator, linear execution
477 out_linear; 479 out_linear;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines