Skip to content

Commit

Permalink
Make passes dependency-aware.
Browse files Browse the repository at this point in the history
  • Loading branch information
tcurtis committed Aug 6, 2010
1 parent fd9186d commit 826af57
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
13 changes: 2 additions & 11 deletions src/Tree/Optimizer.nqp
Expand Up @@ -35,17 +35,8 @@ method find-pass ($name) {
method register ($transformation, *%adverbs) {
my $pass := Tree::Optimizer::Pass.new($transformation, |%adverbs);
%!passes{$pass.name} := $pass;
my $depends-on := %adverbs<depends-on>;
if $depends-on {
my @dependencies;
if pir::isa__IPP($depends-on, String) {
@dependencies := pir::split__PSS(' ', $depends-on);
} else {
@dependencies := $depends-on;
}
for @dependencies -> $dependency {
self.add-dependency($pass.name, $dependency);
}
for $pass.dependencies -> $dependency {
self.add-dependency($pass.name, $dependency);
}
}

Expand Down
12 changes: 11 additions & 1 deletion src/Tree/Optimizer/Pass.nqp
@@ -1,10 +1,14 @@
class Tree::Optimizer::Pass;

has @!dependencies;
has $!name;
has $!recursive;
has $!transformation;
has $!when;

our multi method dependencies () { @!dependencies; }
our multi method dependencies (@deps) { @!dependencies := @deps; }

our multi method name () { $!name; }
our multi method name ($name) { $!name := $name; }

Expand All @@ -29,11 +33,17 @@ my $current-gen-name := 0;
sub gen-name () {
'__unnamed_' ~ $current-gen-name++;
}
method BUILD (:$transformation, :$name, :$recursive, :$when, *%ignored) {
method BUILD (:$transformation, :$name, :$recursive, :$when, *%rest) {
$!name := $name || gen-name();
$!recursive := $recursive || 0;
$!transformation := $transformation;
$!when := $when;
my $depends-on := %rest<depends-on>;
if $depends-on {
@!dependencies := (pir::isa__IPP($depends-on, String)
?? [ $depends-on ]
!! $depends-on);
}
}

method run ($tree) {
Expand Down

0 comments on commit 826af57

Please sign in to comment.