Rework handling of factory redirects in constant evaluation.
Rework handling of factory redirects in constant evaluation.

This change limits the set of elements that need to be examined in
order to determine the constant evaluation dependency graph.
Previously, when encountering a constant constructor invocation, we
would chase the sequence of factory redirects to a non-redirecting
constructor (being careful to avoid infinite regress in the case of
invalid input), and then mark the invocation as dependent on the
non-redirecting constructor.  Now, we mark the invocation as dependent
on the constructor it immediately references, and mark redirecting
factory constructors as dependent on the constructors they redirect
to.

This is a prerequisite to converting constant evaluation over to the
new task model, since once we're in the new task model there will be
no guarantee that the full sequence of factory redirects has been
resolved at the time we need to compute dependencies.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org//1043843003

git-svn-id: c93d8a2297af3b929165606efe145742a534bc71@44797 260f80e4-7a28-3924-810f-c04153c831b5

dart-archive/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dartino/dart-sdk