| Index: sdk/lib/_internal/compiler/implementation/ssa/optimize.dart
|
| ===================================================================
|
| --- sdk/lib/_internal/compiler/implementation/ssa/optimize.dart (revision 22031)
|
| +++ sdk/lib/_internal/compiler/implementation/ssa/optimize.dart (working copy)
|
| @@ -667,8 +667,16 @@
|
| }
|
| HInstruction receiver = node.getDartReceiver(compiler);
|
| Element field = findConcreteFieldForDynamicAccess(receiver, node.selector);
|
| - if (field == null) return node;
|
| - return directFieldGet(receiver, field);
|
| + if (field != null) return directFieldGet(receiver, field);
|
| + Selector selector = node.selector;
|
| + if (node.dependsOnSomething()
|
| + && compiler.resolverWorld.onlyReachesFinalFields(selector, compiler)) {
|
| + // If we know all potential targets are final fields, or fields
|
| + // that are never assigned twice, we know this getter does not
|
| + // depend on anything.
|
| + node.clearAllDependencies();
|
| + }
|
| + return node;
|
| }
|
|
|
| HInstruction directFieldGet(HInstruction receiver, Element field) {
|
|
|