in maxas/MaxAs/MaxAs.pm [1282:1308]
sub countUniqueDescendants
{
my ($node, $edges) = @_;
#print "P:$node->{inst}\n";
if (my $children = $node->{children})
{
foreach my $child (grep $_->[1], @$children) # skip WaR deps and traversed edges
{
next if $edges->{"$node->{lineNum}^$child->[0]{lineNum}"}++;
$node->{deps}{$_}++ foreach countUniqueDescendants($child->[0], $edges);
}
foreach my $child (grep !$_->[1], @$children) # WaR deps
{
next if $edges->{"$node->{lineNum}^$child->[0]{lineNum}"}++;
1 foreach countUniqueDescendants($child->[0], $edges);
}
}
else
{
return $node->{lineNum};
}
return ($node->{lineNum}, keys %{$node->{deps}});
}